1. 程式人生 > >hadoop 2.7.7 安裝(測試環境部署) hadoop2.x部署

hadoop 2.7.7 安裝(測試環境部署) hadoop2.x部署

hadoop 2.7.7 安裝(測試環境部署) hadoop2.x部署

系統環境(censtos 6.5 ):

172.16.57.97 namenodeyw
172.16.57.98 datanodeyw1
172.16.57.238 datanodeyw2

軟體下載:

  • hadoop

wget http://mirrors.shu.edu.cn/apache/hadoop/common/hadoop-2.7.7/hadoop-2.7.7.tar.gz
  • Zookeeper3.4.10

wget http://mirror.bit.edu.cn/apache/zookeeper/zookeeper-3.4.10/zookeeper-3.4.10.tar.gz
  • hbase2.0.2

wget http://mirror.bit.edu.cn/apache/hbase/2.0.2/hbase-2.0.2-bin.tar.gz
  • jdk1.8.0_92:

  • 所有叢集伺服器ssh埠必須一致

一、環境配置

1、三臺伺服器修改hostname ,修改系統引數(limit.conf)

#hostname namenodeyw
#vim /etc/sysconfig/network
NETWORKING=yes
HOSTNAME=namenodeyw

#vim /etc/security/limits.conf
* soft nofile 102400
* hard nofile 102400
* soft nproc 65536
* hard nproc 65536
  • 檢查 /etc/security/limits.d/90-nproc.conf 是否存在,如果存在則需要增加一下配置

* soft nproc 6553

2、建立hadoop使用者並設定hadoop使用者密碼(將家目錄設定到分割槽大的裡面)

#useradd -d /opt/hadoop -g hadoop -m hadoop (#將hadoop家目錄指定到/opt/下,指定hadoop使用者群組及登入使用者目錄)
#passwd hadoop (#設定密碼)

3、三臺hadoop使用者下分別做免金鑰登入

分別執行ssh-keygen -t rsa
進入.ssh 目錄下 : cd /opt/hadoop/.ssh
ssh-copy-id -i id_rsa.pub "-p 45685 [email protected]" (兩兩互通ssh免金鑰)
ssh -p ssh埠 hostname (兩兩相互登入認證)

4、分別在三臺伺服器上安裝jdk,版本jdk1.8.0_92

  • 在/usr/java/中解壓安裝包

  • 配置環境變數 /etc/profile 及hadoop使用者下的 .bash_profile

#jdk
export JAVA_HOME=/usr/java/jdk1.8.0_92
export CLASSPATH=.:$JAVA_HOME/lib/tools.jar
export PATH=$JAVA_HOME/bin:$PATH
  • 執行source /etc/profile 生效

5、設定/etc/selinux/config 為disable 重啟系統

#vim /etc/selinux/config
SELINUX=disabled

6、配置防火牆訪問許可權。

7、分別在三臺伺服器上新增主機名與IP地址對映 (通過root使用者同步)


#vim /etc/hosts
172.16.57.97 namenodeyw
172.16.57.98 datanodeyw1
172.16.57.238 datanodeyw2


二、安裝hadoop 2.7.7

1、使用hadoop使用者登入後,將hadoop壓縮包解壓在當前目錄下,然後配置環境變數

cd /opt/hadoop
tar zxf hadoop-2.7.7.tar.gz
  • 配置環境變數 /etc/profile 以及hadoop使用者下的 .bash_profile 檔案

#hadoop 2.7.7
export HADOOP_HOME=/opt/hadoop/hadoop-2.7.7
export PATH=$HADOOP_HOME/bin:$HADOOP_HOME/sbin:$PATH
  • 執行命令source /etc/profile 使命令生效

2、hadoop配置修改

參照附件設定

3、配置修改

vi hadoop-env.sh
export HADOOP_SSH_OPTS="-p 45685" #如果ssh埠預設不為22 則需要新增此行
export JAVA_HOME=/usr/java/jdk1.8.0_92

4、將namenode上修改完成的hadoop-2.7.7目錄分別拷貝至其他節點上

$scp -r -P 45685 hadoop-2.7.7 datanodeyw1:/opt/hadoop/
$scp -r -P 45685 hadoop-2.7.7 datanodeyw2:/opt/hadoop/

5、在namenode上進行初始化設定

$cd /opt/hadoop/hadoop-2.7.7/bin
$./hadoop namenode -format

6、執行啟動命令:

  1. 啟動hadoop之前jps檢視程序為空

  2. 執行 start-all.sh 後 程序表為如下:

  • 在namenode上啟動的服務有以下

[[email protected] sbin]$ jps
1507 Jps
1079 ResourceManager
906 SecondaryNameNode
731 DataNode
1196 NodeManager
589 NameNode
[[email protected] sbin]$ jps -l
1524 sun.tools.jps.Jps
1079 org.apache.hadoop.yarn.server.resourcemanager.ResourceManager
906 org.apache.hadoop.hdfs.server.namenode.SecondaryNameNode
731 org.apache.hadoop.hdfs.server.datanode.DataNode
1196 org.apache.hadoop.yarn.server.nodemanager.NodeManager
589 org.apache.hadoop.hdfs.server.namenode.NameNode
  • 在datanodeyw1上啟動的服務為:

[[email protected] ~]$ jps
24103 NodeManager
24346 Jps
23965 DataNode
[[email protected] ~]$ jps -l
24103 org.apache.hadoop.yarn.server.nodemanager.NodeManager
24361 sun.tools.jps.Jps
23965 org.apache.hadoop.hdfs.server.datanode.DataNode
  • 在datanodeyw2上啟動的服務為:

[[email protected] hadoop]$ jps
23664 DataNode
23781 NodeManager
23902 Jps
[[email protected] hadoop]$ jps -l
23664 org.apache.hadoop.hdfs.server.datanode.DataNode
23781 org.apache.hadoop.yarn.server.nodemanager.NodeManager
23914 sun.tools.jps.Jps

7、在hadoop上建立目錄並上傳檔案驗證

hadoop fs -mkdir -p /data/test
hadoop fs -put hadoop-2.7.7.tar.gz /data/test/
hadoop fs -ls /data/test #檢視檔案是否上傳成功

8、web頁面查詢

http://172.16.57.97:8088/cluster/cluster #hadoop cluster
http://172.16.57.97:50070/dfshealth.html#tab-overview #進入瀏覽檔案檢視上傳檔案是否存在


三 、安裝 Zookeeper3.4.10

1、在namenode上將下載的 Zookeeper3.4.10 解壓至/opt/hadoop目錄下


2、分別在三臺伺服器上修改環境變數/etc/profile 及hadoop使用者下的.bash_profile檔案並使其生效


3、分別在三臺伺服器上建立目錄

mkdir -p /opt/hadoop/zookeeper/{data,dataLog}


4、分別在三臺伺服器上建立 myid 檔案

namenodeyw: echo "1" >> /opt/hadoop/zookeeper/data/myid
datanodeyw1: echo "2" >> /opt/hadoop/zookeeper/data/myid
datanodeyw2: echo "3" >> /opt/hadoop/zookeeper/data/myid

說明:上面新建的目錄可以不和我一樣,myid中的數字編號也可以不一樣,只要和下面zoo.cfg的配置對應即可,但是建成一樣也無妨。


5、修改zookeeper配置zoo.cfg (

  • 進入/opt/hadoop/zookeeper-3.4.10/conf 下

$cd /opt/hadoop/zookeeper-3.4.10/conf
$cp -r zoo_sample.cfg zoo.cfg
$vim zoo.cfg
dataDir=/opt/hadoop/zookeeper/data
dataLogDir=/opt/hadoop/zookeeper/dataLog
server.1=namenodeyw:2888:3888
server.2=datanodeyw1:2888:3888
server.3=datanodeyw2:2888:3888

6、將namenode上修改完成的 zookeeper-3.4.10目錄分別拷貝至其他節點上

$scp -r -P 45685 zookeeper-3.4.10 datanodeyw1:/opt/hadoop/
$scp -r -P 45685 zookeeper-3.4.10 datanodeyw2:/opt/hadoop/

7、分別啟動zookeeper叢集

  1. zookeeper用法:

Usage: /opt/hadoop/zookeeper-3.4.10/bin/zkServer.sh {start|start-foreground|stop|restart|status|upgrade|print-cmd}

2. 命令:

/opt/hadoop/zookeeper-3.4.10/bin/zkServer.sh start #啟動
/opt/hadoop/zookeeper-3.4.10/bin/zkServer.sh stop #停止
/opt/hadoop/zookeeper-3.4.10/bin/zkServer.sh status #檢視狀態(驗證結果是否正常)

說明:dataDir和dataLogDir需要自己建立,目錄可以自己制定,對應即可。server.1中的這個1需要namenodeyw這個機器上的dataDir目錄中的myid檔案中的數值對應。server.2中的這個2需要和datanodeyw1這個機器上的dataDir目錄中的myid檔案中的數值對應。server.3中的這個3需要和datanodeyw2這個機器上的dataDir目錄中的myid檔案中的數值對應。當然,數值你可以隨便用,只要對應即可。2888和3888的埠號也可以隨便用,因為在不同機器上,用成一樣也無所

謂。

8、zookeeper正常結果驗證:


四、hbase 安裝配置

1、在namenode伺服器上將下載的hbase2.0.2.tar.gz 安裝包解壓至/opt/hadop/下


2、各個節點修改環境變數/etc/profile 及hadoop使用者下的.bash_profile檔案並使其生效


3、建立資料夾

mkdir -p /opt/hadoop/hbase/{tmp,pids}

4、在nodename上修改hbase配置(參照附件  )

vim /opt/hadoop/hbase-2.0.2/conf/hbase-env.sh
export HBASE_SSH_OPTS="-p 45685" #如果ssh埠預設不為22 則需要新增此行
export JAVA_HOME=/usr/java/jdk1.8.0_92
export HADOOP_HOME=/opt/hadoop/hadoop-2.7.7
export ZOOKEEPER_HOME=/opt/hadoop/zookeeper-3.4.10
export HBASE_HOME=/opt/hadoop/hbase-2.0.2
export HBASE_PID_DIR=/root/hbase/pids
export HBASE_MANAGES_ZK=false

  • hbase-site.xml

<configuration>
<property>
<name>hbase.rootdir</name>
<value>hdfs://namenodeyw:9000/hbase</value>
<description>The directory shared byregion servers.</description>
</property>
<property>
<name>hbase.zookeeper.property.clientPort</name>
<value>2181</value>
<description>Property from ZooKeeper'sconfig zoo.cfg. The port at which the clients will connect.
</description>
</property>
<property>
<name>zookeeper.session.timeout</name>
<value>120000</value>
</property>
<property>
<name>hbase.zookeeper.quorum</name>
<value>namenodeyw,datanodeyw1,datanodeyw2</value>
</property>
<property>
<name>hbase.tmp.dir</name>
<value>/opt/hadoop/hbase/tmp</value>
</property>
<property>
<name>hbase.cluster.distributed</name>
<value>true</value>
</property>
</configuration>
  • regionservers 根據配置regionservers,檔案中缺少datanodeyw1,則在datanodeyw1上啟動hbase,datanodeyw1作為hmaster服務

namenodeyw
datanodeyw2

5、如果系統ssh埠不為22 則需要修改配置

vim hbase-env.sh
export HBASE_SSH_OPTS="-p 45685"

6、將namenodeyw上修改完成的hbase-2.0.2 目錄同步至其他節點/opt/hadoop 路徑下

$scp -r -P 45685 hbase-2.0.2 datanodeyw1:/opt/hadoop/
$scp -r -P 45685 hbase-2.0.2 datanodeyw2:/opt/hadoop/

7、在datanodeyw1啟動hbase服務(根據配置regionservers線上,檔案中缺少datanodeyw1,則在datanodeyw1上啟動hbase檔案,則該節點作為hmaster服務

cd /opt/hadoop/hbase-2.0.2/bin
./start-hbase.sh


8、驗證啟動完成後檢視程序

datanodeyw1:

[[email protected] bin]$ jps
4835 HMaster #hbase 主節點
6667 Jps
25675 DataNode
30862 QuorumPeerMain #zookeeper
25807 NodeManager

datanodeyw2:

[[email protected] home]$ jps
24805 HRegionServer #hbase 守護程序
24485 QuorumPeerMain #zookeeper
24983 Jps
24057 DataNode
24171 NodeManager

namenodeyw:

[[email protected] ~]$ jps
2832 NodeManager
2387 DataNode
2248 NameNode
4072 HRegionServer
4251 Jps
3596 QuorumPeerMain #zookeeper
2716 ResourceManager
2558 SecondaryNameNode

9、web頁面查詢狀態

http://172.16.57.98:16010/master-status

五、zabbix監控新增

1. 任意一臺hadoop節點上,hadoop使用者下新增crontab -e

*/5 * * * * /opt/hadoop/hadoop-2.7.7/bin/hadoop dfsadmin -report > /tmp/hadoop.status
*/5 * * * * /bin/echo "status" |/opt/hadoop/hbase-2.0.2/bin/hbase shell > /tmp/hbase.status

2. 修改zabbix配置檔案zabbix_agentd.conf.d/hadoop.conf

  • hadoop1.x

vi zabbix_agentd.conf.d/hadoop.conf
#狀態監控key
UserParameter=dfs.status,cat /tmp/hadoop-status |grep "dead" |cut -d ' ' -f 6
UserParameter=hbase.status,cat /tmp/hbase-status |grep "server" |cut -d ' ' -f 1

  • hadoop2.7x

vi zabbix_agentd.conf.d/hadoop.conf
#狀態監控key
UserParameter=dfs.status,cat /tmp/hadoop.status |grep "Live datanodes"|awk -F"[()]" '{print $2}'
UserParameter=hbase.status,cat /tmp/hbase.status |grep "dead" |cut -d ',' -f 4|cut -d ' ' -f 2

3. 重啟zabbix-agentd服務

4. zabbix新增監控項

dfs.status 監控引數為datanode 節點掛掉後的告警

  • zabbix監控新增

image.png


  • dfs存在死亡節點處理

http://172.16.57.97:50070/dfshealth.html#tab-overview (#namenode)

  • 點選頁面上的 Dead Nodes 進入:

  • 啟動方式:

hadoop-daemon.sh start datanode

hbase.status 監控引數為hbase程序節點掛掉後的告警

  • zabbix監控新增

image.png


  • hbase 存在死亡節點處理

http://172.16.57.98:16010/master-status #(該連結地址為hmaster 程序所在伺服器IP及埠)

  • 頁面顯示 Dead Region Servers 中 hostname 即故障點伺服器。

  • 啟動方式:

hbase-daemon.sh start regionserver

6、FAQ

1 執行 start-all.sh 報錯

[[email protected] sbin]$ ./start-all.sh

This script is Deprecated. Instead use start-dfs.sh and start-yarn.sh

18/09/10 12:12:27 WARN util.NativeCodeLoader: Unable to load native-hadoop library for your platform... using builtin-java classes where applicable

Starting namenodes on [namenodeyw]

namenodeyw: starting namenode, logging to /opt/hadoop/hadoop-2.7.7/logs/hadoop-hadoop-namenode-namenodeyw.out

namenodeyw: starting datanode, logging to /opt/hadoop/hadoop-2.7.7/logs/hadoop-hadoop-datanode-namenodeyw.out

datanodeyw2: starting datanode, logging to /home/hadoop/hadoop-2.7.7/logs/hadoop-hadoop-datanode-datanodeyw2.out

datanodeyw1: starting datanode, logging to /opt/hadoop/hadoop-2.7.7/logs/hadoop-hadoop-datanode-datanodeyw1.out

datanodeyw2: [Fatal Error] core-site.xml:24:5: The markup in the document following the root element must be well-formed.

Starting secondary namenodes [0.0.0.0]

0.0.0.0: starting secondarynamenode, logging to /opt/hadoop/hadoop-2.7.7/logs/hadoop-hadoop-secondarynamenode-namenodeyw.out

18/09/10 12:12:42 WARN util.NativeCodeLoader: Unable to load native-hadoop library for your platform... using builtin-java classes where applicable

starting yarn daemons

starting resourcemanager, logging to /opt/hadoop/hadoop-2.7.7/logs/yarn-hadoop-resourcemanager-namenodeyw.out

datanodeyw2: starting nodemanager, logging to /home/hadoop/hadoop-2.7.7/logs/yarn-hadoop-nodemanager-datanodeyw2.out

namenodeyw: starting nodemanager, logging to /opt/hadoop/hadoop-2.7.7/logs/yarn-hadoop-nodemanager-namenodeyw.out

datanodeyw1: starting nodemanager, logging to /opt/hadoop/hadoop-2.7.7/logs/yarn-hadoop-nodemanager-datanodeyw1.out

datanodeyw2: [Fatal Error] core-site.xml:24:5: The markup in the document following the root element must be well-formed.

配置檔案格式錯誤導致:

2、zookeeper 狀態查詢報錯的問題

[[email protected] conf]$ /opt/hadoop/zookeeper-3.4.10/bin/zkServer.sh status

ZooKeeper JMX enabled by default

Using config: /opt/hadoop/zookeeper-3.4.10/bin/../conf/zoo.cfg

Error contacting service. It is probably not running.

解決:檢查myid 及zoo.cfg檔案是否配置錯誤

正常結果輸出:

2、問題描述

該問題轉自:https://www.cnblogs.com/zlslch/p/6418248.html

Unable to load native-hadoop library for your platform... using builtin-java classes where applicable(四十四)

Unable to load native-hadoop library for your platform... using builtin-java classes where applicable

[[email protected] native]$ pwd
/usr/local/hadoop/hadoop-2.6.0/lib/native
[[email protected] native]$ ls
libhadoop.a libhadooppipes.a libhadoop.so libhadoop.so.1.0.0 libhadooputils.a libhdfs.a libhdfs.so libhdfs.so.0.0.0


  其實,這個問題,要解決很簡單,我這裡是hadoop-2.6.0版本。

如果你也是hadoop2.6的可以下載下面這個:
http://dl.bintray.com/sequenceiq/sequenceiq-bin/hadoop-native-64-2.6.0.tar

若是其他的hadoop版本,下載下面這個:

http://dl.bintray.com/sequenceiq/sequenceiq-bin/hadoop-native-64-2.*.0.tar


[[email protected] native]$ tar -xvf hadoop-native-64-2.6.0.tar -C $HADOOP_HOME/lib/native

[[email protected] native]$ tar -xvf hadoop-native-64-2.6.0.tar -C $HADOOP_HOME/lib

以上,這兩個命令都要執行。

然後增加環境變數

[[email protected] native]# vim /etc/profile

增加下面的內容:

export HADOOP_COMMON_LIB_NATIVE_DIR=$HADOOP_HOME/lib/native
export HADOOP_OPTS="-Djava.library.path=$HADOOP_HOME/lib"


讓環境變數生效

[[email protected] native]# source /etc/profile



結果

  最後,這個問題成功解決了!