配置分布式hadoop環境(*nix)

基于配置單機hadoop的基礎上繼續

ssh連接密鑰步驟1:改權限

touch ~/.ssh/authorized_keys
chmod 600 ~/.ssh/authorized_keys

ssh連接密鑰步驟2:添加本機密鑰到遠程主機的允許訪問列表,參考遠程執行ssh代碼

ssh <remote_hostname> 'cat ~/.ssh/id_rsa.pub' >> ~/.ssh/authorized_keys

配置xml步驟1:分布式HDFS

core-site.xml

<configuration>
<property>
<name>fs.defaultFS</name>
<value>hdfs://c-1:9000</value>
</property>
<property>
<name>hadoop.tmp.dir</name>
<value>/data/hadoop/tmp</value>
</property>
</configuration>

其中的fs.defaultFS表示主節點URL

hadoop.tmp.dir是其他目錄的基礎目錄,如果沒有指定其他目錄,就都放在這個文件夾里

hdfs-site.xml

<configuration>
<property>
<name>dfs.replication</name>
<value>1</value>
</property>
</configuration>

以上是設置文件塊的復本數量,默認是3個

slaves

c-1
c-2
c-3

以上文本文件中包含了所有datanode的hostname

注意,以上三個文件要在所有節點上修改一致,并放在同樣的目錄中
否則,三個節點不一樣,子節點有配置錯誤就可能無法啟動,主節點不顯示子節點報錯

啟動分布式HDFS集群

export HADOOP_CONF_DIR=`pwd`
$HADOOP_HOME/bin/hadoop namenode -format
$HADOOP_HOME/sbin/start-dfs.sh

第一次啟動前要記得格式化namenode,后續不需要

如果,datanode,比如c-2連接不上,可以嘗試

手工啟動datanode,在datanode上(之前xml配置中namenode自己也配置了datanode角色)運行

sbin/hadoop-daemon.sh start datanode

如果格式化namenode但與datanode沒連上,可能兩次格式化產生的clusterID不同,檢查辦法見參考鏈接1參考鏈接2

此時HDFS服務應該已經啟動,可以命令查看

curl c-1:50070

或者在網頁查看

http://c-1:50070

可以使用命令查看HDFS文件,或者上傳文件到HDFS

echo "hello world" >> input
hadoop fs -mkdir -p .
hadoop fs -put input .
hadoop fs -ls .
hadoop fs -cat input

以上先為當前用戶創建了文件夾,因為在HDFS里本來是沒有/user/<username>的
這些命令可以在集群內使用相同的$HADOOP_HOME文件夾內的程序調用,也可以在其他能訪問到namenode節點的主機上,使用其他主機上的hadoop程序包運行

下面設置yarn-site.xml

<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
<property>
<name>yarn.resourcemanager.hostname</name>
<value>c-1</value>
</property>
</configuration>

以上aux-services表示yarn的nodemanager需要提供map/reduce算法之間的shuffle功能,這個功能是連接map算法與reduce算法間的橋梁

之前給HDFS配置的slaves同樣會用于yarn,resourcemanager管理的nodemanager在啟動時會嘗試連接resourcemanager,如果沒有配置,默認就是它自己。start-yarn在主節點發起,會讓slave節點啟動datanode和nodemanager,而并不會在上面啟動namenode或者resourcemanager,所以slave節點上沒有啟動resourcemanager,它也找不到。而看起來,集群就是沒有主節點。參考鏈接

下面啟動yarn集群

sbin/start-yarn.sh

現在可以查看yarn頁面了

http://c-1:8088

下面運行hello world程序

hadoop jar $HADOOP_HOME/share/hadoop/mapreduce/hadoop-examples-x.y.z.jar wordcount input output
hadoop fs -ls output/
hadoop fs -cat output/*

以上命令可以在集群內運行,也可以在客戶端運行。根據xml配置,其中input文件是保存在HDFS上的。

下面刪除輸出文件

hadoop fs -rm -r -f output

關閉集群

sbin/stop-yarn.sh
sbin/stop-dfs.sh

重啟集群時,可能會處于safemode一段時間,比如半分鐘,可以在namenode網頁查看startup progress

使用命令查看safemode狀態

hdfs dfsadmin -safemode get

無論在namenode還是datanode都可以在utility查看log,而namenode查看文件系統

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