hadoop clusters環境搭建

最近在docker上部署hadoop clusters,按照hadoop官網的配置遇到不少問題。有的問題是我我的緣由形成,也有些許問題讓我感受到hadoop官網的文檔在部分細節上還不夠友好。我決定把配置的過程記錄下來,一方面作個記錄,另外一方面給後來者提供一些方便。node


  • 我是使用docker部署的,首先就是拉取鏡像docker

docker search hadoop
...
...這裏會返回關於hadoop的全部鏡像,我選擇的是star數量最多的sequenceiq/hadoop-docker
...
docker pull sequenceiq/hadoop-docker
  • 建議首先對鏡像作一些修改,不然加載到容器以後再修改,可能就比較麻煩了。當時我不知道這些,因此直接就建立了Namenode和Datanode的容器,結果改起來比較麻煩。bash

  • 建立Namenode和Datanode容器,在這裏我建立了一個Namenode和一個Datanode,Namenode還兼着SecondaryNamenode。oop

docker network ls    #確認有bridge driver
docker run itd --net=bridge -p 50070:50070 -p 8008:8008 -p 9000:9000 --name hadoop-master --host hadoop-master-host
docker run itd --net=bridge --name hadoop-slave1 --host hadoop-slave1
  • 進入容器的命令行,修改配置,須要特別注意的是,全部節點的配置都要如此。命令行

使用docker ps命令獲取到正在運行的docker容器的ID,如下分別使用{MASTER_ID}和{SLAVE1_ID}來替代code

docker exec -ti {MASTER_ID} /bin/bash
cd /usr/local/hadoop

修改${HADOOP_HOME}/etc/core-site.xml,在裏面添加Namenode的地址。使用主機名方式添加時要特別注意主機名須要添加到/etc/hosts。orm

<property>
          <name>fs.defaultFS</name>
          <value>hdfs://host-hadoop-master:9000</value>
      </property>

添加slave列表,修改{HADOOP_HOME}/etc/slaves文件,添加slave節點的IP地址或主機名。固然了,若是以主機名方式添加,須要修改/etc/hosts文件。哦,記住,裏面默認的內容是localhost,刪掉。
添加SecondaryNamenode,修改{HADOOP_HOME}/etc/masters,添加IP地址或主機名。(這一步很是重要,我使用的hadoop版本是2.7,裏面沒有這個文件,須要手動建立。我在網上別人的博客裏看到這一步了,可是官方文檔並無說明,並且也沒有這個文件。因爲本人太迷信官方文檔了,因此省略了這一步,因此形成了嚴重錯誤的開始)xml

  • 全部配置文件修改完成以後,就能夠啓動hadoop服務了。這裏在master節點運行便可。hadoop

${HADOOP_HOME}/bin/hdfs namenode -format # The first time you bring up HDFS, it must be formatted. Format a new distributed filesystem as hdfs
${HADOOP_HOME}/sbin/start-dfs.sh #執行完成這一步以後,在Namenode節點會有Namenode和SecondaryNamenode兩個服務運行,Datanode節點會有Datanode服務運行
${HADOOP_HOME}/sbin/start-yarn.sh #執行完成這一步以後,在master節點會有ResourceManager服務運行,Datanode節點會有NodeManager服務運行

至此,hadoop cluster環境搭建就完成了。文檔

相關文章
相關標籤/搜索