CentOS7.5搭建Hadoop2.7.6完全分布式集群
一 完全分布式集群搭建
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完全分布式集群的更多相关文章
- Hadoop(二)CentOS7.5搭建Hadoop2.7.6完全分布式集群
一 完全分布式集群(单点) Hadoop官方地址:http://hadoop.apache.org/ 1 准备3台客户机 1.1防火墙,静态IP,主机名 关闭防火墙,设置静态IP,主机名此处略,参考 ...
- Centos7.5搭建Hadoop2.8.5完全分布式集群部署
一.基础环境设置 1. 准备4台客户机(VMware虚拟机) 系统版本:Centos7.5 节点配置: 192.168.208.128 --Master 192.168.208.129 --Slave ...
- 搭建Hadoop2.7.1的分布式集群
Hadoop 2.7.1 (2015-7-6更新),hadoop的环境配置不是特别的复杂,但是确实有很多细节需要注意,不然会造成许多配置错误的情况.尽量保证一次配置正确防止反复修改. 网上教程有很多关 ...
- # 从零開始搭建Hadoop2.7.1的分布式集群
Hadoop 2.7.1 (2015-7-6更新),Hadoop的环境配置不是特别的复杂,可是确实有非常多细节须要注意.不然会造成很多配置错误的情况.尽量保证一次配置正确防止重复改动. 网上教程有非常 ...
- Docker中搭建Hadoop-2.6单机伪分布式集群
1 获取一个简单的Docker系统镜像,并建立一个容器. 1.1 这里我选择下载CentOS镜像 docker pull centos 1.2 通过docker tag命令将下载的CentOS镜像名称 ...
- 基于hadoop2.6.0搭建5个节点的分布式集群
1.前言 我们使用hadoop2.6.0版本配置Hadoop集群,同时配置NameNode+HA.ResourceManager+HA,并使用zookeeper来管理Hadoop集群 2.规划 1.主 ...
- 搭建hbase1.2.5完全分布式集群
简介 有一段时间,没写博客了,因为公司开发分布式调用链追踪系统,用到hbase,在这里记录一下搭建过程 1.集群如下: ip 主机名 角色 192.168.6.130 node1.jacky.com ...
- 超详细从零记录Hadoop2.7.3完全分布式集群部署过程
超详细从零记录Ubuntu16.04.1 3台服务器上Hadoop2.7.3完全分布式集群部署过程.包含,Ubuntu服务器创建.远程工具连接配置.Ubuntu服务器配置.Hadoop文件配置.Had ...
- 摘要: CentOS 6.5搭建Redis3.2.8伪分布式集群
from https://my.oschina.net/ososchina/blog/856678 摘要: CentOS 6.5搭建Redis3.2.8伪分布式集群 前言 最近在服务器上搭建了 ...
随机推荐
- LibreOJ #515 贪心只能过样例
题目链接:https://loj.ac/problem/515 知识点: DP.bitset类 解题思路: DP部分不难想到:从 a 到 b 遍历,然后在已有的状态上加上遍历得到的数字的平方,难点在于 ...
- 母牛的故事(hdu2018)——笔记待完善
思考:这道题考验的是罗辑思维,这个网址http://blog.csdn.net/sxhelijian/article/details/42609353的罗辑思维值得学习 #include<std ...
- vue过渡动画样式
在进入/离开的过渡中,会有 6 个 class 切换. v-enter:定义进入过渡的开始状态.在元素被插入之前生效,在元素被插入之后的下一帧移除. v-enter-active:定义进入过渡生效时的 ...
- Golang源码学习:调度逻辑(三)工作线程的执行流程与调度循环
本文内容主要分为三部分: main goroutine 的调度运行 非 main goroutine 的退出流程 工作线程的执行流程与调度循环. main goroutine 的调度运行 runtim ...
- [站点推荐]001.学习新技能的37个最佳网站(The 37 Best Websites To Learn Something New)
忘了过于褒奖的学校.整天呆在拥挤的教室而效果却差得可怜.这些网站和应用涵盖了科学.艺术和技术的无数话题.它们可以教会你实践练习任何技能,从制作豆 沙到用 node.js 开发 app,而且它们都是免费 ...
- pandas的loc与iloc
1. loc是用标签(也就是行名和列名)来查找,标签默认是数字,但也可以通过index参数指定为字符型等其他的类型. 格式是df.loc[行名,列名],如果列标签没有给出,则默认为查找指定行标签的所有 ...
- debug PHP程序(xdebug、IntelliJ IDEA)
之前写PHP程序的都是echo调试,今天感觉太麻烦了就想起研究一下IntelliJ IDEA如何调试PHP程序. 从网上查找了很多资料,大部分都提到在IDE里开启服务,一下就懵了,怎么启这么多服务呢. ...
- ASP.NET中IHttpHandler与IHttpModule的区别(带样例说明)
IHttpModule相对来说,是一个网页的添加 IHttpHandler相对来说,却是网页的替换 先建一个HandlerDemo的类 using System; using System.Colle ...
- Java实现 LeetCode 385 迷你语法分析器
385. 迷你语法分析器 给定一个用字符串表示的整数的嵌套列表,实现一个解析它的语法分析器. 列表中的每个元素只可能是整数或整数嵌套列表 提示:你可以假定这些字符串都是格式良好的: 字符串非空 字符串 ...
- Java实现 LeetCode 117 填充每个节点的下一个右侧节点指针 II(二)
117. 填充每个节点的下一个右侧节点指针 II 给定一个二叉树 struct Node { int val; Node *left; Node *right; Node *next; } 填充它的每 ...