CentOS7搭建hadoop2.6.4雙節點集羣

環境:html

CentOS7+SunJDK1.8@VMware12。java

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

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

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

過程概要:瀏覽器

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

過程詳細:ruby

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

以master節點爲例:網絡

修改/etc/hosts爲(注意:要把集羣全部節點的ip跟主機名映射全加進來):app

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

 

 或者在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

相關文章
相關標籤/搜索