1. 程式人生 > 其它 >HDFS完全分散式搭建

HDFS完全分散式搭建

1. 啟動zookeeper

沒有問題

2. 上傳hadoop安裝包

解壓,如圖。

3. 節點功能分配

NameNode1 NameNode2 DataNode Zookeeper ZKFC JournalNode
Node1
Node2
Node3

4. 準備安裝環境

```shell
[root@BaseNode opt]# ls
apache-tomcat-18080  hadoop-3.1.2  zook
apache-tomcat-8080   nginx         zook
[root@BaseNode opt]# cd hadoop-3.1.2/etc/hadoop/
[root@BaseNode hadoop]# 

5. 修改叢集環境

[root@BaseNode hadoop]# vim hadoop-env.sh

由於通過SSH遠端啟動程序的時候預設不會載入/etc/profile設定,JAVA_HOME變數就載入不到,需要手動指定。在最後一行追加:

export JAVA_HOME=/usr/java/jdk1.8.0_131
export HDFS_NAMENODE_USER=root
export HDFS_DATANODE_USER=root
export export HDFS_SECONDARYNAMENODE_USER=root

6. 修改配置檔案

  1. vim /opt/hadoop-3.1.2/etc/hadoop/core-site.xml

追加到configuration標籤中間

<configuration>
  <!-- 指定訪問HDFS的時候路徑的預設字首  /  hdfs://node1:9000/ -->
  <property>
<name>fs.defaultFS</name>
<value>hdfs://zkbase:9000</value>
  </property>
  <!-- 指定hadoop的臨時目錄位置,它會給namenode、secondarynamenode以及datanode的儲存目錄指定字首 -->
  <property>
<name>hadoop.tmp.dir</name>
<value>/var/bdp/hadoop/full</value>
  </property>
</configuration>
  1. [root@BaseNode hadoop]# vim hdfs-site.xml
<configuration>

<!--宣告日誌node-->
<property>
        <name>dfs.namenode.secondary.http-address</name>
        <value>zknode1:50090</value>
</property>
<property>
        <name>dfs.namenode.secondary.https-address</name>
        <value>zknode1:50091</value>
</property>
<property>
        <name>dfs.namenode.secondary.https-address</name>
        <value>zknode1:50093</value>
</property>

<!--宣告副本數量-->
<property>
        <name>dfs.replication</name>
        <value>3</value>
</property>

  1. [root@BaseNode hadoop]# vim workers
BaseNode
zknode1
zknode2
zkNode3
~         

7. SCP Hadoop到其他三臺主機

8. 修改四臺主機的/etc/profile檔案

export HADOOP_HOME=/opt//hadoop-3.1.2
export PATH=$HADOOP_HOME/bin:$HADOOP_HOME/sbin/$PATH

source /etc/profile

9. 格式化namenode

在basenode上面,hdfs namenode -format

10. 啟動下,start-dfs.sh,然後訪問jps

啊偶,失敗了

許可權不足的原因,來,我們著手解決。

設定免密

ssh-copy-id -i ~/.ssh/id_rsa.pub <ip>

啟動成功

大功告成!