您好,登錄后才能下訂單哦!
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 hadoop@172.16.57.97" (兩兩互通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、執行啟動命令:
啟動hadoop之前jps查看進程為空
執行 start-all.sh 后 進程表為如下:
在namenode上啟動的服務有以下
[hadoop@namenodeyw sbin]$ jps 1507 Jps 1079 ResourceManager 906 SecondaryNameNode 731 DataNode 1196 NodeManager 589 NameNode
[hadoop@namenodeyw 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上啟動的服務為:
[hadoop@datanodeyw1 ~]$ jps 24103 NodeManager 24346 Jps 23965 DataNode
[hadoop@datanodeyw1 ~]$ jps -l 24103 org.apache.hadoop.yarn.server.nodemanager.NodeManager 24361 sun.tools.jps.Jps 23965 org.apache.hadoop.hdfs.server.datanode.DataNode
在datanodeyw2上啟動的服務為:
[hadoop@datanodeyw2 hadoop]$ jps 23664 DataNode 23781 NodeManager 23902 Jps
[hadoop@datanodeyw2 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集群
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:
[hadoop@datanodeyw1 bin]$ jps 4835 HMaster #hbase 主節點 6667 Jps 25675 DataNode 30862 QuorumPeerMain #zookeeper 25807 NodeManager
datanodeyw2:
[hadoop@datanodeyw2 home]$ jps 24805 HRegionServer #hbase 守護進程 24485 QuorumPeerMain #zookeeper 24983 Jps 24057 DataNode 24171 NodeManager
namenodeyw:
[hadoop@namenodeyw ~]$ 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監控添加
dfs存在死亡節點處理
http://172.16.57.97:50070/dfshealth.html#tab-overview (#namenode)
點擊頁面上的 Dead Nodes 進入:
啟動方式:
hadoop-daemon.sh start datanode
hbase.status 監控參數為hbase進程節點掛掉后的告警
zabbix監控添加
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 報錯
[hadoop@namenodeyw 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 狀態查詢報錯的問題
[hadoop@namenodeyw 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
[hadoop@djt002 native]$ pwd
/usr/local/hadoop/hadoop-2.6.0/lib/native
[hadoop@djt002 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
[hadoop@djt002 native]$ tar -xvf hadoop-native-64-2.6.0.tar -C $HADOOP_HOME/lib/native
[hadoop@djt002 native]$ tar -xvf hadoop-native-64-2.6.0.tar -C $HADOOP_HOME/lib
以上,這兩個命令都要執行。
然后增加環境變量
[root@djt002 native]# vim /etc/profile
增加下面的內容:
export HADOOP_COMMON_LIB_NATIVE_DIR=$HADOOP_HOME/lib/native
export HADOOP_OPTS="-Djava.library.path=$HADOOP_HOME/lib"
讓環境變量生效
[root@djt002 native]# source /etc/profile
結果
最后,這個問題成功解決了!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。