Hadoop分佈式集羣搭建

1.機器規劃     

編號 主機 主機IP 安裝組件
1 node1 192.168.96.3 namenode、zkfc、datanode、nodemanager、zookeeper、jdk
2 node2 192.168.96.4 namenode、zkfc、datanode、resourcemanager 、nodemanager、 zookeeper、jdk
3 node3 192.168.96.5 datanode、nodemanager、 zookeeper、jdk

2. Linux ip修改

 [root@node1 ~]# vim /etc/sysconfig/network-scripts/ifcfg-eno16777736
  BOOTPROTO=dhcp
  TYPE=Ethernet
  BOOTPROTO=static
  DEFROUTE=yes
  PEERDNS=yes
  PEERROUTES=yes
  IPV4_FAILURE_FATAL=yes
  NAME=eno16777736
  UUID=d71373c8-ebe8-488f-b003-ffab7da5ee52
  DEVICE=eno16777736
  ONBOOT=yes
  IPADDR=192.168.96.3
  NETMASK=255.255.255.0
  GATEWAY=192.168.96.2

3.修改linux主機名

 Node1
 [root@node1 ~]# vim /etc/hostname   #進入以後直接寫想要的主機名
 [root@node1 ~]# vim /etc/sysconfig/network
 # Created by anaconda
 NETWORKING=yes
 HOSTNAME=node1
 驗證命令:hostname
 node2和node3一樣的操做,分別寫入node二、node3

4. 更改host

 [root@node1 ~]# vim /etc/hosts
 192.168.96.3  node1   #在文件的最後添加
 [root@node1 ~]# systemctl stop firewalld.service #關閉防火牆功能
 [root@node1 ~]# systemctl disable firewalld.service  #將防火牆去除開機自啓
 Removed symlink /etc/systemd/system/dbus-org.fedoraproject.FirewallD1.service.
 Removed symlink /etc/systemd/system/basic.target.wants/firewalld.service.

5.3臺機器上分別執行ssh免密鑰登陸

 [root@node1 ~]# ssh-keygen
 [root@node1 ~]# ls .ssh/   #查看.ssh/目錄會生成公鑰、私鑰兩個文件
 [root@node1 ~]# ssh-copy-id -i node1  #執行公鑰賦值生成認證文件
 [root@node1 ~]# ls .ssh/  #再次查看目錄下會新增兩個認證文件
 分別在node二、node3上執行ssh-keygen命令生成公鑰、密鑰文件
 執行(ssk-copy-id -i node1)對node1執行免密鑰登陸

6.下載jdk

 下載地址http://www.oracle.com/technetwork/java/javase/downloads #選擇對應版本的jdk
 [root@node1 liangml]# tar -xvf jdk-8u111-linux-x64.tar.gz #解壓jdk
 配置變量環境
 [root@node1 liangml]# vim /etc/profile #修改配置文件
  export JAVA_HOME=/home/liangml/jdk1.8.0_111
  export PATH=$JAVA_HOME/bin:$PATH
  export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
 [root@node1 liangml]# source /etc/profile #執行source命令當即生效
 [root@node1 liangml]# java -version #驗證命令
  java version "1.8.0_111"
  Java(TM) SE Runtime Environment (build 1.8.0_111-b14)
  Java HotSpot(TM) 64-Bit Server VM (build 25.111-b14, mixed mode)

7.安裝zookeeper

 下載地址http://www.apache.org/dyn/closer.cgi/zookeeper/
 [root@node1 liangml]# tar -xvf zookeeper-3.4.6.tar.gz
 [root@node1 conf]# vim zoo.cfg   #默認沒有這個配置文件
  dataDir=/home/liangml/zookeeper-3.4.6/data   #制定zookeeper數據目錄
  server.1=node1:2888:3888  #添加端口
  server.2=node2:2888:3888
  server.3=node3:2888:3888
  clientPort=2181  #客戶端鏈接端口
  initLimit=10
  syncLimit=5
  配置zookeeper的myid文件(node二、node3配置文件分別爲二、3)
  [root@node1 zookeeper-3.4.6]# vim data/myid  #編輯data/myid配置文件(修改id爲1)
  [root@node1 liangml]# scp -r zookeeper liangml@node2:/home/liangml/ #複製zookeeper配置文件到node二、node3相應的目錄下將myid分別更改成二、3
  [root@node1 bin]# ./zkServer.sh  start  #在3個機器上分別執行命令啓用zookeeper
  [root@node1 bin]# ./zkServer.sh status #驗證zookeeper啓動(其中一臺狀態爲leater、兩臺爲follower)

8.安裝Hadoop

 下載地址:http://www.apache.org/dyn/closer.cgi/hadoop/common
 [root@node1 liangml]# unzip hadoop-2.6.0.zip  #解壓hadoop
 [root@node1 liangml]# cd hadoop-2.6.0/etc/hadoop/
 [root@node1 hadoop]# vim hadoop-env.sh #修改配置文件hadoop-env.sh
  export JAVA_HOME=/home/liangml/jdk1.8.0_111
 [root@node1 hadoop]# vim hdfs-site.xml #修改配置文件hdfs-site.xml
  <configuration>
  <property>
  <name>dfs.nameservices</name>
  <value>ns1</value>
  </property>
  <!-- ns1下面有兩個NameNode,分別是nn1,nn2 -->
  <property>
  <name>dfs.ha.namenodes.ns1</name>
  <value>nn1,nn2</value>
  </property>
  <!-- nn1的RPC通訊地址 -->
  <property>
  <name>dfs.namenode.rpc-address.ns1.nn1</name>
  <value>node1:9000</value>
  </property>
  <!-- nn1的http通訊地址 -->
  <property>
  <name>dfs.namenode.http-address.ns1.nn1</name>
  <value>node1:50070</value>
  </property>
  <!-- nn2的RPC通訊地址 -->
  <property>
  <name>dfs.namenode.rpc-address.ns1.nn2</name>
  <value>node2:9000</value>
  </property>
  <!-- nn2的http通訊地址 -->
  <property>
  <name>dfs.namenode.http-address.ns1.nn2</name>
  <value>node2:50070</value>
  </property>
  <!-- 指定NameNode的元數據在JournalNode上的存放位置 -->
  <property>
  <name>dfs.namenode.shared.edits.dir</name>
  <value>qjournal://node1:8485;node2:8485;node3:8485/ns1</value>
  </property>
  <!-- 指定JournalNode在本地磁盤存放數據的位置 -->
  <property>
  <name>dfs.journalnode.edits.dir</name>
  <value>/home/hadoop-2.6.0/journal</value>
  </property>
  <!-- 開啓NameNode失敗自動切換 -->
  <property>
  <name>dfs.ha.automatic-failover.enabled</name>
  <value>true</value>
  </property>
  <!-- 配置失敗自動切換實現方式 -->
  <property>
  <name>dfs.client.failover.proxy.provider.ns1</name>
  <value>org.apache.hadoop.hdfs.server.namenode.ha.ConfiguredFailoverProxyProvider</value>
  </property>
  <!-- 配置隔離機制方法,多個機制用換行分割,即每一個機制暫用一行-->
  <property>
  <name>dfs.ha.fencing.methods</name>
  <value>
  sshfence
  shell(/bin/true)
  </value>
  </property>
  <!-- 使用sshfence隔離機制時須要ssh免登錄 -->
  <property>
  <name>dfs.ha.fencing.ssh.private-key-files</name>
  <value>/home/analytics/.ssh/id_rsa</value>
  </property>
  <!-- 配置sshfence隔離機制超時時間 -->
  <property>
  <name>dfs.ha.fencing.ssh.connect-timeout</name>
  <value>30000</value>
  </property>
  </configuration>
 [root@node1 hadoop]# vim yarn-site.xml #修改yarn-site.xml配置文件
  <configuration>
  <!-- Site specific YARN configuration properties -->
  <!-- 指定resourcemanager地址 -->
  <property>
  <name>yarn.resourcemanager.hostname</name>
  <value>node2</value>
  </property>
  <!-- 指定nodemanager啓動時加載server的方式爲shuffle server -->
  <property>
  <name>yarn.nodemanager.aux-services</name>
  <value>mapreduce_shuffle</value>
  </property>
  </configuration>
 [root@node1 hadoop]# vim mapred-site.xml #修改mapred-site.xml配置文件
  <configuration>
  <!-- 指定mr框架爲yarn方式 -->
  <property>
  <name>mapreduce.framework.name</name>
  <value>yarn</value>
  </property>
  </configuration>
 [root@node1 hadoop]# vim slaves #修改slaves
  node1
  node2
  node3
 在node1啓動全部的journalnode,注:調用的是hadoop-daemons.sh腳本,注意是複數s的腳本
 [root@node1 hadoop]# /home/liangml/hadoop-2.6.0/sbin/hadoop-daemons.sh start journalnode
  驗證:運行jps,node一、二、3上多了journalnode進程
 格式化HDFS
  [root@node1 hadoop-2.6.0]# bin/hdfs namenode -format #格式化HDFS集羣
  #格式化後會根據core-site.xml中的hadoop.tmp.dir配置生成文件,本文文件生成目錄在hadoop目錄tmp下,將相應的目錄copy到node二、node3集羣下。
  [root@node1 hadoop-2.6.0]# scp tmp/ liangml@node2:/home/liangml/hadoop-2.6.0/
 格式化ZK(在node1上執行)
  [root@node1 hadoop-2.6.0]# bin/hdfs zkfc -formatZK
 分別啓動HDFS、YARN
  [root@node1 hadoop-2.6.0]# sbin/start-dfs.sh
  [root@node1 hadoop-2.6.0]# sbin/start-yarn.sh

驗證:

 UI驗證:
  http://192.168.93.3:50070
 命令驗證:
  [root@node1 bin]# ./hadoop fs -ls /
  [root@node1 bin]# ./hadoop fs -mkdir /liangml
相關文章
相關標籤/搜索