CentOS7搭建hadoop2.6.4雙節點集群


環境:

CentOS7+SunJDK1.8@VMware12。

NameNode虛擬機節點主機名:master,IP規划:192.168.23.101,職責:Name node,Secondary name node,Resource manager。

DataNode虛擬機節點主機名:slave1,IP規划:192.168.23.102,職責:Data node,Node manager。

每個虛擬機分配資源:CPU單顆,內存2GB,硬盤20GB。

過程概要:

  1. 創建2個虛擬機,主機名分別為:master(做NameNode、JobTracker)、slave1(做DataNode、TaskTracker),分配固定ip。
  2. 每個虛擬機都創建一個hadoop用戶,並擁有sudo權限。
  3. 解壓hadoop包,並把其所屬用戶及組改為hadoop、hadoop。
  4. 生成openssh密鑰對,使master、slave之間的ssh訪問免輸密碼。

過程詳細:

  • VMware中建立兩個CentOS7主機,創建上述兩個主機名和固定IP(VMware CentOS固定IP設置參見http://www.centoscn.com/CentOS/config/2014/1028/4009.html)。

以master節點為例:

修改/etc/hosts為(注意:要把集群所有節點的ip跟主機名映射全加進來):

 修改:/etc/sysconfig/network-scripts/ifcfg-eno16777736為(經測試,此種方法可能會被系統再次動態增加一個IP地址,變成雙IP。因此不如圖形界面的方法可靠):

 

 或者在CentOS7的圖形界面下,點擊網絡圖標,IP改為手動,設置IP地址、掩碼、網關、DNS(推薦)

 

上述為master節點。slave節點類似修改。確保雙方IP能互相ping通。

  • 創建hadoop用戶,並賦予sudo權限:

命令:su   root  (切換到root用戶)

命令:chmod u+w /etc/sudoers (給sudoers增加寫權限)

命令:vi /etc/sudoers  (修改sudoers文件)

        執行命令后會進入sudoers文件的查看模式,該模式下按“i”進入文件修改模式,

        然后在root ALL=(ALL)  ALL下方增加hadoop ALL=(ALL)NOPASSWD:ALL  按 “esc”鍵推出修改模式,大寫模式下,按兩次“z”保存退出。

命令:chmod u-w /etc/sudoers (撤銷sudoers文件的寫權限)。

改后的/etc/sudoers文件內容如下:

 

把hadoop-2.6.4.tar.gz拷貝到/usr/下,解壓:tar zxvf hadoop-2.6.4.tar.gz ,並用chmod、chgrp命令將其所屬用戶、用戶組都改為hadoop(重要!否則hadoop無法在其中新建臨時目錄和日志)。效果如下:

  • 創建ssh免密碼登錄:

Master機器上生成密碼對。命令:ssh-keygen –t rsa  (生成其無密碼密鑰對,一路回車鍵,生成的密鑰對:id_rsa和id_rsa.pub,默認存儲在"/home/hadoop/.ssh"目錄)

命令:cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys (把id_rsa.pub追加到授權的key里面去)

命令:chmod 600 ~/.ssh/authorized_keys(修改文件"authorized_keys"權限,這步驟很重要,很多莫名其妙的錯誤有可能就是權限的問題)

命令:sudo vi /etc/ssh/sshd_config (修改SSH配置文件"/etc/ssh/sshd_config"),修改如下內容:

RSAAuthentication yes # 啟用 RSA 認證
PubkeyAuthentication yes # 啟用公鑰私鑰配對認證方式
AuthorizedKeysFile .ssh/authorized_keys # 公鑰文件路徑(和上面生成的文件同)

命令:service sshd restart(重新啟動服務)

命令:ssh localhost  (測試是否成功)

下面是把公鑰復制到所有的slave節點上去:

命令:scp ~/.ssh/id_rsa.pub hadoop@192.168.239.129:~/(記得改成自己的ip,這個是我的slave1的ip,就是把master節點的公鑰發送到了slave1的根目錄下了)

  • 卸載openjdk,安裝sun-jdk8(過程不贅述),安裝后效果如下:

  • 關閉CentOS7的防火牆:
  • systemctl stop firewalld.service #停止
    systemctl disable firewalld.service #禁用
    之前的版本:
    service iptables stop #停止
    chkconfig iptables off #禁用

     

  • 修改幾個重要的配置文件:

添加環境變量

/etc/profile里添加

export HADOOP_HOME=/usr/hadoop-2.6.4/
export PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin

修改 Hadoop 配置文件

在 hadoop 解壓路徑下面,/etc/hadoop/hadoop-env.sh 增加下面兩行

export JAVA_HOME=/usr/java/jdk1.8.0_101
export HADOOP_PREFIX=/usr/hadoop-2.6.4

在 hadoop 解壓路徑下面,/etc/hadoop/core-site.xml增加下面內容:

<configuration>
<property> <name>fs.defaultFS</name> <value>hdfs://master:9000/</value> </property> <property> <name>hadoop.tmp.dir</name> <value>/usr/hadoop-2.6.4/tmp</value> </property> </configuration>

在 hadoop 解壓路徑下面,/etc/hadoop/hdfs-site.xml 增加下面內容:

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

這里設置成2,表示數據有2個副本(數值不大於DataNode數)。

在 hadoop 解壓路徑下面,/etc/hadoop/mapred-site.xml 增加下面內容:

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

在 hadoop 解壓路徑下面,/etc/hadoop/yarn-env.sh 增加下面,增加JAVA_HOME 配置:

export JAVA_HOME=/usr/java/jdk1.8.0_101

在 hadoop 解壓路徑下面,/etc/hadoop/yarn-site.xml 增加下面內容:

<configuration>
    <property>
        <name>yarn.nodemanager.aux-services</name>
        <value>mapreduce_shuffle</value>
    </property>
    <property>
        <name>yarn.resourcemanager.hostname</name>
        <value>master</value>
    </property>
  <property> 
  <description>The address of the applications manager interface in the RM.</description> 
  <name>Yarn.resourcemanager.address</name> 
  <value>master:18040</value> 
  </property> 

  <property> 
  <description>The address of the scheduler interface.</description> 
  <name>Yarn.resourcemanager.scheduler.address</name> 
  <value>master:18030</value> 
  </property> 

  <property> 
  <description>The address of the RM web application.</description> 
  <name>Yarn.resourcemanager.webapp.address</name> 
  <value>master:18088</value> 
  </property>

  <property> 
  <description>The address of the resource tracker interface.</description> 
  <name>Yarn.resourcemanager.resource-tracker.address</name> 
  <value>master:8025</value> 
  </property> 
</configuration>

這里添加的一些端口號,方便從遠程通過瀏覽器查看集群情況,推薦按照這樣添加。

在 hadoop 解壓路徑下面,/etc/hadoop/slaves 增加下面內容:

master
slave1

按照上面流程,把 slaver1上的環境變量添加好,然后直接:

scp -r /hadoop2.6.4 hadoop@slave1:/usr/

復制到 slave1下面。

 

啟動 hadoop 集群:

格式化文件系統:

hdfs namenode -format

 

啟動 NameNode 和 DateNode:

/usr/hadoop-2.6.4/sbin , 運行:

start-dfs.sh

使用 jps 命令查看 master 上的Java進程,我的進程如下:

 jps 命令也可以查看 slave1上的 Java 進程。應該可以看到DataNode啟動。如:

[hadoop@slave1 hadoop]# jps
6130 DataNode
1264 Jps

查看 NameNode 和 NameNode 信息:

master的瀏覽器輸入:

localhost:50070/dfshealth.html#tab-datanode

可以看到DataNode啟動成功。

啟動 ResourceManager 和 NodeManager

運行 start-yarn.sh , jps查看進程如下:

切換到 slave1,jps查看進程:

[hadoop@slave1 hadoop]# jps
27130 DataNode
12379 Jps
28916 NodeManager

成功了

Hadoop 集群就已經啟動了。

----------------------------------------------------------------------------------------------------------------------------------------

最后,參考文章:

配置sudoer權限、創建免密碼登錄:http://blog.sina.com.cn/s/blog_95b63fc90102vrvy.html

修改hadoop配置文件、進程查看:http://blog.csdn.net/sa14023053/article/details/51952534


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM