作为Hadoop初学者,自然要从安装入手。而hadoop的优势就是分布式,所以,也一定要安装分布式的系统。

整体安装步骤,包括Zookeeper+HDFS+Hbase,为了文章简洁,我会分三篇blog记录我的安装步骤。

本文记录的是集群环境准备,zookeeper的安装步骤。

~~~~~~~~~~~环境准备部分~~~~~~~~~~~~~~~~~

IP部署规划(准备了三个虚拟机,操作系统是Centos6.7)

Zookeeper主机分配

192.168.67.101 c6701192.168.67.102 c6702192.168.67.103 c6703

HDFS主机分配

192.168.67.101 c6701 --Namenode+datanode192.168.67.102 c6702 --datanode192.168.67.103 c6703 --datanode

Hbase主机分配

192.168.67.101 c6701 --Master + region192.168.67.102 c6702 --region192.168.67.103 c6703 --region

1. 为了分别管理各个服务,我为每个服务,都单独创建了用户.

创建的用户有:

zk

hdfs

hbase

2. 为每一个用户创建ssh免密,并分发到全部节点,这样,我就只在C6701上执行命令,通过远程的方式安装C6702和C6703

ssh-keygen -t rsa -f ~/.ssh/id_rsa

拷贝密钥到全部节点即可(只有c6701访问02和03不需要密码,反向访问是需要密码的)

ssh-copy-id  c6701

ssh-copy-id  c6702

ssh-copy-id  c6703

3. 强调一下,/etc/hosts 需要设置

[root@c6701 ~]# more /etc/hosts 192.168.67.101 c6701.org c6701192.168.67.102 c6702.org c6702192.168.67.103 c6703.org c6703

4. 下面在C6701执行,中间会调用ssh远程执行一些命令,验证ssh免密是否生效

ssh c6702 "cat /proc/cpuinfo"

ssh c6702 "hostname"

5. 下载安装软件(内网地址)

cd /tmp/software

wget http://192.21.104.48/deploy/jdk-8u144-linux-x64.tar.gz

wget http://192.21.104.48/deploy/zookeeper-3.4.6.tar.gz

wget http://192.21.104.48/deploy/hbase-1.1.3.tar.gz

wget http://192.21.104.48/deploy/hadoop-2.6.0-EDH-0u2.tar.gz

wget http://192.21.104.48/deploy/hadoop-2.7.1.tar.gz

6. 安装JDK,全部节点都要安装

#tar -xzvf  jdk-8u144-linux-x64.tar.gz -C /usr/local

7. 添加下面信息到.bash_profile

export JAVA_HOME=/usr/local/jdk1.8.0_144

export JRE_HOME=/usr/local/jdk1.8.0_144/jre

export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar:$JRE_HOME/lib:$CLASSPATH

export PATH=$JAVA_HOME/bin:$PATH

source /etc/profile

8. 检查版本信息

# java -version

java version "1.8.0_144"

Java(TM) SE Runtime Environment (build 1.8.0_144-b01)

Java HotSpot(TM) 64-Bit Server VM (build 25.144-b01, mixed mode)

~~~~~~~~~~~zookeeper的安装部分~~~~~~~~~~~~~~~~~

1. 在C6701安装Zookeeper

useradd zk

echo "zk:zk" | chpasswd

su - zk

mkdir zk

tar -zxvf /tmp/software/zookeeper-3.4.6.tar.gz -C /home/zk/zk

~~~~~~~~~~~~~zoo.cfg的配置~~~~~~~~~~~~~~~

$ pwd/home/zk/zk/zookeeper-3.4.6/conf/zoo.cfg

$ cat /home/zk/zk/zookeeper-3.4.6/conf/zoo.cfg |grep -v '^#'

tickTime=2000

initLimit=10

syncLimit=5

dataDir=/data/zookeeper/data

dataLogDir=/data/zookeeper/log

clientPort=2181

autopurge.snapRetainCount=3

autopurge.purgeInterval=6

server.1=c6701:2888:3888

server.2=c6702:2888:3888

server.3=c6703:2888:3888~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

2. 根据zoo.cfg创建data和log两个文件夹

#mkdir -p /data/zookeeper/data#mkdir -p /data/zookeeper/log#chown -R zk:zk /data/zookeeper#chown -R zk:zk /data/zookeeper/data#chown -R zk:zk /data/zookeeper/log

3.在zookeeper的目录中,创建上述两个文件夹。进入zkdata文件夹,创建文件myid,填入1。这里写入的1,是在zoo.cfg文本中的server.1中的1。当我们把所有文件都配置完毕,我们把hadoop1中yarn目录复制到其它机器中,我们在修改每台机器中对应的myid文本,hadoop2中的myid写入2。其余节点,安照上面配置,依此写入相应的数字。Zkdatalog文件夹,是为了指定zookeeper产生日志指定相应的路径。

# su - zk -c "echo 1 > /data/zookeeper/data/myid"

4. 添加环境变量,在/etc/profile目录中,将ZOOKEEPER_HOME/bin在原有的PATH后面加入":$ZOOKEEPER_HOME/bin"

关于环境变量修改/etc目录下的profile文件,也可以在根目录下的.bashrc目录下添加环境变量。这两者有什么区别:.bashrc是对当前目录用户的环境变量,profile文件是对所有用户都开放的目录。当系统加载文件中,先从profile找相应的路劲,如果没有会在.bashrc文件中找对应的环境变量路径。这两者大家稍至了解。

然后 source /etc/profile

5. 安装c6702的zookeeper

#ssh c6702 "useradd zk"#ssh c6702 "echo "zk:zk" | chpasswd"

为zk用户ssh免密

#ssh-copy-id  zk@c6702

拷贝软件

#scp -r /tmp/software/hadoop-* root@c6702:/tmp/software#ssh c6702 "chmod 777 /tmp/software/*"

创建目录,解压软件

#ssh zk@c6702 "mkdir zk"#ssh zk@c6702 "tar -zxvf /tmp/software/zookeeper-3.4.6.tar.gz -C /home/zk/zk"#ssh zk@c6702 "ls -al zk"#ssh zk@c6702 "ls -al zk/zookeeper*"#ssh zk@c6702 "rm /home/zk/zk/zookeeper-3.4.6/conf/zoo.cfg"#scp -r /home/zk/zk/zookeeper-3.4.6/conf/zoo.cfg zk@c6702:/home/zk/zk/zookeeper-3.4.6/conf/.#ssh zk@c6702 "cat /home/zk/zk/zookeeper-3.4.6/conf/zoo.cfg |grep -v '^#'"

根据zoo.cfg创建目录#ssh c6702 "mkdir -p /data/zookeeper/data"#ssh c6702 "chown -R zk:zk /data/zookeeper"#ssh c6702 "chown -R zk:zk /data/zookeeper/data"#ssh c6702 "mkdir -p /data/zookeeper/log" #ssh c6702 "chown -R zk:zk /data/zookeeper/log"

创建文件myid,填入2

ssh zk@c6702  "echo 2 > /data/zookeeper/data/myid"

6. 安装c6703的zookeeper

#ssh c6703 "useradd zk"#ssh c6703 "echo "zk:zk" | chpasswd"

为zk用户ssh免密

ssh-copy-id  zk@c6703

拷贝软件

#scp -r /tmp/software/hadoop-* root@c6703:/tmp/software#ssh c6703 "chmod 777 /tmp/software/*"

创建目录,解压软件

#ssh zk@c6703 "mkdir zk"#ssh zk@c6703 "tar -zxvf /tmp/software/zookeeper-3.4.6.tar.gz -C /home/zk/zk"#ssh zk@c6703 "ls -al zk"#ssh zk@c6703 "ls -al zk/zookeeper*"#ssh zk@c6703 "rm /home/zk/zk/zookeeper-3.4.6/conf/zoo.cfg"#scp -r /home/zk/zk/zookeeper-3.4.6/conf/zoo.cfg zk@c6703:/home/zk/zk/zookeeper-3.4.6/conf/.#ssh zk@c6703 "cat /home/zk/zk/zookeeper-3.4.6/conf/zoo.cfg |grep -v '^#'"

根据zoo.cfg创建目录

#ssh c6703 "mkdir -p /data/zookeeper/data"#ssh c6703 "chown -R zk:zk /data/zookeeper"#ssh c6703 "chown -R zk:zk /data/zookeeper/data"#ssh c6703 "mkdir -p /data/zookeeper/log" #ssh c6703 "chown -R zk:zk /data/zookeeper/log"

创建文件myid,填入3

ssh zk@c6703  "echo 3 > /data/zookeeper/data/myid"

7. 启动ZK

/home/zk/zk/zookeeper-3.4.6/bin/zkServer.sh start/home/zk/zk/zookeeper-3.4.6/bin/zkServer.sh status

远程启动命令

ssh zk@c6702 "/home/zk/zk/zookeeper-3.4.6/bin/zkServer.sh\ start"

ssh zk@c6703 "/home/zk/zk/zookeeper-3.4.6/bin/zkServer.sh\ start"

ssh zk@c6702 "/home/zk/zk/zookeeper-3.4.6/bin/zkServer.sh\ status"

ssh zk@c6703 "/home/zk/zk/zookeeper-3.4.6/bin/zkServer.sh\ status"

8. 没有全部启动三个ZK前的状态

[vagrant@c7003 bin]$ ./zkServer.sh status

ZooKeeper JMX enabled by defaultUsing config: /home/vagrant/zookeeper-3.4.10/bin/../conf/zoo.cfg

Error contacting service. It is probably not running.

9. 需要将三个ZK全启动之后,才能选举出leader

$ ./zkServer.sh status

ZooKeeper JMX enabled by defaultUsing config: /home/vagrant/zookeeper-3.4.10/bin/../conf/zoo.cfgMode: follower[vagrant@c7002 bin]$ ./zkServer.sh status

ZooKeeper JMX enabled by defaultUsing config: /home/vagrant/zookeeper-3.4.10/bin/../conf/zoo.cfgMode: leader

=======2018.1.13更新==========

客户端连接方式

客户端是随机顺序的方式连接server的,无法指定,或者优先读哪个一个zookeeper server。

./zkCli.sh -server c6701:2181,c6702:2181,c6703:2181

输出如下:

第一次连接,连接到c6701上

[zookeeper@c6702 bin]$ /usr/local/hadoop/zookeeper-3.4.6/bin/zkCli.sh -server c6701:2181,c6702:2181,c6703:2181

Connecting to c6701:2181,c6702:2181,c6703:2181......2018-01-11 21:07:30,797 [myid:] - INFO  [main:ZooKeeper@438] - Initiating client connection, connectString=c6701:2181,c6702:2181,c6703:2181 sessionTimeout=30000 watcher=org.apache.zookeeper.ZooKeeperMain$MyWatcher@4b4bc1e

Welcome to ZooKeeper!2018-01-11 21:07:30,830 [myid:] - INFO  [main-SendThread(c6701.python279.org:2181):ClientCnxn$SendThread@975] - Opening socket connection to server c6701.python279.org/192.168.67.101:2181. Will not attempt to authenticate using SASL (unknown error)

JLine support is enabled2018-01-11 21:07:30,873 [myid:] - INFO  [main-SendThread(c6701.python279.org:2181):ClientCnxn$SendThread@852] - Socket connection established to c6701.python279.org/192.168.67.101:2181, initiating session2018-01-11 21:07:30,916 [myid:] - INFO  [main-SendThread(c6701.python279.org:2181):ClientCnxn$SendThread@1235] - Session establishment complete on server c6701.python279.org/192.168.67.101:2181, sessionid = 0x160e70285f70001, negotiated timeout = 30000

WATCHER::

WatchedEvent state:SyncConnected type:None path:null

第二次连接,连接到c6702上

Connecting to c6701:2181,c6702:2181,c6703:2181......2018-01-11 21:10:18,442 [myid:] - INFO  [main:ZooKeeper@438] - Initiating client connection, connectString=c6701:2181,c6702:2181,c6703:2181 sessionTimeout=30000 watcher=org.apache.zookeeper.ZooKeeperMain$MyWatcher@4b4bc1e

Welcome to ZooKeeper!2018-01-11 21:10:18,489 [myid:] - INFO  [main-SendThread(c6702.python279.org:2181):ClientCnxn$SendThread@975] - Opening socket connection to server c6702.python279.org/192.168.67.102:2181. Will not attempt to authenticate using SASL (unknown error)

JLine support is enabled2018-01-11 21:10:18,508 [myid:] - INFO  [main-SendThread(c6702.python279.org:2181):ClientCnxn$SendThread@852] - Socket connection established to c6702.python279.org/192.168.67.102:2181, initiating session2018-01-11 21:10:18,561 [myid:] - INFO  [main-SendThread(c6702.python279.org:2181):ClientCnxn$SendThread@1235] - Session establishment complete on server c6702.python279.org/192.168.67.102:2181, sessionid = 0x260e70284650002, negotiated timeout = 30000

WATCHER::

WatchedEvent state:SyncConnected type:None path:null

至此,基础环境部署完。并且zookeeper也安装完成。下面我们会在下一篇文章中,继续安装HDFS。

Hadoop集群(一) Zookeeper搭建的更多相关文章

  1. Hadoop集群(三) Hbase搭建

    前面已经完成Zookeeper和HDFS的安装,本文会详细介绍Hbase的安装步骤.以及安装过程中遇到问题的汇总. 系列文章:   Hadoop集群(一) Zookeeper搭建 Hadoop集群(二 ...

  2. Hadoop集群(二) HDFS搭建

    HDFS只是Hadoop最基本的一个服务,很多其他服务,都是基于HDFS展开的.所以部署一个HDFS集群,是很核心的一个动作,也是大数据平台的开始. 安装Hadoop集群,首先需要有Zookeeper ...

  3. 大数据系列(1)——Hadoop集群坏境搭建配置

    前言 关于时下最热的技术潮流,无疑大数据是首当其中最热的一个技术点,关于大数据的概念和方法论铺天盖地的到处宣扬,但其实很多公司或者技术人员也不能详细的讲解其真正的含义或者就没找到能被落地实施的可行性方 ...

  4. 流式大数据计算实践(2)----Hadoop集群和Zookeeper

    一.前言 1.上一文搭建好了Hadoop单机模式,这一文继续搭建Hadoop集群 二.搭建Hadoop集群 1.根据上文的流程得到两台单机模式的机器,并保证两台单机模式正常启动,记得第二台机器core ...

  5. hadoop集群环境的搭建

    hadoop集群环境的搭建 今天终于把hadoop集群环境给搭建起来了,能够运行单词统计的示例程序了. 集群信息如下: 主机名 Hadoop角色 Hadoop jps命令结果 Hadoop用户 Had ...

  6. hadoop集群完全分布式搭建

    Hadoop环境搭建:完全分布式 集群规划: ip                 hostname 192.168.204.154     master      namenode   resour ...

  7. hadoop集群为分布式搭建

    1.准备Linux环境设置虚拟机网络    1.0点击VMware快捷方式,右键打开文件所在位置 -> 双击vmnetcfg.exe -> VMnet1 host-only ->修改 ...

  8. Hadoop集群(四) Hadoop升级

    Hadoop前面安装的集群是2.6版本,现在升级到2.7版本. 注意,这个集群上有运行Hbase,所以,升级前后,需要启停Hbase. 更多安装步骤,请参考: Hadoop集群(一) Zookeepe ...

  9. 大数据系列(3)——Hadoop集群完全分布式坏境搭建

    前言 上一篇我们讲解了Hadoop单节点的安装,并且已经通过VMware安装了一台CentOS 6.8的Linux系统,咱们本篇的目标就是要配置一个真正的完全分布式的Hadoop集群,闲言少叙,进入本 ...

随机推荐

  1. CS229 7.2 应用机器学习方法的技巧,准确率,召回率与 F值

    建立模型 当使用机器学习的方法来解决问题时,比如垃圾邮件分类等,一般的步骤是这样的: 1)从一个简单的算法入手这样可以很快的实现这个算法,并且可以在交叉验证集上进行测试: 2)画学习曲线以决定是否更多 ...

  2. tomcat8+memcached session共享

    一.环境准备 时间同步(同步后确认各服务器时间是否一致,不一致需要修改一下时区) 关闭防火墙 软件包和jar包链接:https://pan.baidu.com/s/1sl9Nob7 二.安装配置ngi ...

  3. Android WebView清空缓存

    Android原生和H5混合开发,要求用户退出登录后清空H5所有的缓存: 1.清空Cookie CookieSyncManager.createInstance(context.getApplicat ...

  4. 关于jdango框架静态文件配置的问题

    一: 我们首先要知道什么是静态文件: 静态文件就是我们的HTML,css,图片等文件. 二: 我们要知道我们的Django框架是一个web服务器,那么web服务器,我们是通过一个url地址来访问它的, ...

  5. IE兼容性问题的总结

    一.IE6/IE7对display:inline-block的支持欠缺 1.表现描述 这个应该算是很经典的ie兼容性问题了,inline-block作用就是将块级元素以行的等式显示.在主流浏览器中水平 ...

  6. 自媒体运营排版利器----Markdown here

    Markdown Here ​ 下载chrome插件直接下载 使用:打开网页文章编辑器,比如cnblog 用markdown语法写文章,之后点击编译 可以设置好css语法,以后每次可以套用同样的模板 ...

  7. POJ2311 Cutting Game 博弈 SG函数

    Cutting Game Description Urej loves to play various types of dull games. He usually asks other peopl ...

  8. ubantu 上hadoop 搭建

    Hadoop安装教程_单机/伪分布式配置_Hadoop2.6.0/Ubuntu14.04 参考 http://www.powerxing.com/install-hadoop/ 2014-08-09 ...

  9. C#找出第n到m个素数之间所有之和

    static void Main(string[] args) { int n = int.Parse(Console.ReadLine()); //开始的数 int m = int.Parse(Co ...

  10. 在linux环境下mongodb的安装和启动

    安装 下载mongodb的版本,两点注意 根据业界规则,偶数为稳定版,如1.6.X,奇数为开发版,如1.7.X 32bit的mongodb最大只能存放2G的数据,64bit就没有限制 到官网,选择合适 ...