一、环境说明

集群环境至少需要3个节点(也就是3台服务器设备):1个Master,2个Slave,节点之间局域网连接,可以相互ping通,下面举例说明,配置节点IP分配如下:

Hostname IP User Password
master 192.168.59.133 hadoop 123456
slave1 192.168.59.134 hadoop 123456
slave2 192.168.59.135 hadoop 123456

三个节点均使用CentOS 6.5系统,为了便于维护,集群环境配置项最好使用相同用户名、用户密码、相同hadoop、hbase、zookeeper目录结构。

注:可以通过编辑/etc/sysconfig/network文件来修改 hostname 。

二、准备工作

2.1 安装JDK

在三台机器上配置JDK环境,下载 jdk-8u51-linux-x64.rpm 文件直接安装:

  1. $ rpm -ivh jdk-8u51-linux-x64.rpm

修改配置文件 vim /etc/profile

  1. export JAVA_HOME=/usr/java/jdk1.8.0_51
  2. export PATH=$JAVA_HOME/bin:$PATH
  3. export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar

然后重新加载配置文件使之生效:

  1. $ source /etc/profile

2.2 添加Hosts映射关系

分别在三个节点上添加hosts映射关系:

  1. $ vim /etc/hosts

添加的内容如下:

  1. 192.168.59.133 master
  2. 192.168.59.134 slave1
  3. 192.168.59.135 slave2

2.3 集群之间SSH无密码登陆

CentOS默认安装了ssh,如果没有你需要先安装ssh 。

集群环境的使用必须通过ssh无密码登陆来执行,本机登陆本机必须无密码登陆,主机与从机之间必须可以双向无密码登陆,从机与从机之间无限制。

2.3.1 设置master无密码自登陆

主要有三步:①生成公钥和私钥、②导入公钥到认证文件、③更改权限

  1. $ ssh-keygen -t rsa -f ~/.ssh/id_rsa
  2. $ cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
  3. $ chmod 700 ~/.ssh && chmod 600 ~/.ssh/*

测试,第一次登录可能需要yes确认,之后就可以直接登录了:

  1. $ ssh localhost
  2. Last login: Sat Jul 18 22:57:44 2015 from localhost

对于 slave1 和 slave2,进行无密码自登陆设置,操作同上。

2.3.2 设置主机->从机的无密码登录

  1. $ cat ~/.ssh/id_rsa.pub | ssh hadoop@slave1 'cat - >> ~/.ssh/authorized_keys'
  1. $ cat ~/.ssh/id_rsa.pub | ssh hadoop@slave2 'cat - >> ~/.ssh/authorized_keys'

测试:

  1. [hadoop@master ~]$ ssh hadoop@slave1
  2. Last login: Sat Jul 18 23:25:41 2015 from master
  3. [hadoop@master ~]$ ssh hadoop@slave2
  4. Last login: Sat Jul 18 23:25:14 2015 from master

2.3.3 设置从机->主机的无密码登录

分别在slave1、slave2上执行:

  1. $ cat ~/.ssh/id_rsa.pub | ssh hadoop@master 'cat - >> ~/.ssh/authorized_keys'

三、Hadoop集群安装配置

这里会将hadoop、hbase、zookeeper的安装包都解压到/home/hadoop/个人主文件夹下,并重命名为hadoop、hbase、zookeeper。

3.1 修改hadoop配置

配置文件都在~/hadoop/etc/目录下

3.1.1 core-site.xml

  1. <configuration>
  2. <property>
  3. <name>fs.default.name</name>
  4. <value>hdfs://master:9000</value>
  5. </property>
  6. </configuration>

3.1.2 hadoop-env.sh

添加JDK路径:

  1. export JAVA_HOME=/usr/java/jdk1.8.0_51

3.1.3 hdfs-site.xml

  1. <configuration>
  2. <property>
  3. <name>dfs.name.dir</name>
  4. <value>/home/hadoop/hadoop/name</value>
  5. </property>
  6. <property>
  7. <name>dfs.data.dir</name>
  8. <value>/home/hadoop/hadoop/data</value>
  9. </property>
  10. <property>
  11. <name>dfs.replication</name>
  12. <value>3</value>
  13. </property>
  14. </configuration>

3.1.4 mapred-site.xml

  1. <configuration>
  2. <property>
  3. <name>mapred.job.tracker</name>
  4. <value>master:9001</value>
  5. </property>
  6. </configuration>

3.1.5 修改masters文件

  1. master

3.1.6 修改slaves文件

  1. slave1
  2. slave2

注意:三台机器上都进行相同的配置,都放在相同的路径下。

使用scp命令进行从本地到远程(或远程到本地)的轻松文件传输操作:

  1. scp -r /home/hadoop/hadoop slave1:/home/hadoop
  2. scp -r /home/hadoop/hadoop slave2:/home/hadoop

3.2 启动hadoop集群

进入master的~/hadoop目录,执行以下操作:

  1. $ bin/hadoop namenode -format

格式化namenode,第一次启动服务前执行的操作,以后不需要执行。

然后启动hadoop:

  1. $ sbin/start-all.sh

通过jps命令能看到除jps外有5个进程:

  1. $ jps
  2. 4866 NodeManager
  3. 4370 NameNode
  4. 4899 Jps
  5. 4648 SecondaryNameNode
  6. 4779 ResourceManager
  7. 4460 DataNode

四、ZooKeeper集群安装配置

解压zookeeper-3.3.2.tar.gz并重命名为zookeeper。

4.1 修改配置文件zoo.cfg

进入~/zookeeper/conf目录:

  1. $ cp zoo_sample.cfg zoo.cfg

拷贝zoo_sample.cfg文件为zoo.cfg,并编辑如下:

  1. dataDir=/home/hadoop/zookeeper/data
  2. server.1=192.168.59.133:2888:3888
  3. server.2=192.168.59.134:2888:3888
  4. server.3=192.168.59.135:2888:3888

4.2 新建并编辑myid文件

在dataDir目录下新建myid文件,输入一个数字(master为1,slave1为2,slave2为3):

  1. $ mkdir /home/hadoop/zookeeper/data
  2. $ echo "1" > /home/hadoop/zookeeper/data/myid

同样使用scp命令进行远程复制,只不过要修改每个节点上myid文件中的数字。

4.3 启动ZooKeeper集群

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

  1. $ ~/zookeeper/bin/zkServer.sh start
  1. 如果启动报类似异常:QuorumCnxManager@384] - Cannot open channel to 2 at election address slave-02/192.168.0.178:3888 是可以忽略的,因为该服务启动时会尝试连接所有节点,而其他节点尚未启动。通过后面部分可以看到,集群在选出一个Leader后,最后稳定 了。其他结点可能也出现类似问题,属于正常。

  2. 关闭防火墙。在hadoop集群环境(linux系统)中最好关闭防火墙,不然会出现很多问题,例如namenode找不到datanode等。如果不关闭防火墙,客户端使用API操作HDFS以及ZooKeeper,可能就会出现下面常见的两种异常:

    • 使用API操作HDFS时会出现异常:java.net.NoRouteToHostException: No route to host
    • 使用API操作ZK时会出现异常:org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for xxxx
  3. 使用root权限登陆后,输入关闭防火墙命令:

    1. $ /etc/init.d/iptables stop
    2. $ service iptables stop
  4. 修改禁用selinux: /etc/selinux/config文件,设置"SELINUX=disabled"

五、HBase集群安装配置

解压hbase-1.0.1.1-bin.tar.gz并重命名为hbase。

5.1 hbase-env.sh

  1. export JAVA_HOME=/usr/java/jdk1.8.0_51
  2. export HBASE_CLASSPATH=/home/hadoop/hadoop/etc/hadoop/
  3. export HBASE_MANAGES_ZK=false

5.2 hbase-site.xml

  1. <configuration>
  2. <property>
  3. <name>hbase.rootdir</name>
  4. <value>hdfs://master:9000/hbase</value>
  5. </property>
  6. <property>
  7. <name>hbase.master</name>
  8. <value>master</value>
  9. </property>
  10. <property>
  11. <name>hbase.cluster.distributed</name>
  12. <value>true</value>
  13. </property>
  14. <property>
  15. <name>hbase.zookeeper.property.clientPort</name>
  16. <value>2181</value>
  17. </property>
  18. <property>
  19. <name>hbase.zookeeper.quorum</name>
  20. <value>master,slave1,slave2</value>
  21. </property>
  22. <property>
  23. <name>zookeeper.session.timeout</name>
  24. <value>60000000</value>
  25. </property>
  26. <property>
  27. <name>dfs.support.append</name>
  28. <value>true</value>
  29. </property>
  30. </configuration>

5.3 更改 regionservers

在 regionservers 文件中添加slave列表:

  1. slave1
  2. slave2

5.4 分发并同步安装包

将整个hbase安装目录都拷贝到所有slave服务器:

  1. $ scp -r /home/hadoop/hbase slave1:/home/hadoop
  2. $ scp -r /home/hadoop/hbase slave2:/home/hadoop

六、启动集群

1. 启动ZooKeeper

~/zookeeper/bin/zkServer.sh start

2. 启动hadoop

~/hadoop/sbin/start-all.sh

3. 启动hbase

~/hbase/bin/start-base.sh

4. 启动后,master上进程和slave进程列表

  1. [hadoop@master ~]$ jps
  2. 6225 Jps
  3. 2897 SecondaryNameNode # hadoop进程
  4. 2710 NameNode # hadoop master进程
  5. 3035 ResourceManager # hadoop进程
  6. 5471 HMaster # hbase master进程
  7. 2543 QuorumPeerMain # zookeeper进程
  1. [hadoop@slave1 ~]$ jps
  2. 4689 Jps
  3. 2533 QuorumPeerMain # zookeeper进程
  4. 2589 DataNode # hadoop slave进程
  5. 4143 HRegionServer # hbase slave进程

5. 进入hbase shell进行验证

  1. [hadoop@master ~]$ hbase/bin/hbase shell
  2. 2015-07-20 00:42:11,725 WARN [main] util.NativeCodeLoader: Unable to load native-hadoop library for your platform... using builtin-java classes where applicable
  3. HBase Shell; enter 'help<RETURN>' for list of supported commands.
  4. Type "exit<RETURN>" to leave the HBase Shell
  5. Version 1.0.1.1, re1dbf4df30d214fca14908df71d038081577ea46, Sun May 17 12:34:26 PDT 2015
  6. hbase(main):001:0> list
  7. TABLE
  8. 0 row(s) in 1.6950 seconds
  9. => []
  10. hbase(main):002:0> status
  11. 2 servers, 0 dead, 1.0000 average load
  12. hbase(main):003:0>

个人站点:http://songlee24.github.com


参考:

[1] www.smalldeng.blog.51cto.com/1038075/1329290

[2] www.marysee.blog.51cto.com/1000292/629405

Hadoop+HBase+ZooKeeper分布式集群环境搭建的更多相关文章

  1. ZooKeeper 完全分布式集群环境搭建

    1. 搭建前准备 示例共三台主机,主机IP映射信息如下: 192.168.32.101 s1 192.168.32.102 s2 192.168.32.103 s3 2.下载ZooKeeper, 以  ...

  2. Hadoop完全分布式集群环境搭建

    1. 在Apache官网下载Hadoop 下载地址:http://hadoop.apache.org/releases.html 选择对应版本的二进制文件进行下载 2.解压配置 以hadoop-2.6 ...

  3. Spark 1.6.1分布式集群环境搭建

    一.软件准备 scala-2.11.8.tgz spark-1.6.1-bin-hadoop2.6.tgz 二.Scala 安装 1.master 机器 (1)下载 scala-2.11.8.tgz, ...

  4. Kafka 完全分布式集群环境搭建

    思路: 先在主机s1上安装配置,然后远程复制到其它两台主机s2.s3上, 并分别修改配置文件server.properties中的broker.id属性. 1. 搭建前准备 示例共三台主机,主机IP映 ...

  5. ZooKeeper伪集群环境搭建

    1.从官网下载程序包. 2.解压. [dev@localhost software]$ tar xzvf zookeeper-3.4.6.tar.gz 3.进入zookeeper文件夹后创建data文 ...

  6. 阿里云ECS服务器部署HADOOP集群(一):Hadoop完全分布式集群环境搭建

    准备: 两台配置CentOS 7.3的阿里云ECS服务器: hadoop-2.7.3.tar.gz安装包: jdk-8u77-linux-x64.tar.gz安装包: hostname及IP的配置: ...

  7. Hadoop伪分布式集群环境搭建

    本教程讲述在单机环境下搭建Hadoop伪分布式集群环境,帮助初学者方便学习Hadoop相关知识. 首先安装Hadoop之前需要准备安装环境. 安装Centos6.5(64位).(操作系统再次不做过多描 ...

  8. 【Zookeeper】集群环境搭建

    一.概述 1.1 Zookeeper的角色 1.2 Zookeeper的读写机制 1.3 Zookeeper的保证 1.4 Zookeeper节点数据操作流程 二.Zookeeper 集群环境搭建 2 ...

  9. Hadoop学习(一):完全分布式集群环境搭建

    1. 设置免密登录 (1) 新建普通用户hadoop:useradd hadoop(2) 在主节点master上生成密钥对,执行命令ssh-keygen -t rsa便会在home文件夹下生成 .ss ...

随机推荐

  1. PAT Basic 1051

    1051 复数乘法 复数可以写成 (A+Bi) 的常规形式,其中 A 是实部,B 是虚部,i 是虚数单位,满足 i​2​​=−1:也可以写成极坐标下的指数形式 (R×e​(Pi)​​),其中 R 是复 ...

  2. tabel使用总结

    对日常使用到的tabel做下记录: <table cellspacing="0"><!--单元格间距为零 默认为2 border默认为 0--> <t ...

  3. 对 Servlet 的改进

    通过上一篇博客:Servlet 的详解 http://www.cnblogs.com/ysocean/p/6912191.html,我们大致知道了 Servlet 的基本用法.但是稍微分析一下 Ser ...

  4. Hive中文注释乱码解决方案(2)

    本文来自网易云社区 作者:王潘安 执行阶段 launchTask    回到Driver类的runInternal方法,看以下执行过程.在runInternal方法中,执行过程调用了execute方法 ...

  5. IIS PUT

    测试版本:IIS6.0 利用工具 1.IIS PUT Scaner By ZwelL 2.桂林老兵IIS写权限利用程序   -------------------------------------- ...

  6. PL/SQL配置访问多个不同IP的oracle

     第一步:打开Oracle的tnsnames.ora文件.添加 test = (DESCRIPTION =    (ADDRESS_LIST =      (ADDRESS = (PROTOCOL = ...

  7. .NET重构(一):抽象工厂模式实现登录

    导读:一路艰辛,我也走到了重构.在重构之前,师傅让用经典三层(UI.BLL.DAL)敲了登录.用户的增删改查,共五条线.从开始对三层的朦胧,到五条线结束,终于对三层有了逻辑上清晰的理解.然后就画了几天 ...

  8. hdu6071[最短路+解不等式] 2017多校4

    求出所有,从2走到x所需的花费在对 t = 2*min(d1,2, d2,3) 模运算下,  所有剩余系的最短路即可(把一个点拆成 t 个点, 每个点代表一种剩余系), 知道了所有剩余系就可以凑出答案 ...

  9. 手写数字0-9的识别代码(SVM支持向量机)

    帮一个贴吧的朋友改的一段代码,源代码来自<机器学习实战> 原代码的功能是识别0和9两个数字 经过改动之后可以识别0~9,并且将分类器的产生和测试部分分开来写,免得每次测试数据都要重新生成分 ...

  10. SPOJ QTREE Query on a tree ——树链剖分 线段树

    [题目分析] 垃圾vjudge又挂了. 树链剖分裸题. 垃圾spoj,交了好几次,基本没改动却过了. [代码](自带常数,是别人的2倍左右) #include <cstdio> #incl ...