大数据技术 Hadoop2.7.6完全分布式集群搭建
沉沙 2018-09-21 来源 : 阅读 889 评论 0

摘要:本篇教程探讨了大数据技术 Hadoop2.7.6完全分布式集群搭建,希望阅读本篇文章以后大家有所收获,帮助大家对大数据技术的理解更加深入。

本篇教程探讨了大数据技术 Hadoop2.7.6完全分布式集群搭建,希望阅读本篇文章以后大家有所收获,帮助大家对大数据技术的理解更加深入。

<

一 完全分布式集群搭建
Hadoop官方地址://hadoop.apache.org/
1  准备3台客户机
1.2 关闭防火墙,设置静态IP,主机名
关闭防火墙,设置静态IP,主机名此处略,参考  CentOS7.5之Linux安装及克隆
1.2 修改host文件
我们希望三个主机之间都能够使用主机名称的方式相互访问而不是IP,我们需要在hosts中配置其他主机的host。因此我们在主机的/etc/hosts下均进行如下配置:

[root@node21 ~]# vi /etc/hosts
配置主机host
127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4
::1 localhost localhost.localdomain localhost6 localhost6.localdomain6
192.168.100.21 node21
192.168.100.22 node22
192.168.100.23 node23
将配置发送到其他主机(同时在其他主机上配置)
[root@node21 ~]# scp -r /etc/hosts root@node22:/etc/
[root@node21 ~]# scp -r /etc/hosts root@node23:/etc/
测试
[root@node21 ~]# ping node21
[root@node21 ~]# ping node22
[root@node21 ~]# ping node23

1.3 添加用户账号

在所有的主机下均建立一个账号admin用来运行hadoop ,并将其添加至sudoers中
[root@node21 ~]# useradd admin    添加用户通过手动输入修改密码
[root@node21 ~]# passwd  admin  更改用户 admin 的密码
123456  passwd: 所有的身份验证令牌已经成功更新。
设置admin用户具有root权限  修改 /etc/sudoers 文件,找到下面一行,在root下面添加一行,如下所示:
[root@node21 ~]# visudo
## Allow root to run any commands anywhere
root    ALL=(ALL)     ALL
admin   ALL=(ALL)     ALL
修改完毕  :wq! 保存退出,现在可以用admin帐号登录,然后用命令 su - ,切换用户即可获得root权限进行操作。 

1.4 /opt目录下创建文件夹

1)在root用户下创建module、software文件夹
[root@node21 opt]# mkdir module
[root@node21 opt]# mkdir software
2)修改module、software文件夹的所有者
[root@node21 opt]# chown admin:admin module
[root@node21 opt]# chown admin:admin software
3)查看module、software文件夹的所有者
[root@node21 opt]# ll
total 0
drwxr-xr-x. 5 admin admin 64 May 27 00:24 module
drwxr-xr-x. 2 admin admin 267 May 26 11:56 software

2   安装配置jdk1.8

[deng@node21 ~]# rpm -qa|grep java   #查询是否安装java软件:
[deng@node21 ~]# rpm -e –nodeps 软件包   #如果安装的版本低于1.7,卸载该jdk
在线安装   wget --no-check-certificate --no-cookies --header "Cookie: oraclelicense=accept-securebackup-cookie"  //download.oracle.com/otn/java/jdk/8u144-b01/090f390dda5b47b9b721c7dfaa008135/jdk-8u144-linux-x64.tar.gz
这里使用本地下载然后 xftp上传到  /opt/software/ 下 
[root@node21 software]# tar zxvf  jdk-8u171-linux-x64.tar.gz  -C  /opt/module/
[root@node21 module]# mv jdk1.8.0_171 jdk1.8
设置JAVA_HOME  
vi /etc/profile
export  JAVA_HOME=/opt/module/jdk1.8
export  PATH=$PATH:$JAVA_HOME/bin:$JAVA_HOME/sbin
source  /etc/profile
向其他节点复制jdk
[root@node21 ~]# scp -r /opt/module/jdk1.8 root@node22:`pwd`
[root@node21 ~]# scp -r /opt/module/jdk1.8 root@node23:`pwd`
配置各个主机下jdk的环境变量,由于我的电脑上linux都是新安装的,环境变量相同,因此直接复制到了其他主机上。如果不同的主机的环境变量不同,请手动设置
[root@node21 ~]# scp /etc/profile root@node22:/etc/
[root@node21 ~]# scp /etc/profile root@node23:/etc/
在每个主机上都重新编译一下/etc/profile
[root@node21]# source /etc/profile
测试  java -version

3  设置SSH免密钥
关于ssh免密码的设置,要求每两台主机之间设置免密码,自己的主机与自己的主机之间也要求设置免密码。 这项操作可以在admin用户下执行,执行完毕公钥在/home/admin/.ssh/id_rsa.pub

[admin@node21 ~]# ssh-keygen -t rsa
[admin@node21 ~]# ssh-copy-id node21
[admin@node21 ~]# ssh-copy-id node22
[admin@node21 ~]# ssh-copy-id node23

node1与node2为namenode节点要相互免秘钥   HDFS的HA

[admin@node22 ~]# ssh-keygen -t rsa
[admin@node22 ~]# ssh-copy-id node22
[admin@node22 ~]# ssh-copy-id node21
[admin@node22 ~]# ssh-copy-id node23

node2与node3为yarn节点要相互免秘钥  YARN的HA

[admin@node23 ~]# ssh-keygen -t rsa
[admin@node23 ~]# ssh-copy-id node23
[admin@node23 ~]# ssh-copy-id node21
[admin@node23 ~]# ssh-copy-id node22 

4   安装hadoop集群
4.1  解压安装hadoop

[admin@node21 software]# tar zxvf hadoop-2.7.6.tar.gz -C /opt/module/

4.2  hadoop集群部署规划



节点名称
 NN1
 NN2
 DN
 RM
 NM


node21
NameNode  
 
DataNode
 
NodeManager


node22
 
SecondaryNameNode
DataNode
ResourceManager
NodeManager


node23
 
 
DataNode
 
NodeManager



5   配置hadoop集群
注意:配置文件在hadoop2.7.6/etc/hadoop/下
5.1 修改core-site.xml

[admin@node21 hadoop]$ vi core-site.xml


     
     fs.defaultFS
         hdfs://node21:9000
     


     
     hadoop.tmp.dir
     /opt/module/hadoop-2.7.6/data/full/tmp
     



5.2 修改hadoop-env.sh

[admin@node21  hadoop]$ vi hadoop-env.sh 
修改 export JAVA_HOME=/opt/module/jdk1.8

5.3 修改hdfs-site.xml

[admin@node21  hadoop]$ vi hdfs-site.xml


    
        dfs.replication
        2
    


    
        dfs.namenode.secondary.http-address
        node22:50090
    



5.4 修改slaves

[admin@node21  hadoop]$ vi slaves
node21
node22
node23

5.5 修改mapred-env.sh

[admin@node21 hadoop]$ vi mapred-env.sh
修改 export JAVA_HOME=/opt/module/jdk1.8

5.6 修改mapred-site.xml

[admin@node21 hadoop]# mv mapred-site.xml.template mapred-site.xml
[admin@node21 hadoop]$ vi mapred-site.xml


    
     mapreduce.framework.name
     yarn
    



5.7 修改yarn-env.sh

[admin@node21 hadoop]$ vi yarn-env.sh
修改 export JAVA_HOME=/opt/module/jdk1.8

5.8 修改yarn-site.xml

[admin@node21 hadoop]$ vi yarn-site.xml


     
        yarn.nodemanager.aux-services
        mapreduce_shuffle
     


     
        yarn.resourcemanager.hostname
        node22
     



5.9 分发hadoop到节点

[admin@node21 module]# scp -r hadoop-2.7.6/ admin@node22:`pwd`
[admin@node21 module]# scp -r hadoop-2.7.6/ admin@node23:`pwd`

5.10 配置环境变量

[admin@node21 ~]$ sudo vi /etc/profile
末尾追加
export  HADOOP_HOME=/opt/module/hadoop-2.7.6
export PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin
编译生效  source  /etc/profile

6  启动验证集群
6.1 启动集群
 如果集群是第一次启动,需要格式化namenode

[admin@node21 hadoop-2.7.6]$ hdfs namenode -format 


启动Hdfs:

[admin@node21 ~]# start-dfs.sh
Starting namenodes on [node21]
node21: starting namenode, logging to /opt/module/hadoop-2.7.6/logs/hadoop-root-namenode-node21.out
node21: starting datanode, logging to /opt/module/hadoop-2.7.6/logs/hadoop-root-datanode-node21.out
node22: starting datanode, logging to /opt/module/hadoop-2.7.6/logs/hadoop-root-datanode-node22.out
node23: starting datanode, logging to /opt/module/hadoop-2.7.6/logs/hadoop-root-datanode-node23.out
Starting secondary namenodes [node22]
node22: starting secondarynamenode, logging to /opt/module/hadoop-2.7.6/logs/hadoop-root-secondarynamenode-node22.out

启动Yarn: 注意:Namenode和ResourceManger如果不是同一台机器,不能在NameNode上启动 yarn,应该在ResouceManager所在的机器上启动yarn。

[admin@node22 ~]# start-yarn.sh
starting yarn daemons
starting resourcemanager, logging to /opt/module/hadoop-2.7.6/logs/yarn-root-resourcemanager-node22.out
node21: starting nodemanager, logging to /opt/module/hadoop-2.7.6/logs/yarn-root-nodemanager-node21.out
node23: starting nodemanager, logging to /opt/module/hadoop-2.7.6/logs/yarn-root-nodemanager-node23.out
node22: starting nodemanager, logging to /opt/module/hadoop-2.7.6/logs/yarn-root-nodemanager-node22.out

jps查看进程

[admin@node21 ~]# jps
1440 NameNode
1537 DataNode
1811 NodeManager
1912 Jps
[admin@node22 ~]# jps
1730 Jps
1339 ResourceManager
1148 DataNode
1198 SecondaryNameNode
1439 NodeManager
[admin@node23 ~]# jps
1362 Jps
1149 DataNode
1262 NodeManager

web页面访问

6.2 Hadoop启动停止方式

1)各个服务组件逐一启动
分别启动hdfs组件: hadoop-daemon.sh  start|stop  namenode|datanode|secondarynamenode
启动yarn:yarn-daemon.sh  start|stop  resourcemanager|nodemanager

2)各个模块分开启动(配置ssh是前提)常用
start|stop-dfs.sh     start|stop-yarn.sh

3)全部启动(不建议使用)
start|stop-all.sh

6.3 集群时间同步(略)
 参考Ntp时间服务器与定时任务Crontab     https://www.cnblogs.com/frankdeng/p/9005691.html
二 完全分布式集群(HA)
1 环境准备
1.1 修改IP
1.2 修改主机名及主机名和IP地址的映射
1.3 关闭防火墙
1.4 ssh免密登录
1.5 安装JDK,配置环境变量
2集群规划



节点名称
NN
JJN
DN
ZKFC
ZK
RM
NM
















































































node21
NameNode
JournalNode
DataNode
ZKFC
Zookeeper
 
NodeManager
















































































node22
NameNode
JournalNode
DataNode
ZKFC
ZooKeeper
ResourceManager
NodeManager
















































































node23
 
JournalNode
DataNode
 
ZooKeeper
ResourceManager
NodeManager













































































































































































































































3 安装配置Zookeeper集群
0)集群规划
在node21、node22和node23三个节点上部署Zookeeper。
1)解压安装
(1)解压zookeeper安装包到/opt/module/目录下

[admin@node21 software]$ tar -zxvf zookeeper-3.4.12.tar.gz -C /opt/module/

(2)在/opt/module/zookeeper-3.4.12/这个目录下创建Data

[admin@node21 zookeeper-3.4.12]# mkdir  Data

(3)重命名/opt/module/zookeeper-3.4.12/conf这个目录下的zoo_sample.cfg为zoo.cfg

[admin@node21 conf]# mv zoo_sample.cfg zoo.cfg

2)配置zoo.cfg文件
(1)具体配置,修改dateDir

dataDir=/opt/module/zookeeper-3.4.12/Data

末尾增加如下配置

server.1=node21:2888:3888
server.2=node22:2888:3888
server.3=node23:2888:3888

(2)配置参数解读
Server.A=B:C:D。
A是一个数字,表示这个是第几号服务器;
B是这个服务器的ip地址;
C是这个服务器与集群中的Leader服务器交换信息的端口;
D是万一集群中的Leader服务器挂了,需要一个端口来重新进行选举,选出一个新的Leader,而这个端口就是用来执行选举时服务器相互通信的端口。
集群模式下配置一个文件myid,这个文件在dataDir目录下,这个文件里面有一个数据就是A的值,Zookeeper启动时读取此文件,拿到里面的数据与zoo.cfg里面的配置信息比较从而判断到底是哪个server。
3)集群操作
(1)在/opt/module/zookeeper-3.4.12/Data目录下创建一个myid的文件

[admin@node21 Data]# touch myid

(2)编辑myid文件, 在文件中添加与server对应的编号:如 1   

[admin@node21 Data]# vi myid

(3)拷贝配置好的zookeeper到其他机器上

[admin@node21 module]# scp -r zookeeper-3.4.12/ admin@node22:/opt/module/
[admin@node21 module]# scp -r zookeeper-3.4.12/ admin@node23:/opt/module/

并分别修改node22,node23中myid文件中内容为2、3
(4)分别启动zookeeper

[admin@node21 zookeeper-3.4.12]# bin/zkServer.sh start
[admin@node22 zookeeper-3.4.12]# bin/zkServer.sh start
[admin@node23 zookeeper-3.4.12]# bin/zkServer.sh start

(5)查看状态

[admin@node21 zookeeper-3.4.12]# bin/zkServer.sh status
ZooKeeper JMX enabled by default
Using config: /opt/module/zookeeper-3.4.12/bin/../conf/zoo.cfg
Mode: follower
[admin@node22 zookeeper-3.4.12]# bin/zkServer.sh status
ZooKeeper JMX enabled by default
Using config: /opt/module/zookeeper-3.4.12/bin/../conf/zoo.cfg
Mode: follower
[admin@node23 zookeeper-3.4.12]# bin/zkServer.sh status
ZooKeeper JMX enabled by default
Using config: /opt/module/zookeeper-3.4.12/bin/../conf/zoo.cfg
Mode: leader

4 安装配置Hadoop集群
4.1 解压安装Hadoop
解压 hadoop-2.7.6到/opt/module/目录下

[admin@node21 software]# tar zxvf hadoop-2.7.6.tar.gz -C /opt/module/

4.2 配置Hadoop集群
配置文件都在/opt/module/hadoop-2.7.6/etc/hadoop/下
4.2.1 修改hadoop-env.sh, mapred-env.sh ,yarn-env.sh 的JAVA环境变量

export JAVA_HOME=/opt/module/jdk1.8

4.2.2 修改 core-site.xml

[admin@node21 hadoop]$ vi core-site.xml



   fs.defaultFS
   hdfs://mycluster



  hadoop.tmp.dir
  /opt/module/hadoop-2.7.6/data/ha/tmp



     ha.zookeeper.quorum
     node21:2181,node22:2181,node23:2181

 

4.2.3 修改hdfs-site.xml

[admin@node21  hadoop]$ vi hdfs-site.xml



dfs.replication
2



  dfs.nameservices
  mycluster



   dfs.ha.namenodes.mycluster
   nn1,nn2



   dfs.namenode.rpc-address.mycluster.nn1
   node21:8020



   dfs.namenode.rpc-address.mycluster.nn2
   node22:8020



   dfs.namenode.http-address.mycluster.nn1
   node21:50070



    dfs.namenode.http-address.mycluster.nn2
    node22:50070



    dfs.namenode.shared.edits.dir
    qjournal://node21:8485;node22:8485;node23:8485/mycluster



    dfs.ha.fencing.methods
    sshfence



    dfs.ha.fencing.ssh.private-key-files
    /home/admin/.ssh/id_rsa



   dfs.journalnode.edits.dir
   /opt/module/hadoop-2.7.6/data/ha/jn



   dfs.permissions.enable
   false



   dfs.client.failover.proxy.provider.mycluster
   org.apache.hadoop.hdfs.server.namenode.ha.ConfiguredFailoverProxyProvider



   dfs.ha.automatic-failover.enabled
   true
 


4.2.4 修改mapred-site.xml

[admin@node1 hadoop]# mv mapred-site.xml.template mapred-site.xml
[admin@node1 hadoop]# vi  mapred-site.xml


 
  mapreduce.framework.name
  yarn
 


     
    mapreduce.jobhistory.address   
    node21:10020   
  
   

     
    mapreduce.jobhistory.webapp.address   
    node21:19888   
  

    
  
    mapreduce.jobhistory.joblist.cache.size
    20000
  

 
  
    mapreduce.jobhistory.done-dir
    ${yarn.app.mapreduce.am.staging-dir}/history/done
  

  
    mapreduce.jobhistory.intermediate-done-dir
    ${yarn.app.mapreduce.am.staging-dir}/history/done_intermediate
  

  
    yarn.app.mapreduce.am.staging-dir
    /tmp/hadoop-yarn/staging
  



4.2.5 修改 slaves

[admin@node21  hadoop]$ vi slaves
node21
node22
node23

4.2.6 修改yarn-site.xml 

[admin@node21 hadoop]$ vi yarn-site.xml


 
        yarn.nodemanager.aux-services
        mapreduce_shuffle
    

    
    
        yarn.resourcemanager.ha.enabled
        true
    

    
    
        yarn.resourcemanager.cluster-id
        rmCluster
    

    
        yarn.resourcemanager.ha.rm-ids
        rm1,rm2
    

    
        yarn.resourcemanager.hostname.rm1
        node22
    

    
        yarn.resourcemanager.hostname.rm2
        node23
    

    
    
        yarn.resourcemanager.zk-address
        node21:2181,node22:2181,node23:2181
    

    
    
        yarn.resourcemanager.recovery.enabled
        true
    

    
    
        yarn.resourcemanager.store.class    
        org.apache.hadoop.yarn.server.resourcemanager.recovery.ZKRMStateStore
    



4.2.6 拷贝hadoop到其他节点

[admin@node21 module]# scp -r hadoop-2.7.6/ admin@node22:/opt/module/
[admin@node21 module]# scp -r hadoop-2.7.6/ admin@node23:/opt/module/

4.2.7 配置Hadoop环境变量

[admin@node21 ~]$ sudo vi /etc/profile
末尾追加
export  HADOOP_HOME=/opt/module/hadoop-2.7.6
export PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin
编译生效  source  /etc/profile

5 启动集群
1)在各个JournalNode节点上,输入以下命令启动journalnode服务:(zookeeper已启动)

[admin@node21 ~]$ sbin/hadoop-daemon.sh start journalnode
[admin@node22 ~]$ sbin/hadoop-daemon.sh start journalnode
[admin@node23 ~]$ sbin/hadoop-daemon.sh start journalnode

启动Journalnde是为了创建/data/ha/jn,此时jn里面是空的
 
2)在[nn1]上,对namenode进行格式化,并启动:

[admin@node21 ~]$ bin/hdfs namenode -format


格式化namenode,此时jn里面会产生集群ID等信息

另外,/data/ha/tmp也回产生如下信息

启动nn1上namenode

[admin@node21 current]$ hadoop-daemon.sh  start namenode
starting namenode, logging to /opt/module/hadoop-2.7.6/logs/hadoop-admin-namenode-node21.out

3)在[nn2]上,同步nn1的元数据信息:

[admin@node22 ~]$ bin/hdfs namenode -bootstrapStandby


4)启动[nn2]:

[admin@node22 ~]$ sbin/hadoop-daemon.sh start namenode

5)在[nn1]上,启动所有datanode

[admin@node21 ~]$ sbin/hadoop-daemons.sh start datanode

6)查看web页面此时显示 

 
7)手动切换状态,在各个NameNode节点上启动DFSZK Failover Controller,先在哪台机器启动,哪个机器的NameNode就是Active NameNode

[admin@node21 ~]$ sbin/hadoop-daemin.sh start zkfc
[admin@node22 ~]$ sbin/hadoop-daemin.sh start zkfc

或者强制手动其中一个节点变为Active

[admin@node21 data]$ hdfs haadmin -transitionToActive nn1 --forcemanual 

Web页面查看
 
8)自动切换状态,需要初始化HA在Zookeeper中状态,停掉hdfs服务,随便找一台zookeeper的安装节点

[admin@node21 current]$  bin/hdfs zkfc -formatZK


查看,此时会产生一个hadoop-ha的目录

[root@node22 ~]# zkCli.sh  


启动hdfs服务,查看namenode状态

[admin@node21 ~]$ sbin/start-hdfs.sh

9)验证
(1)将Active NameNode进程kill
kill -9 namenode的进程id
(2)将Active NameNode机器断开网络
service network stop
如果测试不成功,则可能是配置错误。检查zkfc守护进程以及NameNode守护进程的日志,以便进一步诊断问题。
10)启动yarn
(1)在node22中执行:

[admin@node22 ~]$ sbin/start-yarn.sh

(2)在node23中执行:

[admin@node23 ~]$ sbin/yarn-daemon.sh start resourcemanager 

(3)查看服务状态

[admin@node22 ~]$ yarn rmadmin -getServiceState rm1
active
[admin@node22 ~]$ yarn rmadmin -getServiceState rm2
standby


4) 验证高可用(略)
6 测试集群
1)查看进程

[admin@node21 ~]$ start-dfs.sh 
[admin@node22 ~]$ start-yarn.sh 
[admin@node23 ~]$ yarn-daemon.sh start resourcemanager


[admin@node21 ~]$ jps
11298 NodeManager
10868 DataNode
11065 JournalNode
11210 DFSZKFailoverController
1276 QuorumPeerMain
11470 NameNode
11436 Jps

[admin@node22 ~]$ jps
7168 DataNode
7476 ResourceManager
7941 Jps
7271 JournalNode
1080 QuorumPeerMain
7352 DFSZKFailoverController
7594 NodeManager
7099 NameNode

[admin@node23 ~]$ jps
3554 ResourceManager
3204 DataNode
3301 JournalNode
3606 Jps
3384 NodeManager
1097 QuorumPeerMain

2)任务提交
 2.1 上传文件到集群

[admin@node21 ~]$ hadoop fs -mkdir -p /user/admin/input
[admin@node21 ~]$ mkdir -p  /opt/wcinput/
[admin@node21 ~]$ vi  /opt/wcinput/wc.txt 
[admin@node21 ~]$ hadoop fs -put  /opt/wcinput/wc.txt /user/admin/input

wc.txt 文本内容为


hadoop spark   storm
hbase hive sqoop
hadoop flink flume
spark hadoop  

wc.txt
2.2 上传文件后查看文件存放在什么位置

文件存储路径
[admin@node21 subdir0]$ pwd
/opt/module/hadoop-2.7.6/data/ha/tmp/dfs/data/current/BP-1244373306-192.168.100.21-1527653416622/current/finalized/subdir0/subdir0
查看文件内容
[admin@node21 subdir0]$ cat blk_1073741825
hadoop spark   storm
hbase hive sqoop
hadoop flink flume
spark hadoop   

2.3 下载文件

[admin@node21 opt]$ hadoop fs -get /user/admin/input/wc.txt

2.4 执行wordcount程序

[admin@node21 ~]$ hadoop jar /opt/module/hadoop-2.7.6/share/hadoop/mapreduce/hadoop-mapreduce-examples-2.7.6.jar wordcount /user/admin/input /user/admin/output

执行过程


18/05/30 02:51:39 INFO input.FileInputFormat: Total input paths to process : 1
18/05/30 02:51:40 INFO mapreduce.JobSubmitter: number of splits:1
18/05/30 02:51:40 INFO mapreduce.JobSubmitter: Submitting tokens for job: job_1527660052824_0001
18/05/30 02:51:42 INFO impl.YarnClientImpl: Submitted application application_1527660052824_0001
18/05/30 02:51:43 INFO mapreduce.Job: The url to track the job: //node22:8088/proxy/application_1527660052824_0001/
18/05/30 02:51:43 INFO mapreduce.Job: Running job: job_1527660052824_0001
18/05/30 02:52:33 INFO mapreduce.Job: Job job_1527660052824_0001 running in uber mode : false
18/05/30 02:52:33 INFO mapreduce.Job:  map 0% reduce 0%
18/05/30 02:53:04 INFO mapreduce.Job:  map 100% reduce 0%
18/05/30 02:53:17 INFO mapreduce.Job:  map 100% reduce 100%
18/05/30 02:53:19 INFO mapreduce.Job: Job job_1527660052824_0001 completed successfully
18/05/30 02:53:19 INFO mapreduce.Job: Counters: 49
    File System Counters
        FILE: Number of bytes read=102
        FILE: Number of bytes written=250513
        FILE: Number of read operations=0
        FILE: Number of large read operations=0
        FILE: Number of write operations=0
        HDFS: Number of bytes read=188
        HDFS: Number of bytes written=64
        HDFS: Number of read operations=6
        HDFS: Number of large read operations=0
        HDFS: Number of write operations=2
    Job Counters 
        Launched map tasks=1
        Launched reduce tasks=1
        Data-local map tasks=1
        Total time spent by all maps in occupied slots (ms)=25438
        Total time spent by all reduces in occupied slots (ms)=10815
        Total time spent by all map tasks (ms)=25438
        Total time spent by all reduce tasks (ms)=10815
        Total vcore-milliseconds taken by all map tasks=25438
        Total vcore-milliseconds taken by all reduce tasks=10815
        Total megabyte-milliseconds taken by all map tasks=26048512
        Total megabyte-milliseconds taken by all reduce tasks=11074560
    Map-Reduce Framework
        Map input records=4
        Map output records=11
        Map output bytes=112
        Map output materialized bytes=102
        Input split bytes=105
        Combine input records=11
        Combine output records=8
        Reduce input groups=8
        Reduce shuffle bytes=102
        Reduce input records=8
        Reduce output records=8
        Spilled Records=16
        Shuffled Maps =1
        Failed Shuffles=0
        Merged Map outputs=1
        GC time elapsed (ms)=558
        CPU time spent (ms)=8320
        Physical memory (bytes) snapshot=308072448
        Virtual memory (bytes) snapshot=4159348736
        Total committed heap usage (bytes)=165810176
    Shuffle Errors
        BAD_ID=0
        CONNECTION=0
        IO_ERROR=0
        WRONG_LENGTH=0
        WRONG_MAP=0
        WRONG_REDUCE=0
    File Input Format Counters 
        Bytes Read=83
    File Output Format Counters 
        Bytes Written=64

View Code
下载查看

[admin@node21 wcoutput]$ hadoop fs -get /user/admin/output/part-r-00000
[admin@node21 wcoutput]$ ll
total 4
-rw-r--r-- 1 admin admin 64 May 30 02:58 part-r-00000
[admin@node21 wcoutput]$ cat part-r-00000 
flink    1
flume    1
hadoop    3
hbase    1
hive    1
spark    2
sqoop    1
storm    1

三 配置集群常见错误
1 自动故障转移错误
1.1 两台namenode之间不能通信,kill掉一台Active的namenode节点,另外一台standby不能切换Active
查看namenode日志 或者zkfc日志,nn1 连接 nn2 8020失败

 原因分析:若服务器是最小化安装centos时,有可能系统没有fuster程序,那么跳过这个安装步骤直接进行后面的操作时,将有可能出现以下问题:
node21作为主节点时,kill掉node21上的NameNode和ResourceManager进程时,可以实现故障转移,node22将从stanby状态自动变成active状态;但是当node22作为主节点时,若kill掉node22上的进程,node21上的进程状态却还是stanby,并不能实现故障自动转移。原因是我们在 hdfs-site.xml中配置了当集群需要故障自动转移时采用SSH方式进行,而因为缺少fuster程序,将在zkfc的日志文件中发现如下错误

PATH=$PATH:/sbin:/usr/sbin fuser -v -k -n tcp 9000 via ssh: bash: fuser: 未找到命令
Unable to fence service by any configured method
java.lang.RuntimeException: Unable to fence NameNode at node22/192.168.100.22:8020

提示未找到fuster程序,导致无法进行fence,所以可以通过如下命令来安装,Psmisc软件包中包含了fuster程序:

//分别在node21、node22、node23上执行
sudo yum install psmisc

重启Hadoop服务验证成功。
2 HDFS创建目录报错
Hadoop2.7.6在安装成功后,start-dfs.sh启动后,在HDFS创建目录报错:
WARN util.NativeCodeLoader: Unable to load native-hadoop library for your platform... using builtin-java classes where applicable
在/etc/profile文件中配置如下环境变量

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

需要将$HADOOP_HOME/lib/native中的文件copy到$HADOOP_HOME/lib中    

本文由职坐标整理发布,学习更多的大数据技术相关知识,请关注职坐标大技术云计算大技术技术频道!

本文由 @沉沙 发布于职坐标。未经许可,禁止转载。
喜欢 | 0 不喜欢 | 0
看完这篇文章有何感觉?已经有0人表态,0%的人喜欢 快给朋友分享吧~
评论(0)
后参与评论

您输入的评论内容中包含违禁敏感词

我知道了

助您圆梦职场 匹配合适岗位
验证码手机号,获得海同独家IT培训资料
选择就业方向:
人工智能物联网
大数据开发/分析
人工智能Python
Java全栈开发
WEB前端+H5

请输入正确的手机号码

请输入正确的验证码

获取验证码

您今天的短信下发次数太多了,明天再试试吧!

提交

我们会在第一时间安排职业规划师联系您!

您也可以联系我们的职业规划师咨询:

小职老师的微信号:z_zhizuobiao
小职老师的微信号:z_zhizuobiao

版权所有 职坐标-一站式IT培训就业服务领导者 沪ICP备13042190号-4
上海海同信息科技有限公司 Copyright ©2015 www.zhizuobiao.com,All Rights Reserved.
 沪公网安备 31011502005948号    

©2015 www.zhizuobiao.com All Rights Reserved

208小时内训课程