作为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. 10 sed命令的基本用法

    grep灵活的关联正则表达式实现文件过滤,而sed是一个数据流的编辑器,或者说是一个行编辑器,它将文件一行一行的数据放入到内存中进行编辑,而awk是一个报告生成器,这个我们以后再说: 之前我们介绍过g ...

  2. windows设置电脑的固定IP

    当有需要的人往往想要固定自己的IP进行测试,在我通过手机代理来录制测试带宽时不想因为IP经常变更而影响到我的测试 因此,我想要固定自己的IP 1.想要固定IP说明自己的IP设置成了自动获取方式,这样连 ...

  3. mac maven lombok报错

    maven已导入lombok的jar包,注解@Data,但是用到getter,setter时依然出错.解决办法: 打开eclipse.ini文件,加上如下两句: -Xbootclaspath//Use ...

  4. StanFord ML 笔记 第一部分

    本章节内容: 1.学习的种类及举例 2.线性回归,拟合一次函数 3.线性回归的方法: A.梯度下降法--->>>批量梯度下降.随机梯度下降 B.局部线性回归 C.用概率证明损失函数( ...

  5. Snort规则大探秘

    版本联系 Snort规则可以用来检测数据包的不同部分.Snort 1.x可以分析第3层和第4层的信息,但是不能分析应用层协议.Snort v 2.x增加了对应用层头部分析的支持.所有的数据包根据类型的 ...

  6. threading的join功能

    you can go here to see the details. 我的理解:使用join后,使主线程执行完后(挂起),子线程再执行完后,主线程才结束.否则主线程会直接结束导致子线程不会执行. i ...

  7. [UnityShader基础]01.渲染队列

    unity中定义了5个渲染队列: 1.Background,对应索引号1000,该队列最先被渲染 2.Geometry,对应索引号2000,默认的渲染队列,大多数物体都使用该队列,不透明物体使用该队列 ...

  8. CPU UsageTimes Profile (cpu=times)

    HPROF工具能搜集CPU使用信息通过注入代码到每个方法进入点和退出点.因此能够统计方法真实调用次数和花费的时间. 它使用BCI(Byte Code Injection),所以比cpu=samples ...

  9. 重识linux-ntp时间服务器搭建

    1  安装 yum install ntp 2 启动 service ntpd start 3 配置文件 /etc/ntp.conf 4 查看是否有报错 tail /var/log/message 5 ...

  10. 《算法》第四章部分程序 part 17

    ▶ 书中第四章部分程序,包括在加上自己补充的代码,无环图最短 / 最长路径通用程序,关键路径方法(critical path method)解决任务调度问题 ● 无环图最短 / 最长路径通用程序 pa ...