Hadoop及Zookeeper+HBase完全分布式集群部署

Hadoop及HBase集群部署

一、 集群环境

  1. 系统版本

虚拟机:内存 16G CPU 双核心

系统: CentOS-7 64位

系统下载地址:

http://124.202.164.6/files/417500000AB646E7/mirrors.163.com/centos/7/isos/x86_64/CentOS-7-x86_64-DVD-1708.iso

  1. 软件版本

hadoop-2.8.1.tar.gz

hbase-1.3.1-bin.tar.gz

zookeeper-3.4.10.tar.gz

jdk-8u144-linux-x64.tar.gz

  1. 主机环境

物理机:Window Server 2012 R2

虚拟机:VMware Workstation Pro 12

  1. 三台虚拟机

=======Hamster======

I P:192.168.0.10

用户名:hadoop

=======hslave-1======

I P:192.168.0.11

用户名:hadoop

=======hslave-2======

I P:192.168.0.12

用户名:hadoop

  1. 集群环境

一共建立了三台虚拟机

Ip节点名称为:

Master节点

192.168.0.10 hmaster.hcluster

Slave节点

192.168.0.11 hslave-1.hcluster

192.168.0.12 hslave-2.hcluster

三个虚拟机上都必须安装zookeeper

注意:操作说明,命令前面有#号代表root用户登入的

  1. 时间说明

书写时间:2017-10-19

第一次更新时间:2017-10-22

二、 安装基础集群环境

  1. 基础环境配置

为了配置方便,集群中防火墙已经全部关闭,并且禁止开机启动

  1. 关闭防火墙

由于新版的CentOS-7 默认采用的firewalld防火墙,不是iptables,关闭命令为

systemctl stop firewalld

systemctl mask firewalld

如果想切换成iptables防火墙请如下操作:

安装:yum install iptables-services

设置开机启动 systemctl enable iptables

具体使用请看iptables基础操作

注意:在集群中所有节点上执行相同的操作

  1. 配置/etc/hosts

编辑/etc/host文件,加入集群节点的IP与Hostname对应关系

192.168.0.10 hmaster hmaster.hcluster

192.168.0.11 hslave-1 hslave-1.hcluster

192.168.0.12 hslave-2 hslave-2.hcluster

注意:在集群中所有节点上执行相同的操作

  1. 安装Java

1) 解压jdk-8u144-linux-x64.tar.gz至/opt目录

tar -xzf jdk-7u79-linux-x64.tar.gz -C

/opt

2) 添加Java环境变量到文件/etc/profile的最后

=================JAVA_HOME===================

export

JAVA_HOME="/opt/jdk1.8.0_144"

export JAVA_BIN=$JAVA_HOME/bin

export JAVA_LIB=$JAVA_HOME/lib

export

CLASSPATH=.:$JAVA_LIB/tools.jar:$JAVA_LIB/dt.jar

export PATH=$JAVA_BIN:$PATH

3) 导入环境变量

source /etc/profile

4) 验证安装结果

执行java -version验证是否安装成功

结果:

注意:在集群中所有节点上执行相同的操作

  1. 安装ntp

在Hadoop集群中, 需要保证各节点的时钟同步

1) 在所有节点安装ntp服务

yum install ntp ntpdate

2) Master节点配置

在Master节点,编辑配置文件/etc/ntp.conf,

添加如下配置,使Master节点的ntp服务接受来自集群网段的时间同步请求

restrict 192.168.1.0 mask 255.255.255.0

nomodify notrap

3) 启动Master节点的ntpd服务,并设置为开机启动

chkconfig --level 345 ntpd on

service ntpd start

4) Slave节点配置

在Slave节点,编辑配置文件/etc/ntp.conf,

添加如下配置,使之与Master节点的时钟进行同步

server hamster

第一次启动Slave节点上的ntpd前,先手动与Master节点进行时钟同步

ntpdate hamster

5) 启动Slave节点的ntpd服务,并设置为开机启动

chkconfig --level 345 ntpd on

service ntpd start

注意:Ntpd启动的时候通常需要一段时间大概5分钟进行时间同步,所以在ntpd刚刚启动的时候还不能正常提供时钟服务,报错"no server

suitable for synchronization found"

  1. 安装rsync

通过rsync工具,hadoop控制脚本能够将配置文件分发到集群的各个节点中。 默认该功能未启用,可以通过设置hadoop-env.sh中的HADOOP_MASTER变量启动。 启用rsync后,当工作节点的守护进程启动后,会把以HADOOP_MASTER为根的目录树与本地的HADOOP_INSTALL目录同步

yum install

rsync

注意:在集群中所有节点上执行相同的操作

  1. 配置Master节点到所有节点的无密码登录

前提: 集群各节点使用相同的登录用户名,且不建议使用root用户,本文中使用用户名hadoop。

在所有节点上创建用户hadoop

useradd hadoop

passwd hadoop

New password:

Retype new password:

passwd: all authentication tokens updated

successfully.

1) 在Master节点上生成主机密钥

在Master 第一个机器节点上,切换hadoop用户进行设置

$ ssh-keygen -t rsa -P ‘’

一路回车,最后输入y回车

执行上述命令后,一路回车,会在.ssh下生成私钥id_rsa和公钥id_rsa.pub两个文件

2) 复制Master公钥到被登录节点的authorized_keys文件中

首先配置Master到Master的无密码登录

注意:以下步骤必须在hadoop(只要不是root用户就可以)用户下进行创建.ssh文件夹,然后复制authorized_keys文件,在hadoop用户下设置对应的权限

cat .ssh/id_rsa.pub >>

.ssh/authorized_keys

chmod 600 .ssh/authorized_keys

然后配置Master到Slave的无密码登录,将Master节点id_rsa.pub中的内容复制到Slave节点的${HOME}/.ssh/authorized_keys文件中

3) 首先将公钥文件传到Slave节点

scp .ssh/id_rsa.pub [email protected]:/home/hadoop/id_rsa.pub.hmaster

4) 在Slave节点上创建文件.ssh/authorized_keys

mkdir .ssh

cat id_rsa.pub.hmaster >>

.ssh/authorized_keys

chmod 700 .ssh

chmod 600 .ssh/authorized_keys

rm -f id_rsa.pub.hmaster

5) 依次在所有Slave节点上执行相同的操作,并在Master节点登录Slave进行验证

ssh hslave-1

6) 如果不能连接

在root用户下打开Terminal

输入命令 cat /etc/passwd

从上图可以看出hadoop用户,缺少了一个定义,然后用gedit或者vim编辑

gedit /etc/passwd

在1001: 这里添加hadoop 保存即可

这样就可以免密登录了:

  1. 修改 ulimit 限制

1) 这个配置针对HBase

参照HBase官方文档

因为HBase 会在同一时间打开大量的文件句柄和进程,超过 Linux 的默认限制,导致可能会出现如下错误。

所以编辑/etc/security/limits.conf文件,添加以下两行,提高能打开的句柄数量和进程数量

hadoop - nofile 32768

hadoop - nproc 32000

还需要在/etc/pam.d/common-session 加上这一行:

否则在/etc/security/limits.conf上的配置不会生效。

最后还要注销(logout或者exit)后再登录,这些配置才能生效

判断是否生效:

登录hadoop用户之后,在命令行中输入:ulimit -n -u

查看最大文件和进程数量是否改变了。

返回结果如下:就成功了

注意:在集群中所有节点上执行相同的操作

至此, 集群及Hadoop的依赖配置已经完成,下面进行Hadoop的安装。

三、 安装Hadoop

  1. 解压hadoop tar包

1) 将hadoop软件包上传至集群各节点并解压

本文中将hadoop-2.5.1.tar.gz上传至hadoop用户的主目录/home/hadoop下。

tar -xzf hadoop-2.5.1.tar.gz

mv hadoop-2.5.1 hadoop

注意:在集群中所有节点上执行相同的操作

2) 设置hadoop文件的权限普通用户

chown -R Hadoop:Hadoop /home/Hadoop/hadoop

3) 配置hadoop各配置文件

hadoop的配置文件位于/home/hadoop/etc/hadoop下

a) 修改jdk路径

b) core-site.xml

用于定义系统级别的参数,如HDFS URL、Hadoop的临时目录以及用于rack-aware集群中的配置文件的配置等

Slave主机修改hmaster为相应的节点名称例如第一台:hslave-1

c) hdfs-site.xml

HDFS的相关设定,如文件副本的个数、块大小及是否使用强制权限等

d) mapred-site.xml.template

HDFS的相关设定,如reduce任务的默认个数、任务所能够使用内存的默认上下限等

Slave主机修改hmaster为相应的节点名称例如第一台:hslave-1

e) yarn-site.xml

Slave主机修改hmaster为相应的节点ip地址例如第一台:192.168.0.11

f) slaves

Hadoop集群的slave主机列表,master启动时会通过SSH连接至此列表中的所有主机并为其启动DataNode和NodeManager

文件在:hadoop/etc/hadoop/slaves

hslave-1

hslave-2

Master 主机特有的配置

g) 如果这个文件不存在就新建一个文件名字为masters,里面写入hmaster这个主机节点

Master 主机特有的配置

4) 配置环境变量

export HADOOP_HOME=/usr/hadoop

export PATH=$PATH :$HADOOP_HOME/bin

5) 格式化HDFS存储

进入hadoop下的bin目录(只在主机上操作)

./hdfs

namenode -format

在格式化过程中注意输出结果,成功后会有类似下面的输出:

出现上图就是成功了

6) 启动Hadoop服务

启动和停止脚本位于hadoop下sbin目录

a) 启动HDFS

sbin/start-dfs.sh

b) 启动Yarn

sbin/start-yarn.sh

c) 启动MapReduce JobHistory Server

sbin/mr-jobhistory-daemon.sh start

historyserver

d) 启动所有一句话就可以

sbin/start-all.sh

e) 验证服务是否正常运行 查看Master节点上服务:

新打开一个Terminal,然后输入jps查看结果

节点机输入jps

7) 停止Hadoop服务

a) 停止HDFS

sbin/stop-dfs.sh

b) 停止Yarn

sbin/stop-yarn.sh

c) 停止MapReduce JobHistory Server

sbin/mr-jobhistory-daemon.sh stop

historyserver

d) 停止所有一句话就可以

sbin/stop-all.sh

  1. Web界面查看

端口为50070

四、 安装ZooKeeper

注意:zookeeper安装在所有节点

  1. zookeeper安装在所有节点

a) 在所有节点上解压zookeeper

b) zookeeper配置文件zoo.cfg位于zookeeper下的conf目录下,默认不存在,可根据zoo_sample.cfg生成

cd conf

cp zoo_sample.cfg zoo.cfg

c) zoo.cfg配置后内容如下:

The number of milliseconds of each tick

tickTime=2000

The number of ticks that the initial

synchronization phase can take

initLimit=10

The number of ticks that can pass between

sending a request and getting an

acknowledgement

syncLimit=5

the directory where the snapshot is

stored.

do not use /tmp for storage, /tmp here is

just

example sakes.

dataDir=/home/hadoop/zookeeper/data

dataLogDir=/home/hadoop/zookeeper/logs

the port at which the clients will

connect

clientPort=2181

the maximum number of client connections.

increase this if you need to handle more

clients

maxClientCnxns=60

Be sure to read the maintenance section

of the

administrator guide before turning on

autopurge.

http://zookeeper.apache.org/doc/current/zookeeperAdmin.html#sc_maintenance

The number of snapshots to retain in

dataDir

autopurge.snapRetainCount=3

Purge task interval in hours

Set to "0" to disable auto

purge feature

autopurge.purgeInterval=1

server.1=0.0.0.0:2888:3888

server.2=192.168.0.11:2888:3888

server.3=192.168.0.12:2888:3888

将zoo.cfg同步到zookeeper所有节点

d) 创建zookeeper数据目录,并建立节点标识文件myid

在hmaster节点创建标识为1的文件myid

mkdir -p /home/hadoop/zookeeperdata/data

echo "1" >

/home/hadoop/zookeeperdata/data/myid

同理,与zoo.cfg中配置相对应,在hslave-1和hslave-2节点上分别创建标识为2和3的标识文件。

e) hslave-1

mkdir -p /home/hadoop/zookeeperdata/data

echo "2" >

/home/hadoop/zookeeperdata/data/myid

f) hslave-2

mkdir -p /home/hadoop/zookeeperdata/data

echo "3" >

/home/hadoop/zookeeperdata/data/myid

  1. 启动zookeeper集群

zookeeper启动脚本位于zookeeper下的bin目录下

启动ZooKeeper

在ZooKeeper集群的每个结点上,执行启动ZooKeeper服务的脚本,如下所示:

每一个节点机都得需要执行下面命令

bin/zkServer.sh start

zookeeper的日志zookeeper.out默认位于zookeeper主目录下,可通过修改${zkhome}/bin/zkEnv.sh中的ZOO_LOG_DIR变量来改变日志路径。

  1. 验证是否安装成功

a) 安装完成之后,新打开一个Terminal,输入jps进行查看,是否有QuorumPeerMain线程存在,以下图片是没有此线程,

b) 然后在刚才bin目录下输入指令:cat zookpeer.out

如果返回结果为:

c) 然后结果是java的环境变量可能没有起作用

输入命令 source /etc/profile

d) 防火墙问题,需要关闭防火墙

systemctl disable firewalld

service iptables stop

e) 看到下图红色框内进程有了就代表成功了

f) 输入命令查看状态是否启动成功

./zkServer.sh status

非常大的注意:

如果遇到第一个启动之后,但是输入:# ./zkServer.sh status

出现

代表其他节点上的还没有启动,要接着去启动其他节点机上的zookeeper,

启动之后在输入查看

就正常了

五、 HBase安装

HBase集群架构分为1个HMaster(hmaster)和2个HRegionServer(hslave-1,

hslave-2)。

  1. 在所有节点解压hbase

tar -xzf hbase-1.1.5-bin.tar.gz

mv hbase-1.1.5-bin hbase

以下称hbase主目录为${HBASE_HOME}。

  1. 配置HBase

hbase配置文件位于${HBASE_HOME}/conf目录下。

1) hbase-env.sh

主要改两个配置:

export JAVA_HOME=/opt/jdk1.8.0_79

export HBASE_MANAGES_ZK=false

2) hbase-site.xml

这里要特别注意的是hbase.rootdir里面的HDFS地址是要跟Hadoop 的core-site.xml里面的fs.defaultFS 的HDFS的IP地址或者域名、端口必须一致。其次是hbase.zookeeper.property.dataDir,其中a01513是我的操作系统用户名,根据你自己的情况改吧,或者放到其他目录也是可以的。hbase.cluster.distributed 是启用分布式模式,这里必须为true哦。hbase.zookeeper.quorum是配置集群IP地址集或者域名集,逗号分隔。hbase.master配置HBase的主节点端口,web端口是60010,通过web UI你可以确认你是否访问成功了。

3) 配置regionservers主机列表

hslave-1

hslave-2

4) 节点机列表都为

hslave-1

hslave-2

注意:将上述配置同步到集群中所有节点。

  1. 启动停止HBase

HBase脚本位于${HBASE_HOME}/bin目录下。

bin/start-hbase.sh

  1. 停止HBase

bin/stop-hbase.sh

  1. 如果启动的时候出现此问题,就注释下面内容

出错地方

注释的代码

这个错误是时间没有同步

注意:每一个节点机都配置

  1. 查看是否启动成功

主机节点

节点机1、节点机2

注意:如果节点机HRegionServer进程,时间同步出现了问题,可以把时间同步加大

  1. 可以进入hbase shell,使用命令查看hbase状态
  2. 查询出表

出现下图就表示真正成功了

  1. Web界面查看

端口为16010

六、 总结

至此:完全分布式Hadoop+Zookeeper+HBase集群测试环境基本圆满完成,如有问题继续研究,通过这3天的时间研究得到了很多的知识。

原文地址:https://www.cnblogs.com/suway/p/9606982.html

时间: 2024-08-05 07:59:15

Hadoop及Zookeeper+HBase完全分布式集群部署的相关文章

基于Hadoop的数据分析综合管理平台之Hadoop、HBase完全分布式集群搭建

能够将热爱的技术应用于实际生活生产中,是做技术人员向往和乐之不疲的事. 现将前期手里面的一个项目做一个大致的总结,与大家一起分享.交流.进步.项目现在正在线上运行,项目名--基于Hadoop的数据分析综合管理平台. 项目流程整体比较清晰,爬取数据(txt文本)-->数据清洗-->文本模型训练-->文本分类-->热点话题发现-->报表"实时"展示,使用到的技术也是当今互联网公司常用的技术:Hadoop.Mahout.HBase.Spring Data Had

solr 集群(SolrCloud 分布式集群部署步骤)

SolrCloud 分布式集群部署步骤 安装软件包准备 apache-tomcat-7.0.54 jdk1.7 solr-4.8.1 zookeeper-3.4.5 注:以上软件都是基于 Linux 环境的 64位 软件,以上软件请到各自的官网下载. 服务器准备 为搭建这个集群,准备三台服务器,分别为 192.168.0.2 -- master 角色192.168.0.3 -- slave 角色192.168.0.4 -- slave 角色 搭建基础环境 安装 jdk1.7 - 这个大家都会安装

solrCloud 4.9 分布式集群部署及注意事项

环境搭建 一.zookeeper 参考:http://blog.chinaunix.net/uid-25135004-id-4214399.html 现有4台机器 10.14.2.201 10.14.2.202 10.14.2.203 10.14.2.204 安装zookeeper集群 在所有机器上进行 1.下载安装包解压 tar xvf zookeeper-3.4.5.tar.gz -C /export/ cd /export/ ln -s zookeeper-3.4.5 zookeeper

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

超详细从零记录Ubuntu16.04.1 3台服务器上Hadoop2.7.3完全分布式集群部署过程.包含,Ubuntu服务器创建.远程工具连接配置.Ubuntu服务器配置.Hadoop文件配置.Hadoop格式化.启动.(首更时间2016年10月27日) 主机名/hostname IP 角色 hadoop1 192.168.193.131 ResourceManager/NameNode/SecondaryNameNode hadoop2 192.168.193.132 NodeManager/

Mesos+Zookeeper+Marathon+Docker分布式集群管理最佳实践

参考赵班长的unixhot以及马亮blog 笔者QQ:572891887 Linux架构交流群:471443208 1.1Mesos简介 Mesos是Apache下的开源分布式资源管理框架,它被称为分布式系统的内核.Mesos最初是由加州大学伯克利分校的AMPLab开发,后在Twitter得到广泛使用. Mesos-Master:主要负责管理各个framework和slave,并将slave上的资源分配给各个framework. Mesos-Slave:负责管理本节点上的各个mesos-task

大数据系列之Hadoop分布式集群部署

本节目的:搭建Hadoop分布式集群环境 环境准备 LZ用OS X系统 ,安装两台Linux虚拟机,Linux系统用的是CentOS6.5:Master Ip:10.211.55.3 ,Slave Ip:10.211.55.4 各虚拟机环境配置好Jdk1.8(1.7+即可) 资料准备 hadoop-2.7.3.tar.gz 虚拟机配置步骤 以下操作都在两台虚拟机 root用户下操作,切换至root用户命令 配置Master hostname 为Master ; vi /etc/sysconfi

ZooKeeper分布式集群部署及问题

ZooKeeper为分布式应用系统提供了高性能服务,在许多常见的集群服务中被广泛使用,最常见的当属HBase集群了,其他的还有Solr集群.Hadoop-2中的HA自己主动故障转移等. 本文主要介绍了为HBase集群部署ZooKeeper集群的过程.并说明了部署过程中遇到的问题. 默认情况下,由HBase管理ZooKeeper的启动和停止.要想改动这一默认行为,须要将hbase-env.sh中的export HBASE_MANAGES_ZK=true改为export HBASE_MANAGES_

ZooKeeper的伪分布式集群搭建以及真分布式集群搭建

zk集群的一些基本概念 zookeeper集群搭建: zk集群,主从节点,心跳机制(选举模式) 配置数据文件 myid 1/2/3 对应 server.1/2/3 通过 zkCli.sh -server [ip]:[port] 命令检测集群是否配置成功 和其他大多数集群结构一样,zookeeper集群也是主从结构.搭建集群时,机器数量最低也是三台,因为小于三台就无法进行选举.选举就是当集群中的master节点挂掉之后,剩余的两台机器会进行选举,在这两台机器中选举出一台来做master节点.而当原

ZooKeeper的伪分布式集群搭建

ZooKeeper集群的一些基本概念 zookeeper集群搭建: zk集群,主从节点,心跳机制(选举模式) 配置数据文件 myid 1/2/3 对应 server.1/2/3 通过 zkCli.sh -server [ip]:[port] 命令检测集群是否配置成功 和其他大多数集群结构一样,zookeeper集群也是主从结构.搭建集群时,机器数量最低也是三台,因为小于三台就无法进行选举.选举就是当集群中的master节点挂掉之后,剩余的两台机器会进行选举,在这两台机器中选举出一台来做maste