hadoop學習筆記——基礎知識及安裝

1.核心

HDFS??分布式文件系統

主從結構,一個namenoe和多個datanode, 分別對應獨立的物理機器

1) NameNode是主服務器,管理文件系統的命名空間和客戶端對文件的訪問操作。NameNode執行文件系統的命名空間操作,比如打開關閉重命名文件或者目錄等,它也負責數據塊到具體DataNode的映射

2)集群中的DataNode管理存儲的數據。負責處理文件系統客戶端的文件讀寫請求,并在NameNode的統一調度下進行數據塊的創建刪除和復制工作。

3)NameNode是所有HDFS元數據的管理者,用戶數據永遠不會經過NameNode

MapReduce??并行計算框架

主從結構,一個JobTracker和多個TaskTracker

1) MapReduce是由一個單獨運行在主節點上的JobTacker和運行在每個集群從節點上的TaskTracker共同組成的。JobTacker負責調度構成一個作業的所有任務,這些任務分布在不同的從節點上。總結點監控他們的執行情況,

并且重新執行之前失敗的任務;從節點僅負責由主節點指派的任務

2)??MapReduce模型原理是利用一個輸入的key/value對集合來產生一個輸出的key/value隊集合,使用Map和Reduce函數來計算

3)??MapReduce將大數據分解為成百上千小數據集,每個數據集分別由集群中的一個節點(一般是一臺計算機)并行處理生成中間結果,后然這些中間結果又由大量的節點合并,形成最終結果

2. 基礎概念

1)hadoop集群三種模式:本地模式(單機模式),偽分布模式,全分布式模式

單機模式:沒有守護進程,所有東西運行在jvm上,使用的是本地文件系統, 沒有dfs,使用開發過程中運行mapreduce程序,是使用最少的一種模式

偽分布模式:在一臺服務器上模擬集群安裝環境, 即多個進程運行在一個服務器上;使用與開發和測試環境,所有 守護進程在同一臺機子上

全分布式模式:N臺主機組成一個Hadoop集群,Hadoop守護進程運行在每一臺主機上;分布式模式中,主節點和從節點會分開

2) 網絡連接方式

host-only:宿主機(windows)與客戶機(虛擬機中的客戶機)單獨組網,與主機當前的網絡是隔離的

bridge:宿主機和客戶機網絡是連接的,在同一個局域網中,可以相互訪問

NAT(network address translation): 虛擬機不占用主機所在局域網ip,通過使用主機的NAT功能訪問區域網和互聯網,此種方式虛擬機不用設置靜態ip,只需要使用DHCP功能自動獲取ip即可(絕大多數上網使用此種方式)

3)SSH??使用ssh進行免密碼登陸

產生秘鑰: ssh-keygen -t rsa

目錄:~/.ssh

公鑰拷貝:cp id_rsa.pub authorized_keys

3. 偽分布式安裝

準備:??----關閉防火墻(內網中,安全性問題較小)

查看狀態:service iptables status

關閉: service iptables stop

關閉防火墻的自動啟動: chkconfig -list | grep iptables(查看)

chkconfig iptables off(關閉)

----修改ip??(修改后 讓其生效:server network restart, 然后使用ifconfig查看)

----修改hostname(/etc/sysconfig/network??更改主機名;??etc/hosts??將主機名與ip地址綁定; )

----設置ssh自動登錄(查看上面章節)

ssh-keygen -t rsa

cp id_rsa.pub authorized_keys

驗證 ssh localhost

1. 安裝jdk -----配置環境變量(/etc/profile? ? java_home和path)----生效(source /etc/profile)---驗證(java -version)

2. 安裝hadoop(tar -zxvf hadoop-1.1.2.tar.gz)---重名名(mv hadoop-1.1.2 hadoop)----配置環境變量(hadoop_home和path)----生效(source /etc/profile)

3. 偽分布式集群:

修改hadoop_home/conf下配置文件 hadoop-env.sh? ?core-site.cml??hdfs-site.xml mapred-site.xml

1.hadoop-env.shexport JAVA_HOME=/usr/local/jdk/2.core-site.xmlfs.default.namehdfs://hadoop:9000hadoop.tmp.dir/usr/local/hadoop/tmp??3.hdfs-site.xmldfs.replication1dfs.permissionsfalse4.mapred-site.xmlmapred.job.trackerhadoop:9001

復制代碼

4. 啟動

hadoop namenode -format(格式化)

start-all.sh

使用jps查看進程

JobTracker、DateNode、TaskTracker、SecondaryNameNode、NameNode

網址欄中輸入 hostname:50070 查看namenode信息

輸入 hostname:50030 產看mapreduce信息

關閉: stop-all.sh

4. 分布式安裝

1.規劃集群各節點的功能

兩臺主機 主機1 hadoop0 namenode ;??主機2 hadoop1 datanode

2. 檢查如下配置(同偽分布式安裝):1)防火墻是否關閉 2)ip是否設置 3)主機名是否設置??4)/etc/hosts是否配置 5)自己主機的ssh免密碼登錄是否設置

3. 集群間ssh免密碼登錄配置

在hadoop0上執行:ssh-copy-id -l ~/.ssh/id_rsa.pub hadoop1 (當本機已經產生rsa authorization時, 通過ssh-copy-id 可以將認證傳送到宿端主機)

在hadoop1上執行:ssh-copy-id -l ~/.ssh/id_rsa.pub hadoop0

使用ssh hadoop1驗證

4. 配置/etc/hosts文件

例如在hadoop0的/etc/hosts文件中添加: 192.168.1.169 hadoop0

192.168.1.21 hadoop1

5. 其他節點上jdk和hadoop的安裝

在hadoop0上執行:

scp -rq /usr/local/jdk hadoop1:/usr/local? ?(-r遞歸復制整個目錄, -q不顯示進度條)

scp -rq /usr/local/hadoop hadoop1:/usr/local

scp -rq /etc/profile hadoop1:/etc

scp -rq /etc/hosts hadoop1:/etc

source /etc/profile

6. 配置集群

hadoop0下修改hadoop_home/conf/slaves(存儲datanode和tasktracker節點名稱),將localhost改為hadoop1

7. 啟動集群

在hadoop0中執行hadoop namenode -format

start-all.sh

(關閉: stop-all.sh)

8. jps查看進程

hadoop0上 NameNode 、SecondarayNameNode、JobTracker進程

hadoop1上 DataNode、TaskTracker

9. 常見啟動錯誤

unknownHostException :設置主機名錯誤(查看/etc/sysconfig/network)

BindException:ip設置錯誤(查看/etc/hosts)

Name Node is in safe mode 文件系統在安全模式(分布式文件系統啟動時,開始會有 安全模式,出于安全模式時文件系統中的內容不允許修改和刪除,直至安全模式結束,安全模式是系統啟動時檢查各個datanode上數據塊的有效性,可以等待一會或者關閉安全模式??hadoop dfsadmin -safemode leave)

轉載自大數據巴士:http://www.bdtbus.com

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容