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 ...
随机推荐
- 常用css3技巧
H5移动前端开发常用高能css3汇总 1.禁止a标签点击高亮,这些都是非官方属性,但实用性超强 html,body{ -webkit-touch-callout: none; //禁止或显示系 ...
- 删除json对象中空值
function deleteEmptyProperty(obj){ var object = obj; for (var i in object) { var value = object[i]; ...
- 在windows下实时监控、接受文件变化小工具
在windows下实时监控文件变化小工具 在测试的时候,我们可能想实时监控系统打出的log信息,在unix系统上我们可以用"tail -f"实现,在windows下一般就无法做 ...
- Lucene增删改查
IndexManager.java package com.witwicky.lucene; import java.io.File; import java.util.ArrayList; impo ...
- Casual Note of Computer Network
20170605 本地环回地址(loopback): IPV4:127.0.0.1-127.255.255.254 IPV6:::1 (即 0000:0000:0000:0000:0000:0000: ...
- sparkR集群启动脚本的封装。
sparkR默认是以单机方式运行的.实现sparkR的集群启动,需要指定master地址,占用内存.CPU,及UI端口等,这对分析人员来说是比较麻烦的. 如何实现对其启动的封装,方便分析人员来使用: ...
- Ubuntu 安装软件方法
Ubuntu软件安装有几种方式,常用的是deb包的安装方式,deb是debian系列的Linux包管理方式,Ubuntu软件安装属于debian的派生,也默认支持这种软件安装方式,当下载到一个deb格 ...
- 实现接口时@Override注解问题
用IntelliJ 15打开一个以前的工程,发现代码出现很多关于@Override的错误,编辑器提示:“@Override is not allowed when implementing int ...
- 使用Selenium来抓取动态加载的页面
原文:http://my.oschina.net/flashsword/blog/147334?p=1 一般的爬虫都是直接使用http协议,下载指定url的html内容,并对内容进行分析和抽取.在我写 ...
- Linux系统中如何校验SHA1和MD5?
来自:系统之家:http://www.xitongzhijia.net/xtjc/20160316/69125.html 我们在网络上下载或在U盘中复制的文件正常来说和源文件是一样的,但有时在下载或拷 ...