一 完全分布式集群搭建

Hadoop官方地址:http://hadoop.apache.org/

1  准备3台客户机

1.2 关闭防火墙,设置静态IP,主机名

关闭防火墙,设置静态IP,主机名此处略,参考  Linux之CentOS7.5安装及克隆

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" http://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   安装hadoop集群

3.1 集群部署规划

节点名称  NN1  NN2  DN  RM  NM
node21 NameNode     DataNode   NodeManager
node22   SecondaryNameNode DataNode ResourceManager NodeManager
node23     DataNode   NodeManager

3.2 设置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 

3.3  解压安装hadoop

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

4   配置hadoop集群

注意:配置文件在hadoop2.7.6/etc/hadoop/下

4.1 修改core-site.xml

[admin@node21 hadoop]$ vi core-site.xml
<configuration>
<!-- 指定HDFS中NameNode的地址 -->
<property>
<name>fs.defaultFS</name>
<value>hdfs://node21:9000</value>
</property>
<!-- 指定hadoop运行时产生文件的存储目录 -->
<property>
<name>hadoop.tmp.dir</name>
<value>/opt/module/hadoop-2.7.6/data/full/tmp</value>
</property>
</configuration>

4.2 修改hadoop-env.sh

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

4.3 修改hdfs-site.xml

[admin@node21  hadoop]$ vi hdfs-site.xml
<configuration>
<!-- 设置dfs副本数,不设置默认是3个 -->
<property>
<name>dfs.replication</name>
<value>2</value>
</property>
<!-- 设置secondname的端口 -->
<property>
<name>dfs.namenode.secondary.http-address</name>
<value>node22:50090</value>
</property>
</configuration>

4.4 修改slaves

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

4.5 修改mapred-env.sh

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

4.6 修改mapred-site.xml

[admin@node21 hadoop]# mv mapred-site.xml.template mapred-site.xml
[admin@node21 hadoop]$ vi mapred-site.xml
<configuration>
<!-- 指定mr运行在yarn上 -->
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
</configuration>

4.7 修改yarn-env.sh

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

4.8 修改yarn-site.xml

[admin@node21 hadoop]$ vi yarn-site.xml
<configuration>
<!-- reducer获取数据的方式 -->
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
<!-- 指定YARN的ResourceManager的地址 -->
<property>
<name>yarn.resourcemanager.hostname</name>
<value>node22</value>
</property>
</configuration>

4.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`

4.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

5  启动验证集群

5.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页面访问

5.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

5.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集群

安装详解参考 : CentOS7.5搭建Zookeeper集群与命令行操作

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
<configuration>
<!-- 把两个NameNode的地址组装成一个集群mycluster -->
<property>
<name>fs.defaultFS</name>
<value>hdfs://mycluster</value>
</property>
<!-- 指定hadoop运行时产生文件的存储目录 -->
<property>
<name>hadoop.tmp.dir</name>
<value>/opt/module/hadoop-2.7.6/data/ha/tmp</value>
</property>
<!-- 指定ZKFC故障自动切换转移 -->
<property>
<name>ha.zookeeper.quorum</name>
<value>node21:2181,node22:2181,node23:2181</value>
</property>
</configuration> 

4.2.3 修改hdfs-site.xml

[admin@node21  hadoop]$ vi hdfs-site.xml
<configuration>
<!-- 设置dfs副本数,默认3个 -->
<property>
<name>dfs.replication</name>
<value>2</value>
</property>
<!-- 完全分布式集群名称 -->
<property>
<name>dfs.nameservices</name>
<value>mycluster</value>
</property>
<!-- 集群中NameNode节点都有哪些 -->
<property>
<name>dfs.ha.namenodes.mycluster</name>
<value>nn1,nn2</value>
</property>
<!-- nn1的RPC通信地址 -->
<property>
<name>dfs.namenode.rpc-address.mycluster.nn1</name>
<value>node21:8020</value>
</property>
<!-- nn2的RPC通信地址 -->
<property>
<name>dfs.namenode.rpc-address.mycluster.nn2</name>
<value>node22:8020</value>
</property>
<!-- nn1的http通信地址 -->
<property>
<name>dfs.namenode.http-address.mycluster.nn1</name>
<value>node21:50070</value>
</property>
<!-- nn2的http通信地址 -->
<property>
<name>dfs.namenode.http-address.mycluster.nn2</name>
<value>node22:50070</value>
</property>
<!-- 指定NameNode元数据在JournalNode上的存放位置 -->
<property>
<name>dfs.namenode.shared.edits.dir</name>
<value>qjournal://node21:8485;node22:8485;node23:8485/mycluster</value>
</property>
<!-- 配置隔离机制,即同一时刻只能有一台服务器对外响应 -->
<property>
<name>dfs.ha.fencing.methods</name>
<value>sshfence</value>
</property>
<!-- 使用隔离机制时需要ssh无秘钥登录-->
<property>
<name>dfs.ha.fencing.ssh.private-key-files</name>
<value>/home/admin/.ssh/id_rsa</value>
</property>
<!-- 声明journalnode服务器存储目录-->
<property>
<name>dfs.journalnode.edits.dir</name>
<value>/opt/module/hadoop-2.7.6/data/ha/jn</value>
</property>
<!-- 关闭权限检查-->
<property>
<name>dfs.permissions.enable</name>
<value>false</value>
</property>
<!-- 访问代理类:client,mycluster,active配置失败自动切换实现方式-->
<property>
<name>dfs.client.failover.proxy.provider.mycluster</name>
<value>org.apache.hadoop.hdfs.server.namenode.ha.ConfiguredFailoverProxyProvider</value>
</property>
<!-- 配置自动故障转移-->
<property>
<name>dfs.ha.automatic-failover.enabled</name>
<value>true</value>
</property> 
<configuration>

4.2.4 修改mapred-site.xml

[admin@node1 hadoop]# mv mapred-site.xml.template mapred-site.xml
[admin@node1 hadoop]# vi mapred-site.xml
<configuration>
<!-- 指定mr框架为yarn方式 -->
 <property>
  <name>mapreduce.framework.name</name>
  <value>yarn</value>
 </property>
<!-- 指定mr历史服务器主机,端口 -->
<property>
<name>mapreduce.jobhistory.address</name>
<value>node21:10020</value>
</property>
<!-- 指定mr历史服务器WebUI主机,端口 -->
<property>
<name>mapreduce.jobhistory.webapp.address</name>
<value>node21:19888</value>
</property>
<!-- 历史服务器的WEB UI上最多显示20000个历史的作业记录信息 -->
<property>
<name>mapreduce.jobhistory.joblist.cache.size</name>
<value>20000</value>
</property>
<!--配置作业运行日志 -->
<property>
<name>mapreduce.jobhistory.done-dir</name>
<value>${yarn.app.mapreduce.am.staging-dir}/history/done</value>
</property>
<property>
<name>mapreduce.jobhistory.intermediate-done-dir</name>
<value>${yarn.app.mapreduce.am.staging-dir}/history/done_intermediate</value>
</property>
<property>
<name>yarn.app.mapreduce.am.staging-dir</name>
<value>/tmp/hadoop-yarn/staging</value>
</property>
</configuration>

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
<configuration>
<!-- reducer获取数据的方式 -->
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
<!--启用resourcemanager ha-->
<property>
<name>yarn.resourcemanager.ha.enabled</name>
<value>true</value>
</property>
<!--声明两台resourcemanager的地址-->
<property>
<name>yarn.resourcemanager.cluster-id</name>
<value>rmCluster</value>
</property>
<property>
<name>yarn.resourcemanager.ha.rm-ids</name>
<value>rm1,rm2</value>
</property>
<property>
<name>yarn.resourcemanager.hostname.rm1</name>
<value>node22</value>
</property>
<property>
<name>yarn.resourcemanager.hostname.rm2</name>
<value>node23</value>
</property>
<!--指定zookeeper集群的地址-->
<property>
<name>yarn.resourcemanager.zk-address</name>
<value>node21:2181,node22:2181,node23:2181</value>
</property>
<!--启用自动恢复-->
<property>
<name>yarn.resourcemanager.recovery.enabled</name>
<value>true</value>
</property>
<!--指定resourcemanager的状态信息存储在zookeeper集群-->
<property>
<name>yarn.resourcemanager.store.class</name>
<value>org.apache.hadoop.yarn.server.resourcemanager.recovery.ZKRMStateStore</value>
</property>
</configuration>

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 文本内容为

 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

执行过程

下载查看

[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服务验证成功。

2HDFS创建目录报错

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中

CentOS7.5搭建Hadoop2.7.6完全分布式集群的更多相关文章

  1. Hadoop(二)CentOS7.5搭建Hadoop2.7.6完全分布式集群

    一 完全分布式集群(单点) Hadoop官方地址:http://hadoop.apache.org/ 1  准备3台客户机 1.1防火墙,静态IP,主机名 关闭防火墙,设置静态IP,主机名此处略,参考 ...

  2. Centos7.5搭建Hadoop2.8.5完全分布式集群部署

    一.基础环境设置 1. 准备4台客户机(VMware虚拟机) 系统版本:Centos7.5 节点配置: 192.168.208.128 --Master 192.168.208.129 --Slave ...

  3. 搭建Hadoop2.7.1的分布式集群

    Hadoop 2.7.1 (2015-7-6更新),hadoop的环境配置不是特别的复杂,但是确实有很多细节需要注意,不然会造成许多配置错误的情况.尽量保证一次配置正确防止反复修改. 网上教程有很多关 ...

  4. # 从零開始搭建Hadoop2.7.1的分布式集群

    Hadoop 2.7.1 (2015-7-6更新),Hadoop的环境配置不是特别的复杂,可是确实有非常多细节须要注意.不然会造成很多配置错误的情况.尽量保证一次配置正确防止重复改动. 网上教程有非常 ...

  5. Docker中搭建Hadoop-2.6单机伪分布式集群

    1 获取一个简单的Docker系统镜像,并建立一个容器. 1.1 这里我选择下载CentOS镜像 docker pull centos 1.2 通过docker tag命令将下载的CentOS镜像名称 ...

  6. 基于hadoop2.6.0搭建5个节点的分布式集群

    1.前言 我们使用hadoop2.6.0版本配置Hadoop集群,同时配置NameNode+HA.ResourceManager+HA,并使用zookeeper来管理Hadoop集群 2.规划 1.主 ...

  7. 搭建hbase1.2.5完全分布式集群

    简介 有一段时间,没写博客了,因为公司开发分布式调用链追踪系统,用到hbase,在这里记录一下搭建过程 1.集群如下: ip 主机名 角色 192.168.6.130 node1.jacky.com ...

  8. 超详细从零记录Hadoop2.7.3完全分布式集群部署过程

    超详细从零记录Ubuntu16.04.1 3台服务器上Hadoop2.7.3完全分布式集群部署过程.包含,Ubuntu服务器创建.远程工具连接配置.Ubuntu服务器配置.Hadoop文件配置.Had ...

  9. 摘要: CentOS 6.5搭建Redis3.2.8伪分布式集群

    from https://my.oschina.net/ososchina/blog/856678     摘要: CentOS 6.5搭建Redis3.2.8伪分布式集群 前言 最近在服务器上搭建了 ...

随机推荐

  1. 模板:分页JSP(结合Servlet)

    DAO类(后续无需改变) package dao; import java.sql.Connection; import java.sql.PreparedStatement; import java ...

  2. centos 7 firewalld防火墙配置

    1.查看firewall服务状态 systemctl status firewalld 2.查看firewall的状态 firewall-cmd --state 3.开启.重启.关闭.firewall ...

  3. 小程序util.js的使用

    我们通过开发者工具快速创建了一个 QuickStart 项目.你可以留意到这个项目里边生成了一个utils/util.js这里写图片描述 可以将一些公共的代码抽离成为一个单独的 js (utils.j ...

  4. HDFS设计思想、元数据、简单JAVAAPI操作HDFS

    一. 设计思路 分布式文件系统 在Hadoop中文件系统是一个顶层的抽象. 分布式文件系统相当与对文件系统进行了一个扩展(类似于java中的接口). HDFS是分布式文件系统的一个实现,分布式文件系统 ...

  5. [MSSQL] [EntityFramework(.Net Core)] 自增长id字段,无法插入数据

    IDENTITY_INSERT 为 OFF,无法插入数据, 类似的错误,解决记录: 网上查了下,都是 Code First 模式下的解决方案, 如:在 DBContext 的 OnModelCreat ...

  6. 【算法基础】KMP字符串

    给定一个模式串S,以及一个模板串P,所有字符串中只包含大小写英文字母以及阿拉伯数字. 模板串P在模式串S中多次作为子串出现. 求出模板串P在模式串S中所有出现的位置的起始下标. 输入格式 第一行输入整 ...

  7. .net core 基于AspNetCore.Identity+Identityserver4用户的权限管理

    一般权限控制,是先给角色分配对应权限,然后再给用户分配角色:总权限应该是在代码编写的时候就已经固定了,例如有个用户更新的接口,这里就会诞生一个用户更新的权限,接口在权限就在,没有接口也就没有了这个权限 ...

  8. 对象调用 push 方法

    /* Array.prototype.push = function A(val) { this[this.length] = val; // =>this.length 在原来的基础上加1 r ...

  9. Java IO实现文件(及文件夹)的复制 原创代码【精】

    单个文件复制 FileInputStream input=new FileInputStream("C://360//fay.jpg"); FileOutputStream out ...

  10. Linux内存管理—详细讲解

    摘要:本章首先以应用程序开发者的角度审视Linux的进程内存管理,在此基础上逐步深入到内核中讨论系统物理内存管理和内核内存的使用方法.力求从外到内.水到渠成地引导网友分析Linux的内存管理与使用.在 ...