天天看點

【圖文詳解】Hadoop叢集搭建(CentOs6.3)重要!重要!重要!!!

本文主要詳細地描述了hadoop叢集的搭建以及一些配置檔案的說明,用于自己複習以及供新人學習,若有錯誤之處還請指出。

前期準備

先給出我的叢集架構:

【圖文詳解】Hadoop叢集搭建(CentOs6.3)重要!重要!重要!!!
  • 到hadoop官網下載下傳好hadoop安裝包http://mirrors.hust.edu.cn/apache/hadoop/common/hadoop-2.6.5/hadoop-2.6.5.tar.gz
  • 裝好四台虛拟機(我的四台虛拟機是CentOs6.3系統)
  • 四台虛拟機都裝好jdk
  • 四台虛拟機都配好免密登入
  • 四台虛拟機都配置好ip位址和主機名映射關系(以下是我的位址映射關系)

    vim /etc/hosts

    192.168.25.13   mini1
      192.168.25.14   mini2
      192.168.25.15   mini3
      192.168.25.16   mini4
               

以上步驟有不會的可檢視我的其他幾篇部落格:

Linux下的常用配置

Linux下配置免密登入

開始安裝

1、将hadoop安裝包上傳到mini1上,解壓後改名,并建立目錄hadoopdata與hadoop目錄平行

tar -zxvf hadoop-2.6.5.tar.gz -C /root/apps/
cd /root/apps/
mv hadoop-2.6.5 hadoop
mkdir hadoopdata
           
【圖文詳解】Hadoop叢集搭建(CentOs6.3)重要!重要!重要!!!

2、進入hadoop配置檔案目錄下,可看到以下配置檔案

cd hadoop/etc/hadoop/
           
【圖文詳解】Hadoop叢集搭建(CentOs6.3)重要!重要!重要!!!

3、修改hadoop-env.sh配置檔案

【圖文詳解】Hadoop叢集搭建(CentOs6.3)重要!重要!重要!!!
vim hadoop-env.sh
#寫上自己的JAVA_HOME
           

4、修改core-site.xml配置檔案

【圖文詳解】Hadoop叢集搭建(CentOs6.3)重要!重要!重要!!!
vim core-site.xml

<configuration>
<property>
<name>fs.defaultFS</name>
<value>hdfs://mini1:9000</value>
</property>
<property>
<name>hadoop.tmp.dir</name>
<value>/root/apps/hadoopdata</value>
</property>
</configuration>
           

配置說明:

fs.defaultFS:hadoop使用什麼檔案系統
hdfs://mini1:9000:指定hadoop系統使用hdfs檔案系統,并指明namenode為mini1,用戶端通路端口為9000

hadoop.tmp.dir:hadoop檔案存儲目錄

有2個參數可配置,但一般來說我們不做修改。
fs.checkpoint.period表示多長時間記錄一次hdfs的鏡像,預設是1小時。
fs.checkpoint.size表示鏡像檔案快大小,預設64M。

<property>
<name>fs.checkpoint.period</name>
<value>3600</value>
</property>

<property>
<name>fs.checkpoint.size</name>
<value>67108864</value>
</property>
           

5、修改hdfs-site.xml(可不做任何配置,使用預設)

【圖文詳解】Hadoop叢集搭建(CentOs6.3)重要!重要!重要!!!
vim hdfs-site.xml

<configuration>

<property>
<name>dfs.namenode.name.dir</name>
<value>/root/apps/hadoopdata/name</value>
</property>

<property>
<name>dfs.datanode.data.dir</name>
<value>/root/apps/hadoopdata/data</value>
</property>

<property>
<name>dfs.replication</name>
<value>3</value>
</property>

</configuration>
           

配置說明:

dfs.namenode.name.dir:namenode節點的資料存放目錄
dfs.datanode.data.dir:datanode節點的資料存放目錄
dfs.replication:叢集中hdfs儲存資料的副本數
           

6、更改mapred-site.xml.template的配置檔案名,并進行配置

【圖文詳解】Hadoop叢集搭建(CentOs6.3)重要!重要!重要!!!
【圖文詳解】Hadoop叢集搭建(CentOs6.3)重要!重要!重要!!!
mv mapred-site.xml.template mapred-site.xml
vim mapred-site.xml

<configuration>
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
</configuration>
           

配置說明:

mapreduce.framework.name:使用yarn運作mapreduce程式
           

7、修改yarn-site.xml配置檔案

【圖文詳解】Hadoop叢集搭建(CentOs6.3)重要!重要!重要!!!
vim yarn-site.xml

<configuration>

<property>
<name>yarn.resourcemanager.hostname</name>
<value>mini1</value>
</property>

<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
</configuration>
           

配置說明:

yarn.resourcemanager.hostname:指定YARN的老大(ResourceManager)的位址
yarn.nodemanager.aux-services:指定reducer擷取資料的方式
           

8、修改slaves檔案

【圖文詳解】Hadoop叢集搭建(CentOs6.3)重要!重要!重要!!!
vim slaves
# 在此檔案下寫入需要啟動datanode和nodemanager的機器(往往datanode和nodemanager在一台機器上啟動),一行代表一台機器。
           

9、将hadoop添加到環境變量,并重新加載環境變量

【圖文詳解】Hadoop叢集搭建(CentOs6.3)重要!重要!重要!!!
vim /etc/profile

export HADOOP_HOME=/itcast/hadoop-2.4.1
export PATH=$PATH:$JAVA_HOME/bin:$HADOOP_HOME/bin:$HADOOP_HOME/sbin

source /etc/profile
           

重要!重要!重要!!!

Apache提供的hadoop本地庫是32位的,而在64位的伺服器上就會有問題,是以需要自己對源碼進行編譯64位的版本。

自己編譯比較麻煩,可以去網站:http://dl.bintray.com/sequenceiq/sequenceiq-bin/ 下載下傳對應的編譯版本。

準備好64位的lib包後做以下操作:

#解壓到已經安裝好的hadoop安裝目錄的lib/native 和 lib目錄下
tar -zxvf hadoop-native-64-2.6.0.tar -C hadoop/lib/native 
tar -zxvf hadoop-native-64-2.6.0.tar -C hadoop/lib
#配置環境變量 
vi /etc/profile 
export HADOOP_COMMON_LIB_NATIVE_DIR=$HADOOP_HOME/lib/native  
export HADOOP_OPTS="-Djava.library.path=$HADOOP_HOME/lib" 
source /etc/profile
#hadoop檢測本地庫
hadoop checknative –a 
           

10、将hadoop和配置檔案分别分發給另外三台機器(mini2,mini3,mini4)

scp -r /root/apps/hadoop mini2:/root/apps/
scp -r /root/apps/hadoop mini3:/root/apps/
scp -r /root/apps/hadoop mini4:/root/apps/

scp /etc/profile mini2:/etc/
scp /etc/profile mini3:/etc/
scp /etc/profile mini4:/etc/
           

不要忘記三台機器都要重新加載一下配置檔案

11、初始化HDFS

hadoop  namenode  -format
           

12、批量啟動/停止

#批量啟動hdfs
start-dfs.sh
#批量停止hdfs
stop-dfs.sh
           
【圖文詳解】Hadoop叢集搭建(CentOs6.3)重要!重要!重要!!!
【圖文詳解】Hadoop叢集搭建(CentOs6.3)重要!重要!重要!!!
【圖文詳解】Hadoop叢集搭建(CentOs6.3)重要!重要!重要!!!
【圖文詳解】Hadoop叢集搭建(CentOs6.3)重要!重要!重要!!!
#批量啟動yarn
strat-yarn.sh
#批量停止yarn
stop-yarn.sh
           
【圖文詳解】Hadoop叢集搭建(CentOs6.3)重要!重要!重要!!!
【圖文詳解】Hadoop叢集搭建(CentOs6.3)重要!重要!重要!!!
【圖文詳解】Hadoop叢集搭建(CentOs6.3)重要!重要!重要!!!
【圖文詳解】Hadoop叢集搭建(CentOs6.3)重要!重要!重要!!!
#單獨啟動或停止hdfs,yarn
hadoop-daemon.sh start namenode     hadoop-daemon.sh stop namenode
hadoop-daemon.sh start datanode     hadoop-daemon.sh stop datanode

hadoop-daemon.sh start resourcemanager  hadoop-daemon.sh stop resourcemanager
hadoop-daemon.sh start nodemanager      hadoop-daemon.sh stop nodemanager
           

總結

  • 官網提供的版本本地庫是32位的,在64位主機環境下無法執行。需要下載下傳hadoop源碼進行編譯。
  • 自己編譯參考https://jingyan.baidu.com/article/ce436649fea8533772afd365.html
  • 配置檔案

    hdfs-site.xml

    可不做任何配置,使用預設即可
  • 叢集中每台機器都要記得修改

    /etc/hosts

    檔案
  • 叢集中所有的機器配置環境變量後不要忘記source一下(因為本文的環境變量檔案是通過scp指令傳給各台機器的,很容易忘記source)
  • 配置免密登入的時候不要忘記本機也配置上(将mini1的公鑰發給mini1)(ssh-copy-id mini1)
  • 如果哪台機器啟動出錯,可檢視相應機器下的日志檔案,根據錯誤資訊百度查詢解決方法(/root/apps/hadoop/logs/)(檢視.log結尾的日志檔案)
  • 嚴格按照上述流程安裝(包括目錄建立以及目錄的位置),可順利完成叢集的搭建

問題解決

  • datanode無法啟動

原因:

初始化工作目錄結構(hdfs namenode -format)隻是初始化了namenode的工作目錄,而datanode的工作目錄是在datanode啟動後自己初始化的。
namenode在format初始化的時候會形成兩個辨別:
    blockPoolId,
    clusterId.
新的datanode加入時,會擷取這兩個辨別作為自己工作目錄中的辨別。一旦namenode重新format後,namenode的身份辨別已變,而datanode如果依然持有原來的id,就不會被namenode識别。
           

解決方法:

将datanode機器上的工作目錄删掉,重新啟動datanode,它會重新建立工作目錄,并擷取namenode的辨別。
           
【圖文詳解】Hadoop叢集搭建(CentOs6.3)重要!重要!重要!!!
【圖文詳解】Hadoop叢集搭建(CentOs6.3)重要!重要!重要!!!
【圖文詳解】Hadoop叢集搭建(CentOs6.3)重要!重要!重要!!!

叢集中各個端口

【圖文詳解】Hadoop叢集搭建(CentOs6.3)重要!重要!重要!!!

更多配置檔案資訊參考:https://blog.csdn.net/cuitaixiong/article/details/51591410

轉載于:https://www.cnblogs.com/52mm/p/p9.html

繼續閱讀