Hadoop教程(五)Hadoop分布式集群部署安装
Hadoop教程(五)Hadoop分布式集群部署安装
1 Hadoop分布式集群部署安装
在hadoop2.0中通常由两个NameNode组成,一个处于active状态,还有一个处于standby状态。
Active
NameNode对外提供服务,而Standby NameNode则不正确外提供服务,仅同步activenamenode的状态,以便可以在它失败时高速进行切换。
hadoop2.0官方提供了两种HDFS
HA的解决方式。一种是NFS,还有一种是QJM。
这里我们使用简单的QJM。
在该方案中。主备NameNode之间通过一组JournalNode同步元数据信息。一条数据仅仅要成功写入多数JournalNode即觉得写入成功。通常配置奇数个JournalNode
这里还配置了一个zookeeper集群,用于ZKFC(DFSZKFailoverController)故障转移,当ActiveNameNode挂掉了,会自己主动切换Standby
NameNode为standby状态。
watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" alt="">
1.1 Hadoop分布式集群工作原理图
1.2 集群规划
主机名 |
IP |
安装软件 |
执行进程 |
Hadoop1 |
192.168.1.121 |
Jdk、Hadoop |
NameNode、DFSZKFailoverController |
Hadoop2 |
192.168.1.122 |
Jdk、Hadoop |
NameNode、DFSZKFailoverController |
Hadoop3 |
192.168.1.123 |
Jdk、Hadoop |
ResourceManager |
Hadoop4 |
192.168.1.124 |
Jdk、Hadoop、Zookeep |
DataNode、NodeManager、JournalNode、QuorumPeerMain |
Hadoop5 |
192.168.1.125 |
Jdk、Hadoop、Zookeep |
DataNode、NodeManager、JournalNode、QuorumPeerMain |
Hadoop6 |
192.168.1.126 |
Jdk、Hadoop、Zookeep |
DataNode、NodeManager、JournalNode、QuorumPeerMain |
1.3 相关下载
1、JDK下载地址:jdk-8u66-linux-x64.tar.gz
Linux安装JDK及环境变量配置,參见:http://blog.csdn.net/yuan_xw/article/details/49948285
2、Hadoop下载:hadoop-2.7.1.tar.gz
3、Zookeeper下载:zookeeper-3.4.5.tar.gz
1.4 配置hosts文件
配置Hadoop1server,运行命令:vi
/etc/hosts
127.0.0.1 localhost
192.168.1.121 Hadoop1
192.168.1.122 Hadoop2
192.168.1.123 Hadoop3
192.168.1.124 Hadoop4
192.168.1.125 Hadoop5
192.168.1.126 Hadoop6
其他服务scp命令进行复制:
scp /etc/hosts192.168.1.122:/etc/
scp /etc/hosts192.168.1.123:/etc/
scp /etc/hosts192.168.1.124:/etc/
scp /etc/hosts 192.168.1.125:/etc/
scp /etc/hosts 192.168.1.126:/etc/
1.5 配置ssh免password登录
产生密钥。运行命令:ssh-keygen-t rsa,按4回车。密钥文件位于~/.ssh文件
在Hadoop1上生产一对钥匙。将公钥复制到其它节点,包含自己,运行命令:
ssh-copy-idHadoop1
ssh-copy-idHadoop2
ssh-copy-idHadoop3
ssh-copy-idHadoop4
ssh-copy-idHadoop5
ssh-copy-idHadoop6
在Hadoop3上生产一对钥匙,配置Hadoop3到Hadoop4、Hadoop5、Hadoop6的免password登陆,运行命令:
产生密钥,运行命令:ssh-keygen-t rsa,按4回车,密钥文件位于~/.ssh文件,将公钥复制到其它节点
ssh-copy-idHadoop4
ssh-copy-idHadoop5
ssh-copy-idHadoop6
在Hadoop2上生产一对钥匙,两个namenode之间要配置ssh免password登陆。运行命令:
产生密钥。运行命令:ssh-keygen-t rsa,按4回车。密钥文件位于~/.ssh文件,将公钥复制到其它节点
ssh-copy-id -iHadoop1
1.6 关闭防火墙
1、关闭防火墙:
安装iptables-services命令:
systemctl stop firewalld.service #停止firewall
systemctl disable firewalld.service #禁止firewall开机启动
验证:firewall-cmd --state #查看默认防火墙状态(关闭后显示notrunning,开启后显示running)
关闭防火墙自己主动执行:
运行命令:systemctl disable iptables.service
验证:systemctl list-unit-files |grep iptables
用上述相同的方法在Hadoop2、Hadoop3、Hadoop4、Hadoop5、Hadoop6中如法炮制就可以。
1.7 上传server
Hadoop1server创建/usr/local/software/package文件夹后,再进行上传:
解压JDK:
运行命令:tar -zxvfjdk-8u66-linux-x64.tar.gz -C /usr/local/software/
解压:Hadoop:
运行命令:tar -zxvfhadoop-2.7.1.tar.gz
-C /usr/local/software/
重命名:mv hadoop-2.7.1/ hadoop_2.7.1/
Hadoop4server创建/usr/local/software/package文件夹后,再进行上传:
解压Zookeeper:
运行命令:tar -zxvfzookeeper-3.4.5.tar.gz -C /usr/local/software/
重命名:mv zookeeper-3.4.5zookeeper_3.4.5
在server节点(Hadoop2、Hadoop3、Hadoop4、Hadoop5、Hadoop6),创建/usr/local/software文件夹。
解压完后成后,分别在Hadoop1、Hadoop4删除/usr/local/software/package文件夹:
运行命令:rm -rf/usr/local/software/package/
1.8 改动配置文件(Hadoop1):
2、改动hadoop-env.sh配置文件:
运行命令:
vi /usr/local/software/hadoop_2.7.1/etc/hadoop/hadoop-env.sh
改动内容:
export JAVA_HOME=/usr/local/software/jdk1.8.0_66
3、改动core-site.xml配置文件:
运行命令:
vi /usr/local/software/hadoop_2.7.1/etc/hadoop/core-site.xml
改动内容:
<configuration>
<!--指定hdfs的nameService1节点URL地址 -->
<property>
<name>fs.defaultFS</name>
<value>hdfs://ns1</value>
</property>
<!-- Hadoop的执行时文件存放路径,假设不存在此文件夹须要格式化 -->
<property>
<name>hadoop.tmp.dir</name>
<value>/usr/local/software/hadoop_2.7.1/tmp</value>
</property>
<!-- Zookeeper地址 -->
<property>
<name>ha.zookeeper.quorum</name>
<value>Hadoop4:2181,Hadoop5:2181,Hadoop6:2181</value>
</property>
</configuration>
4、改动hdfs-site.xml配置文件:
运行命令:
vi /usr/local/software/hadoop_2.7.1/etc/hadoop/hdfs-site.xml
改动内容:
<configuration>
<!--指定hdfs的nameservice为ns1。须要和core-site.xml中的保持一致 -->
<property>
<name>dfs.nameservices</name>
<value>ns1</value>
</property>
<!-- ns1以下有两个NameNode,各自是nn1,nn2 -->
<property>
<name>dfs.ha.namenodes.ns1</name>
<value>nn1,nn2</value>
</property>
<!-- nn1的RPC通信地址 -->
<property>
<name>dfs.namenode.rpc-address.ns1.nn1</name>
<value>Hadoop1:9000</value>
</property>
<!-- nn1的http通信地址 -->
<property>
<name>dfs.namenode.http-address.ns1.nn1</name>
<value>Hadoop1:50070</value>
</property>
<!-- nn2的RPC通信地址 -->
<property>
<name>dfs.namenode.rpc-address.ns1.nn2</name>
<value>Hadoop2:9000</value>
</property>
<!-- nn2的http通信地址 -->
<property>
<name>dfs.namenode.http-address.ns1.nn2</name>
<value>Hadoop2:50070</value>
</property>
<!-- 指定NameNode的元数据在JournalNode上的存放位置 -->
<property>
<name>dfs.namenode.shared.edits.dir</name>
<value>qjournal://Hadoop4:8485;Hadoop5:8485;Hadoop6:8485/ns1
</value>
</property>
<!-- 指定JournalNode在本地磁盘存放数据的位置 -->
<property>
<name>dfs.journalnode.edits.dir</name>
<value>/itcast/hadoop-2.2.0/journal</value>
</property>
<!-- 开启NameNode失败自己主动切换 -->
<property>
<name>dfs.ha.automatic-failover.enabled</name>
<value>true</value>
</property>
<!-- 配置失败自己主动切换实现方式 -->
<property>
<name>dfs.client.failover.proxy.provider.ns1</name>
<value>org.apache.hadoop.hdfs.server.namenode.ha.ConfiguredFailoverProxyProvider
</value>
</property>
<!-- 配置隔离机制方法。多个机制用换行切割,即每一个机制暂用一行 -->
<property>
<name>dfs.ha.fencing.methods</name>
<value>
sshfence
shell(/bin/true)
</value>
</property>
<!-- 使用sshfence隔离机制时须要ssh免登陆 -->
<property>
<name>dfs.ha.fencing.ssh.private-key-files</name>
<value>/root/.ssh/id_rsa</value>
</property>
<!-- 配置sshfence隔离机制超时时间 -->
<property>
<name>dfs.ha.fencing.ssh.connect-timeout</name>
<value>30000</value>
</property>
</configuration>
5、改动mapred-site.xml配置文件:
运行命令:
切换文件夹:cd /usr/local/software/hadoop_2.7.1/etc/hadoop/
重命名:mv mapred-site.xml.template mapred-site.xml
改动文件:vi mapred-site.xml
改动内容:
<configuration>
<!-- 指定Hadoop的MapReduce执行在YARN环境 -->
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
</configuration>
6、改动yarn-site.xml配置文件:
运行命令:
vi /usr/local/software/hadoop_2.7.1/etc/hadoop/yarn-site.xml
改动内容:
<configuration>
<!--指定YARN的master节点( ResourceManager) 的地址 -->
<property>
<name>yarn.resourcemanager.hostname</name>
<value>Hadoop3</value>
</property> <!-- NodeManager获取数据方式:shuffle -->
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
</configuration>
7、改动slaves配置文件:
运行命令:
vi /usr/local/software/hadoop_2.7.1/etc/hadoop/slaves
Hadoop4
Hadoop5
Hadoop6
1.9 环境变量
1、Hadoop1改动profilie文件:运行命令:vi/etc/profile
export JAVA_HOME=/usr/local/software/jdk1.8.0_66
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
export HADOOP_HOME=/usr/local/software/hadoop_2.7.1
export PATH=.:$JAVA_HOME/bin:$HADOOP_HOME/bin:$PATH
2、Hadoop1拷贝文件到server:Hadoop2、Hadoop3、Hadoop4、Hadoop5、Hadoop6
Hadoop1复制JDK:
scp -r /usr/local/software/Hadoop2:/usr/local/
scp -r /usr/local/software/ Hadoop3:/usr/local/
scp -r /usr/local/software/ Hadoop4:/usr/local/
scp -r /usr/local/software/ Hadoop5:/usr/local/
scp -r /usr/local/software/ Hadoop6:/usr/local/
3、Hadoop1复制环境变量:Hadoop2、Hadoop3
scp /etc/profile Hadoop2:/etc/
scp /etc/profile Hadoop3:/etc/
4、Hadoop4改动profilie文件:运行命令:vi/etc/profile
export JAVA_HOME=/usr/local/software/jdk1.8.0_66
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
export HADOOP_HOME=/usr/local/software/hadoop_2.7.1
export ZOOKEEPER_HOME=/usr/local/software/zookeeper_3.4.5
export PATH=.:$JAVA_HOME/bin:$HADOOP_HOME/bin:$ZOOKEEPER_HOME/bin:$PATH
5、Hadoop4拷贝文件到server:Hadoop5、Hadoop6
Hadoop1复制zookeeper:
scp -r zookeeper_3.4.5/Hadoop5:/usr/local/software/zookeeper_3.4.5/
scp -r zookeeper_3.4.5/ Hadoop6:/usr/local/software/zookeeper_3.4.5/
6、Hadoop4复制环境变量:
Hadoop5、Hadoop6
scp /etc/profile Hadoop5:/etc/
scp /etc/profile Hadoop6:/etc/
7、在Hadoop1、Hadoop2、Hadoop3、Hadoop4、Hadoop5、Hadoop6。分别刷新环境变量
运行命令:source /etc/profile 刷新环境变量
1.10 Zookeeper集群配置:
1、改动zoo.cfg文件:
运行命令:
cd /usr/local/software/zookeeper_3.4.5/conf
mv zoo_sample.cfgzoo.cfg
改动内容。运行命令:vi zoo.cfg:
tickTime=2000
initLimit=10
syncLimit=5
dataDir=/usr/local/software/zookeeper_3.4.5/data
clientPort=2181
server.4 = Hadoop4:2888:3888
server.5 = Hadoop5:2888:3888
server.6 = Hadoop6:2888:3888
2、server标识配置
创建目录:mkdir data。
创建文件myid并填写内容为4:vi
myid (内容为server标识:4)。
把Hadoop5、Hadoop6中的myid文件中的值改动为5和6路径(vi
%ZOOKEEPER_HOME%/data/myid)。
依照同样的步骤,为其他机器都配置上zoo.cfg和myid文件。
1.11 启动Zookeeper:
分别在Hadoop4、Hadoop5、Hadoop6server上启动zookeeper:
Hadoop4运行命令:/usr/local/software/zookeeper_3.4.5/bin/zkServer.sh
start #启动zookeeper
Hadoop5运行命令:/usr/local/software/zookeeper_3.4.5/bin/zkServer.sh
start #启动zookeeper
Hadoop6运行命令:/usr/local/software/zookeeper_3.4.5/bin/zkServer.sh
start #启动zookeeper
Hadoop4运行命令:/usr/local/software/zookeeper_3.4.5/bin/zkServer.sh
status #查看启动状态
Hadoop5运行命令:/usr/local/software/zookeeper_3.4.5/bin/zkServer.sh
status #查看启动状态
Hadoop6运行命令:/usr/local/software/zookeeper_3.4.5/bin/zkServer.sh
status #查看启动状态
1.12 启动journalnode:
在Hadoop1上启动全部journalnode。注意:是调用的hadoop-daemon.sh这个脚本:
Hadoop4运行命令:/usr/local/software/hadoop_2.7.1/sbin/hadoop-daemon.shstart
journalnode #启动journalnode
Hadoop5运行命令:/usr/local/software/hadoop_2.7.1/sbin/hadoop-daemon.shstart
journalnode #启动journalnode
Hadoop6运行命令:/usr/local/software/hadoop_2.7.1/sbin/hadoop-daemon.shstart
journalnode #启动journalnode
1.13 格式化文件系统:
在Hadoop1server上进行:HDFS文件系统进行格式化,运行命令:
# hadoop namenode –formate(已过时)
hdfs namenode -format推荐使用
验证:提演示样例如以下信息表示成功:
INFO common.Storage: Storage directory/usr/local/software/hadoop_2.7.1/tmp/dfs/name has been successfully formatted.
Hadoop的执行时文件存放路径为:tmp文件夹,Hadoop2须要和Hadoop1一致,进行拷贝:
运行命令:scp -r/usr/local/software/hadoop_2.7.1/tmp Hadoop2:/usr/local/software/hadoop_2.7.1/
1.14 格式化formatZK:
仅仅须要在Hadoop1上进行运行命名就可以:
运行命令:hdfs zkfc -formatZK
验证:
打开Hadoop4serverzookeeperclient,查看是否存在hadoop-ha节点
运行命令:/usr/local/software/zookeeper_3.4.5/bin/zkCli.sh
查看节点命令:ls
/
1.15 启动HDFS:
1、仅仅须要在Hadoop1上启动HDFS,
运行命令:/usr/local/software/hadoop_2.7.1/sbin/start-dfs.sh
验证启动HDFS:
Jps:JDK提供查看当前java进程的小工具。
NameNode:它是Hadoop中的主server,管理文件系统名称空间和对集群中存储的文件的訪问。
DFSZKFailoverController会定期通过该rpc调用proxy.monitorHealth()来监測NN的健康状况。
1.16 启动YARN:
1、仅仅须要在Hadoop3上启动YARN,
运行命令:/usr/local/software/hadoop_2.7.1/sbin/start-yarn.sh
2、验证启动YARN:
Jps:JDK提供查看当前java进程的小工具。
ResourceManager:接收client任务请求,接收和监控NodeManager(NM)的资源情况汇报,负责资源的分配与调度,启动和监控ApplicationMaster(AM)。
1.17 訪问Hadoop服务页面:
訪问地址验证启动服务。訪问地址:
HDFS管理界面:http://192.168.1.121:50070/
YARN管理界面:http://192.168.1.123:8088/
1.18 验证HDFS - HA主备切换:
1、验证Hadoop1serverNameNode和Hadoop2serverNameNode数据文件能否够共享:
在Hadoop1上传文件hosts文件:
运行命令:hadoop fs-put /etc/hosts /
杀掉Hadoop1 NameNode进程。运行命令:
查看进程:jps
Kill -9 6068
watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" alt="">
验证成功
watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" alt="">
2、启动Hadoop1上的NameNode进程。将Hadoop2server进行强制关机,验证能否够激活Hadoop1:
启动Hadoop1serverNameNode进程:
运行命令:/usr/local/software/hadoop_2.7.1/sbin/hadoop-daemon.shstart namenode
将Hadoop2服务进行关机处理:
watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" alt="">
主备切换对照图:
watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" alt="">
--以上为《Hadoop教程(五)Hadoop分布式集群部署安装》,如有不当之处请指出。我兴许逐步完好更正。大家共同提高。
谢谢大家对我的关注。
——厚积薄发(yuanxw)
Hadoop教程(五)Hadoop分布式集群部署安装的更多相关文章
- Hadoop(五)分布式集群中HDFS系统的各种角色
NameNode 学习目标 理解 namenode 的工作机制尤其是元数据管理机制,以增强对 HDFS 工作原理的 理解,及培养 hadoop 集群运营中“性能调优”.“namenode”故障问题的分 ...
- Hadoop(HA)分布式集群部署
Hadoop(HA)分布式集群部署和单节点namenode部署其实一样,只是配置文件的不同罢了. 这篇就讲解hadoop双namenode的部署,实现高可用. 系统环境: OS: CentOS 6.8 ...
- Hadoop分布式集群部署(单namenode节点)
Hadoop分布式集群部署 系统系统环境: OS: CentOS 6.8 内存:2G CPU:1核 Software:jdk-8u151-linux-x64.rpm hadoop-2.7.4.tar. ...
- hadoop分布式集群部署①
Linux系统的安装和配置.(在VM虚拟机上) 一:安装虚拟机VMware Workstation 14 Pro 以上,虚拟机软件安装完成. 二:创建虚拟机. 三:安装CentOS系统 (1)上面步 ...
- 超详细从零记录Hadoop2.7.3完全分布式集群部署过程
超详细从零记录Ubuntu16.04.1 3台服务器上Hadoop2.7.3完全分布式集群部署过程.包含,Ubuntu服务器创建.远程工具连接配置.Ubuntu服务器配置.Hadoop文件配置.Had ...
- solr 集群(SolrCloud 分布式集群部署步骤)
SolrCloud 分布式集群部署步骤 安装软件包准备 apache-tomcat-7.0.54 jdk1.7 solr-4.8.1 zookeeper-3.4.5 注:以上软件都是基于 Linux ...
- SolrCloud 分布式集群部署步骤
https://segmentfault.com/a/1190000000595712 SolrCloud 分布式集群部署步骤 solr solrcloud zookeeper apache-tomc ...
- Apache shiro集群实现 (五)分布式集群系统下的高可用session解决方案
Apache shiro集群实现 (一) shiro入门介绍 Apache shiro集群实现 (二) shiro 的INI配置 Apache shiro集群实现 (三)shiro身份认证(Shiro ...
- HBase HA的分布式集群部署(适合3、5节点)
本博文的主要内容有: .HBase的分布模式(3.5节点)安装 .HBase的分布模式(3.5节点)的启动 .HBase HA的分布式集群的安装 .HBase HA的分布式集群的启动 .H ...
随机推荐
- flume中HdfsSink参数说明
flume到hdfsSink: type hdfs path 写入hdfs的路径,需要包含文件系统标识,比如:hdfs://namenode/flume/webdata/ 可以使用flume提供的日期 ...
- [数据结构]最小生成树算法Prim和Kruskal算法
最小生成树 在含有n个顶点的连通图中选择n-1条边,构成一棵极小连通子图,并使该连通子图中n-1条边上权值之和达到最小,则称其为连通网的最小生成树. 例如,对于如上图G4所示的连通网可以有多棵权值总 ...
- sqoop 从sqlserver2008 导入数据到hadoop
今天终于开始上手导入数据到hadoop了,哈哈,过程蛮崎岖的,和官方文档的还不太一样. OK,let's go!试验对象是我第一个名为ST_Statistics的一张表,我要把我表里的数据导入到hdf ...
- git基本操作:使用git将本地代码上传到GitHub
一.创建github repository(仓库) 1.登录GitHub 创建GitHub仓库,首先需要登录GitHub,GitHub网址:https://github.com.如果没有GitHub账 ...
- spring sringboot 加载配置文件 多目录配置文件 多级分类配置文件
ResourcePatternResolver resolver = new PathMatchingResourcePatternResolver(); Resource[] resources = ...
- springcloud服务已经关但是Eureka还是显示up
该状态持续很久,访问该服务也返回错误,但在注册中心界面,该服务却一直存在,且为UP状态,并且在大约十分钟后,出现一行红色大字:EMERGENCY! EUREKA MAY BE INCORRECTLY ...
- WaitForSingleObject函数的使用
等待函数可使线程自愿进入等待状态,直到一个特定的内核对象变为已通知状态为止. WaitForSingleObject 函数 DWORD WaitForSingleObject( HANDLE hOb ...
- Redis 实现消息队列 MQ
Redis 2.4版本之后就内置队列的功能了,如果是日常比较简单的队列应用,可以选择Redis , 效率还很高的!! Redis 还能实现 有序 和 无序 两种队列(只讨论生产者和消费者这种模式的队列 ...
- Ubuntu16.04安装Mininet
Ubuntu16.04源码安装Mininet 本文介绍了VMware虚拟机ubuntu16.04中安装Mininet的方法,物理机中的方法与之相同.主要参考了Mininet官方的教程.官方提供了四种安 ...
- phpc.sinaapp.com 加密的解密方法
很简单,用类似phpjm的解密方式,替换掉_inc.php中最后一个return中的eval为print就出来了. http://www.cnblogs.com/lonelyxmas/p/458285 ...