hadoop 2.7.7 安装(测试环境部署) hadoop2.x部署
hadoop 2.7.7 安装(测试环境部署) hadoop2.x部署
系统环境(censtos 6.5 ):
172.16.57.97 namenodeyw172.16.57.98 datanodeyw1172.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/networkNETWORKING=yesHOSTNAME=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/.sshssh-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
#jdkexport JAVA_HOME=/usr/java/jdk1.8.0_92export CLASSPATH=.:$JAVA_HOME/lib/tools.jarexport PATH=$JAVA_HOME/bin:$PATH
执行source /etc/profile 生效
5、设置/etc/selinux/config 为disable 重启系统
#vim /etc/selinux/configSELINUX=disabled
6、配置防火墙访问权限。
7、分别在三台服务器上添加主机名与IP地址映射 (通过root用户同步)
#vim /etc/hosts172.16.57.97 namenodeyw172.16.57.98 datanodeyw1172.16.57.238 datanodeyw2
二、安装hadoop 2.7.7
1、使用hadoop用户登录后,将hadoop压缩包解压在当前目录下,然后配置环境变量
cd /opt/hadooptar zxf hadoop-2.7.7.tar.gz
配置环境变量 /etc/profile 以及hadoop用户下的 .bash_profile 文件
#hadoop 2.7.7export HADOOP_HOME=/opt/hadoop/hadoop-2.7.7export PATH=$HADOOP_HOME/bin:$HADOOP_HOME/sbin:$PATH
执行命令source /etc/profile 使命令生效
2、hadoop配置修改
参照附件设置
3、配置修改
vi hadoop-env.shexport 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]$ jps1507 Jps1079 ResourceManager906 SecondaryNameNode731 DataNode1196 NodeManager589 NameNode
[hadoop@namenodeyw sbin]$ jps -l1524 sun.tools.jps.Jps1079 org.apache.hadoop.yarn.server.resourcemanager.ResourceManager906 org.apache.hadoop.hdfs.server.namenode.SecondaryNameNode731 org.apache.hadoop.hdfs.server.datanode.DataNode1196 org.apache.hadoop.yarn.server.nodemanager.NodeManager589 org.apache.hadoop.hdfs.server.namenode.NameNode
在datanodeyw1上启动的服务为:
[hadoop@datanodeyw1 ~]$ jps24103 NodeManager24346 Jps23965 DataNode
[hadoop@datanodeyw1 ~]$ jps -l24103 org.apache.hadoop.yarn.server.nodemanager.NodeManager24361 sun.tools.jps.Jps23965 org.apache.hadoop.hdfs.server.datanode.DataNode
在datanodeyw2上启动的服务为:
[hadoop@datanodeyw2 hadoop]$ jps23664 DataNode23781 NodeManager23902 Jps
[hadoop@datanodeyw2 hadoop]$ jps -l23664 org.apache.hadoop.hdfs.server.datanode.DataNode23781 org.apache.hadoop.yarn.server.nodemanager.NodeManager23914 sun.tools.jps.Jps
7、在hadoop上创建目录并上传文件验证
hadoop fs -mkdir -p /data/testhadoop 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 clusterhttp://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/myiddatanodeyw1: echo "2" >> /opt/hadoop/zookeeper/data/myiddatanodeyw2: 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.cfgdataDir=/opt/hadoop/zookeeper/datadataLogDir=/opt/hadoop/zookeeper/dataLogserver.1=namenodeyw:2888:3888server.2=datanodeyw1:2888:3888server.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.shexport HBASE_SSH_OPTS="-p 45685" #如果ssh端口默认不为22 则需要添加此行export JAVA_HOME=/usr/java/jdk1.8.0_92export HADOOP_HOME=/opt/hadoop/hadoop-2.7.7export ZOOKEEPER_HOME=/opt/hadoop/zookeeper-3.4.10export HBASE_HOME=/opt/hadoop/hbase-2.0.2export HBASE_PID_DIR=/root/hbase/pidsexport HBASE_MANAGES_ZK=false
hbase-site.xml
hbase.rootdir hdfs://namenodeyw:9000/hbase The directory shared byregion servers. hbase.zookeeper.property.clientPort 2181 Property from ZooKeeper'sconfig zoo.cfg. The port at which the clients will connect. zookeeper.session.timeout 120000 hbase.zookeeper.quorum namenodeyw,datanodeyw1,datanodeyw2 hbase.tmp.dir /opt/hadoop/hbase/tmp hbase.cluster.distributed true
regionservers (根据配置regionservers,文件中缺少datanodeyw1,则在datanodeyw1上启动hbase,datanodeyw1作为hmaster服务)
namenodeywdatanodeyw2
5、如果系统ssh端口不为22 则需要修改配置
vim hbase-env.shexport 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]$ jps4835 HMaster #hbase 主节点6667 Jps25675 DataNode30862 QuorumPeerMain #zookeeper25807 NodeManager
datanodeyw2:
[hadoop@datanodeyw2 home]$ jps24805 HRegionServer #hbase 守护进程24485 QuorumPeerMain #zookeeper24983 Jps24057 DataNode24171 NodeManager
namenodeyw:
[hadoop@namenodeyw ~]$ jps2832 NodeManager2387 DataNode2248 NameNode4072 HRegionServer4251 Jps3596 QuorumPeerMain #zookeeper2716 ResourceManager2558 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#状态监控keyUserParameter=dfs.status,cat /tmp/hadoop-status |grep "dead" |cut -d ' ' -f 6UserParameter=hbase.status,cat /tmp/hbase-status |grep "server" |cut -d ' ' -f 1
hadoop2.7x
vi zabbix_agentd.conf.d/hadoop.conf#状态监控keyUserParameter=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(四十四)
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
结果
最后,这个问题成功解决了!