基于hadoop2.6.0搭建5个节点的分布式集群
1、前言
我们使用hadoop2.6.0版本配置Hadoop集群,同时配置NameNode+HA、ResourceManager+HA,并使用zookeeper来管理Hadoop集群
2、规划
1、主机规划
|
hadoop1/ 192.168.56.131 |
hadoop2/ 192.168.56.132 |
hadoop3/ 192.168.56.133 |
hadoop4/ 192.168.56.134 |
hadoop5/ 192.168.56.135 |
|
|
namenode |
是 |
是 |
否 |
否 |
否 |
|
datanode |
否 |
否 |
是 |
是 |
是 |
|
resourcemanager |
是 |
是 |
否 |
否 |
否 |
|
journalnode |
是 |
是 |
是 |
是 |
是 |
|
zookeeper |
是 |
是 |
是 |
是 |
是 |
Journalnode和ZooKeeper保持奇数个,最少不少于3个节点
2、软件规划
|
软件 |
版本 |
位数 |
说明 |
|
centos |
6.5 |
64 |
|
|
jdk |
1.7 |
64 |
稳定版本 |
|
zookeeper |
3.4.6 |
稳定版本 |
|
|
hadoop |
2.6.0 |
稳定版本 |
3、用户规划
|
节点名称 |
用户组 |
用户 |
密码 |
|
hadoop1 |
hadoop |
hadoop |
123456 |
|
hadoop2 |
hadoop |
hadoop |
123456 |
|
hadoop3 |
hadoop |
hadoop |
123456 |
|
hadoop4 |
hadoop |
hadoop |
123456 |
|
hadoop5 |
hadoop |
hadoop |
123456 |
4、目录规划
|
名称 |
路径 |
|
所有软件目录 |
/usr/hadoop/app/ |
|
所有数据和日志目录 |
/usr/hadoop/data/ |
3、集群安装前的环境检查
1、修改主机名
将5个节点分别修改为hadoop1、hadoop2、hadoop3、hadoop4、hadoop5
修改主机名,请参考“修改主机名”
2、hosts文件检查
所有节点(hadoop1、hadoop2、hadoop3、hadoop4、hadoop5)的hosts文件都要配置静态ip与hostname之间的对应关系
192.168.56.131 hadoop1
192.168.56.132 hadoop2
192.168.56.133 hadoop3
192.168.56.134 hadoop4
192.168.56.135 hadoop5
具体请参考,“配置hosts文件”
3、禁用防火墙
永久关闭hadoop1、hadoop2、hadoop3、hadoop4、hadoop5这5个节点的防火墙
具体请参考,“防火墙”
4、配置SSH免密码通信
下面对hadoop1节点上的root用户配置ssh
1、输入“ssh-keygen -t rsa”,生成秘钥

2、使用“cp ~/.ssh/id_rsa.pub ~/.ssh/authorized_keys”命令,把公钥复制到认证文件(authorized_keys)中,如下所示

3、确保.ssh目录的权限是700(使用chmod 700 .ssh命令修改),确保.ssh目录下所有文件(authorized_key、id_rsa、id_rsa.pub)的权限是600(使用chmod 600 .ssh/*命令修改),如下所示

4、输入“ssh hadoop1”登录,第一次登录需要输入yes,以后就不需要输入啦

对hadoop2、hadoop3、hadoop4、hadoop5这4个节点上的root用户也配置ssh,配置过程和上述在hadoop1上为root用户配置ssh的过程是一样
5、在hadoop2、hadoop3、hadoop4、hadoop5这4个节点上都执行一次“cat ~/.ssh/id_rsa.pub | ssh root@hadoop1 'cat >> ~/.ssh/authorized_keys'”命令,将这4个节点上的共钥id_ras.pub拷贝到hadoop1中的authorized_keys文件中,如下




拷贝完成后,hadoop1中的authorized_keys文件内容如下

6、将hadoop1中的authorized_keys文件分发到其他节点(hadoop2、hadoop3、hadoop4、hadoop5)上,在hadoop1上,使用scp -r ~/.ssh/authorized_keys root@主机名:~/.ssh/ 命令分发,效果如下

7、然后测测看看,出现如下信息,表示配置成功

说明:第一次可能会出现如下信息,输入yes就可以了,以后就不会再出现啦

5、脚本工具的使用
脚本工具已放在“shell脚本”目录下,如果安装目录有所变动,请根据需要修改
1、在hadoop1节点上,创建/usr/hadoop/tools目录,如下所示

2、将脚本通过rz命令上传到/usr/hadoop/tools目录

具体使用rz命令,请参考“上传下载rz、sz命令”
3、为后缀*.sh的文件增加执行权限

具体使用chmod命令,请参考“权限chmod命令”
4、将/usr/hadoop/tools目录配置到PATH路径中



6、集群安装前的环境配置
1、时钟同步
下面通过脚本对所有节点(hadoop1、hadoop2、hadoop3、hadoop4、hadoop5)进行时钟同步
1、输入runRemoteCmd.sh "cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime" all

2、输入runRemoteCmd.sh "ntpdate pool.ntp.org" all

具体请参考,“时钟同步”
2、创建hadoop用户组、hadoop用户以及设置密码
下面通过脚本在hadoop1、hadoop2、hadoop3、hadoop4、hadoop5这5个节点上分别创建hadoop用户组、hadoop用户以及设置密码123456
1、创建hadoop用户组

2、创建hadoop用户,并指定用户的组为hadoop

3、为hadoop用户设置密码123456

具体请参考,“用户相关命令”
3、创建/usr/hadoop/app/、/usr/hadoop/data/目录, 并修改/usr/hadoop目录的所有人,所有组为hadoop
下面通过脚本在hadoop1、hadoop2、hadoop3、hadoop4、hadoop5这5个节点上分别创建/usr/hadoop/app/、/usr/hadoop/data/目录,并修改/usr/hadoop目录的所有人,所有组为hadoop
1、创建/usr/hadoop/app/目录

2、创建/usr/hadoop/data/目录

3、修改/usr/hadoop目录的所有人,所有组为hadoop

具体请参考,“目录相关命令”
4、为每个节点中hadoop用户配置ssh,这里为了省事,直接拷贝相应节点中root用户的配置给对应的hadoop用户,默认hadoop家目录是/home/hadoop

接着随意选择一个节点,这里选择hadoop4节点,以hadoop用户登录,然后进行ssh测试,如果出现如下信息,表示配置成功

7、JDK安装
1、将本地下载好的jdk1.7,上传至hadoop1节点下的/home/hadoop/app目录中

可以使用rz上传,请参考“上传下载rz、sz命令”
2、解压jdk


删除安装包

3、配置环境变量


使配置文件生效

4、查看jdk是否安装成功

出现以上信息,说明配置成功
5、通过脚本,将hadoop1中的jdk安装包分发到其他节点上
切换到hadoop用户


在hadoop2, hadoop3, hadoop4, hadoop5节点上,重复步骤3、4,完成jdk配置
8、Zookeeper安装
1、上传zookeeper到hadoop1节点
1、将本地下载好的zookeeper-3.4.6.tar.gz安装包,上传至hadoop1节点下的/home/hadoop/app目录下

可以使用rz上传,请参考“上传下载rz、sz命令”
2、解压


3、删除zookeeper-3.4.6.tar.gz安装包

4、重命名

2、修改Zookeeper中的配置文件
1、复制一个zoo.cfg文件

2、编辑zoo.cfg文件


3、通过脚本deploy.sh将Zookeeper安装目录拷贝到其他节点上面,输入deploy.sh zookeeer/ /usr/hadoop/app slave,如下所示

4、通过脚本runRemoteCmd.sh在所有节点上面创建数据目录、日志目录
1、创建数据目录(runRemoteCmd.sh "mkdir -p /usr/hadoop/data/zookeeper/zkdata" all)

2、创建日志目录(runRemoteCmd.sh "mkdir -p /usr/hadoop/data/zookeeper/zkdatalog" all)

5、分别在hadoop1、hadoop2、hadoop3、hadoop4、hadoop5节点上,进入/usr/hadoop/data/zookeeper/zkdata目录下,创建文件myid,里面的内容分别填充为:1、2、3、4、5, 这里我们以hadoop1为例
1、进入/usr/hadoop/data/zookeeper/zkdata目录

2、编辑myid文件


3、按esc,输入“:x”保存退出
6、配置Zookeeper环境变量
1、vi /etc/profile, 输入内容,然后按esc,输入”:x”,保存退出,最后,输入source /etc/profile,使其立马生效



2、其他节点和hadoop1一样的配置
7、查看启动情况
1、查看hadoop1节点上Zookeeper是否配置成功
1、启动Zookeeper

2、出现如下信息,说明配置成功

3、关闭Zookeeper

2、查看所有节点上Zookeeper是否配置成功
1、使用runRemoteCmd.sh 脚本,启动所有节点上面的Zookeeper

2、查看所有节点上的QuorumPeerMain进程是否启动

3、查看所有节点上Zookeeper的状态

出现4个follower,一个leader,表示Zookeeper安装成功
9、hadoop安装
1、上传hadoop
1、将下载好的hadoop-2.6.0.tar.gz安装包,上传至hadoop1节点中的/usr/hadoop/app目录下

2、解压hadoop-2.6.0.tar.gz


3、删除hadoop-2.6.0.tar.gz安装包

4、重命名

2、配置hadoop家目录下的.bash_profile




3、hdfs
1、切换到/usr/hadoop/app/hadoop/etc/hadoop/目录下

2、配置hdfs
1、配置hadoop-env.sh


2、配置core-site.xml

3、配置hdfs-site.xml



4、配置 slave


3、向其他节点分发hadoop安装包

4、配置完毕后,启动hdfs
1、启动所有节点上面的Zookeeper进程(runRemoteCmd.sh "/usr/hadoop/app/zookeeper/bin/zkServer.sh start" zookeeper)

2、启动所有节点上面的journalnode进程(runRemoteCmd.sh "/usr/hadoop/app/hadoop/sbin/hadoop-daemon.sh start journalnode" all)

3、在hadoop1(主节点)上执行格式化
1、切换到/usr/hadoop/app/hadoop/

2、namenode格式化(bin/hdfs namenode -format)

3、格式化高可用(bin/hdfs zkfc -formatZK)

4、启动namenode

4、与此同时,需要在hadoop2(备节点)上执行数据同步(bin/hdfs namenode -bootstrapStandby)

5、hadoop2同步完数据后,紧接着在hadoop1节点上,按下ctrl+c来结束namenode进程。 然后关闭所有节点上面的journalnode进程(runRemoteCmd.sh "/usr/hadoop/app/hadoop/sbin/hadoop-daemon.sh stop journalnode" all)

6、如果上面操作没有问题,我们可以一键启动hdfs所有相关进程


7、验证是否启动成功


出现上面信息,说明启动成功
8、使用bin/hdfs haadmin -failover nameService1 nameService2命令,将hadoop2切换成active, hadoop1切换成standby,其中,nameService1、nameService2是在hdfs-site.xml文件中的dfs.ha.namenodes. clusterl指定的

效果如下:


9、上传文件至hdfs

如果以上操作都没有问题说明hdfs配置成功
4、yarn
1、yarn配置
1、配置mapred-site.xml(默认没有mapred-site.xml文件,从mapred-site.xml.template文件复制一份,改名为mapred-site.xml就可以)

2、配置yarn-site.xml




2、向其他节点同步yarn配置(deploy.sh etc/ /usr/hadoop/app/hadoop/ all)

3、启动YARN
1、在hadoop1节点上执行(sbin/start-yarn.sh)

2、在hadoop2节点上面执行(sbin/yarn-daemon.sh start resourcemanager)

3、查看web页面
1、访问hadoop1的web页面,如下

2、访问hadoop2的web页面,如下

4、查看ResourceManager状态

resourceManager的名字是yarn.resourcemanager.ha.rm-ids属性指定的
5、Wordcount示例测试

如果上面执行没有异常,说明YARN安装成功
至此,基于hadoop2.6搭建5个节点的分布式集群搭建完毕
基于hadoop2.6.0搭建5个节点的分布式集群的更多相关文章
- kafka系列一:单节点伪分布式集群搭建
Kafka集群搭建分为单节点的伪分布式集群和多节点的分布式集群两种,首先来看一下单节点伪分布式集群安装.单节点伪分布式集群是指集群由一台ZooKeeper服务器和一台Kafka broker服务器组成 ...
- 搭建hbase1.2.5完全分布式集群
简介 有一段时间,没写博客了,因为公司开发分布式调用链追踪系统,用到hbase,在这里记录一下搭建过程 1.集群如下: ip 主机名 角色 192.168.6.130 node1.jacky.com ...
- 摘要: CentOS 6.5搭建Redis3.2.8伪分布式集群
from https://my.oschina.net/ososchina/blog/856678 摘要: CentOS 6.5搭建Redis3.2.8伪分布式集群 前言 最近在服务器上搭建了 ...
- Hadoop2学习记录(1) |HA完全分布式集群搭建
准备 系统:CentOS 6或者RedHat 6(这里用的是64位操作) 软件:JDK 1.7.hadoop-2.3.0.native64位包(可以再csdn上下载,这里不提供了) 部署规划 192. ...
- Centos7.5基于MySQL5.7的 InnoDB Cluster 多节点高可用集群环境部署记录
一. MySQL InnoDB Cluster 介绍MySQL的高可用架构无论是社区还是官方,一直在技术上进行探索,这么多年提出了多种解决方案,比如MMM, MHA, NDB Cluster, G ...
- mac 下搭建Elasticsearch 5.4.3分布式集群
一.集群角色 多机集群中的节点可以分为master nodes和data nodes,在配置文件中使用Zen发现(Zen discovery)机制来管理不同节点.Zen发现是ES自带的默认发现机制,使 ...
- Mac Hadoop2.6(CDH5.9.2)伪分布式集群安装
操作系统: MAC OS X 一.准备 1. JDK 1.8 下载地址:http://www.oracle.com/technetwork/java/javase/downloads/jdk8-dow ...
- Nginx之搭建反向代理实现tomcat分布式集群
参考博文: Nginx反向代理实现Tomcat分布式集群 1. jdk 安装 jdk 下载网址: http://www.oracle.com/technetwork/java/javase/downl ...
- 基于HBase0.98.13搭建HBase HA分布式集群
在hadoop2.6.0分布式集群上搭建hbase ha分布式集群.搭建hadoop2.6.0分布式集群,请参考“基于hadoop2.6.0搭建5个节点的分布式集群”.下面我们开始啦 1.规划 1.主 ...
随机推荐
- WPF样式资源文件简单运用
WPF通过资源来保存一些可以被重复利用的样式,下面的示例展示了简单的资源样式文件的使用: 一.xaml中定义资源及简单的引用 <Window.Resources > <!--wpf窗 ...
- linux c++ 遍历一个目录下的文件名 (包括子目录的文件名)
最近写代码有一个要遍历目录下的每一个文件并取得这个文件的绝对路径的需求, 我们知道linux c++中有system命令所以我在代码中 先生成了一个log,然后去读log文件的每一行文件名,然后给存储 ...
- MATLAB r2014a 下载+安装+激活
MATLAB r2014a,下载包就有7个多GB,装完占用9个多GB,慎装.界面还不错,稍有改良. 其实本文是下载+安装+破解啦.读书人的事,怎么能叫破解呢?所以我这里讲的是如何激活啦. MATLAB ...
- Spring4.0整合Hibernate3 .6
转载自:http://greatwqs.iteye.com/blog/1044271 6.5 Spring整合Hibernate 时至今日,可能极少有J2EE应用会直接以JDBC方式进行持久层访问. ...
- 【POJ3415】 Common Substrings(后缀数组|SAM)
Common Substrings Description A substring of a string T is defined as: T(i, k)=TiTi+1...Ti+k-1, 1≤i≤ ...
- 【BZOJ1030】[JSOI2007]文本生成器
[题意] 给定一些单词,我们定义一篇可读文章至少包含一个这样的单词,求长度为M的可读文章总数. [分析] 用前几题的方法可以求长度为M的不可读的文章总数Sum,所以我们可以用26^M-Sum来求出可读 ...
- spring定时任务的配置使用
spring的定时任务配置分为三个步骤: 1.定义任务 2.任务执行策略配置 3.启动任务 1.定义任务 <!--要定时执行的方法--> <bean id="testTas ...
- Android程序安装后在模拟器上不显示,并且控制台显示The launch will only sync the application package on the device!
初学安卓,今天写了一个小例子,可是eclipse控制台却提示 No Launcher activity found! The launch will only sync the application ...
- bzoj1912
由于k只有2,所以我们分类讨论显然当k=1时,我们只要连一条最长的路径即可就是树的直径L少走了L-1条边如果k=2时,我们再次连边成环后如果成环路径与上一次的最长路径没有相同的边,那少走的边数是路径长 ...
- Welcome Back to C++ (Modern C++)
http://msdn.microsoft.com/en-us/library/hh279654.aspx 看看你是古代还是现代Cpper重点强调 Stack-based scope instead ...