http://jingyan.baidu.com/article/27fa73269c02fe46f9271f45.html
Hadoop的大名想必已被IT界人士衆所周知了,而它的官方文檔對它它的安裝部署卻介紹得很簡略。爲了讓更多對此有興趣的人更快入門,特發此經驗。
安裝/配置 步驟
-
配置hosts文件,將主機名和對應IP地址映射。如圖中Master、Slave1和Slave2是我們要搭建分佈式環境的機器。Master爲主機,Slavex爲從機。
-
配置SSH的無密碼登錄:可新建專用用戶hadoop進行操作,cd命令進入所屬目錄下,輸入以下指令(已安裝ssh)
ssh-keygen -t rsa -P ""
cat .ssh/id_rsa.pub >>.ssh/authorized_keys
解釋一下,第一條生成ssh密碼的命令,-t 參數表示生成算法,有rsa和dsa兩種;-P表示使用的密碼,這裏使用“”空字符串表示無密碼。
第二條命令將生成的密鑰寫入authorized_keys文件。
這時輸入 ssh localhost,彈出寫入提示後回車,便可無密碼登錄本機。同理,將authorized_keys文件 通過 scp命令拷貝到其它主機相同目錄下,則可無密碼登錄其它機器。
-
安裝hadoop:安裝方式很簡單,下載安裝包到所屬目錄下,使用
tar -zxvf 安裝包名
進行解壓,解壓完畢可通過mv 命令重命名文件夾,安裝至此完成。解壓後的目錄內容如圖所示。
-
hadoop配置過程:要實現分佈式環境,配置過程是最爲重要的,
這裏要涉及到的配置文件有7個:
~/hadoop/etc/hadoop/hadoop-env.sh
~/hadoop/etc/hadoop/yarn-env.sh
~/hadoop/etc/hadoop/slaves
~/hadoop/etc/hadoop/core-site.xml
~/hadoop/etc/hadoop/hdfs-site.xml
~/hadoop/etc/hadoop/mapred-site.xml
~/hadoop/etc/hadoop/yarn-site.xml
之後會分別介紹各個配置的的作用和配置關鍵
-
配置文件1:hadoop-env.sh
該文件是hadoop運行基本環境的配置,需要修改的爲java虛擬機的位置。
故在該文件中修改JAVA_HOME值爲本機安裝位置(如,export JAVA_HOME=/usr/lib/jvm/java-1.7.0)
-
配置文件2:yarn-env.sh
該文件是yarn框架運行環境的配置,同樣需要修改java虛擬機的位置。
在該文件中修改JAVA_HOME值爲本機安裝位置(如,export JAVA_HOME=/usr/lib/jvm/java-1.7.0)
-
配置文件3:slaves
該文件裏面保存所有slave節點的信息,以本篇爲例
寫入以下內容(hosts裏從機的主機名):
Slave1
Slave2
-
配置文件4:core-site.xml
<configuration>
<property>
<name>hadoop.tmp.dir</name>
<value>/data/hadoop-${user.name}</value>
</property>
<property>
<name>fs.default.name</name>
<value>hdfs://Master:9000</value>
</property></configuration>
這個是hadoop的核心配置文件,這裏需要配置的就這兩個屬性,fs.default.name配置了hadoop的HDFS系統的命名,位置爲主機的9000端口;hadoop.tmp.dir配置了hadoop的tmp目錄的根位置。這裏使用了一個文件系統中沒有的位置,所以要先用mkdir命令新建一下。
-
配置文件5:hdfs-site.xml
<configuration>
<property>
<name>dfs.http.address</name>
<value>Master:50070</value>
</property>
<property>
<name>dfs.namenode.secondary.http-address</name><value>Master:50090</value>
</property>
<property>
<name>dfs.replication</name>
<value>1</value>
</property>
</configuration>
這個是hdfs的配置文件,dfs.http.address配置了hdfs的http的訪問位置;dfs.replication配置了文件塊的副本數,一般不大於從機的個數。
-
配置文件6:mapred-site.xml
<configuration>
<property>
<name>mapred.job.tracker</name>
<value>Master:9001</value>
</property>
<property>
<name>mapred.map.tasks</name>
<value>20</value>
</property><property>
<name>mapred.reduce.tasks</name>
<value>4</value>
</property><property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
<property>
<name>mapreduce.jobhistory.address</name><value>Master:10020</value>
</property>
<property><name>mapreduce.jobhistory.webapp.address</name><value>Master:19888</value>
</property>
</configuration>
這個是mapreduce任務的配置,由於hadoop2.x使用了yarn框架,所以要實現分佈式部署,必須在mapreduce.framework.name屬性下配置爲yarn。mapred.map.tasks和mapred.reduce.tasks分別爲map和reduce的任務數,至於什麼是map和reduce,可參考其它資料進行了解。
其它屬性爲一些進程的端口配置,均配在主機下。
-
配置文件7:yarn-site.xml
<configuration>
<property>
<name>yarn.resourcemanager.address</name>
<value>Master:8032</value>
</property>
<property>
<name>yarn.resourcemanager.scheduler.address</name>
<value>Master:8030</value>
</property>
<property>
<name>yarn.resourcemanager.webapp.address</name>
<value>Master:8088</value>
</property>
<property>
<name>yarn.resourcemanager.resource-tracker.address</name><value>Master:8031</value>
</property>
<property>
<name>yarn.resourcemanager.admin.address</name><value>Master:8033</value>
</property>
<property>
<name>yarn.nodemanager.aux-services</name><value>mapreduce_shuffle</value>
</property>
<property>
<name>yarn.nodemanager.aux-services.mapreduce.shuffle.class</name><value>org.apache.hadoop.mapred.ShuffleHandler</value></property>
</configuration>
該文件爲yarn框架的配置,主要是一些任務的啓動位置
-
將配置好的hadoop複製到其他節點
scp –r ~/hadoop hadoop@Slave1:~/
scp –r ~/hadoop hadoop@Slave2:~/
END
啓動驗證
-
格式化namenode:
./bin/hdfs namenode –format
若出現如圖所示提示,則格式化成功
-
啓動hdfs: ./sbin/start-dfs.sh
此時在Master上面運行的進程有:namenode secondarynamenode
Slave1和Slave2上面運行的進程有:datanode
啓動yarn: ./sbin/start-yarn.sh
此時在Master上面運行的進程有:namenode secondarynamenode resourcemanager
Slave1和Slave2上面運行的進程有:datanode nodemanaget
-
檢查啓動結果
查看集羣狀態:./bin/hdfs dfsadmin –report
查看文件塊組成: ./bin/hdfsfsck / -files -blocks
查看HDFS: http://192.168.101.248:50070(主機IP)
查看RM: http:// 192.168.101.248:8088(主機IP)
正確情況如圖顯示
END