在三台计算机上搭建 zookeeper 并正确运行

1. 服务器准备

1.1 服务器规划

我在 windows 上安装了三台 centos7 虚拟机,分别命名为 centos/test/alpha(随便命名的,不用在意)

计算机名IP 地址
centos172.21.92.121
test172.21.92.120
alpha172.21.92.116
### 1.2 免密登陆

选取 centos 作为hadoopnamenode,选择centos/test/alpha作为hadoop集群的datanode,并修改各自的/etc/hosts为以下内容

172.21.92.121	centos
172.21.92.120	test
172.21.92.116	alpha
#以centos为namenode,实现免密登录
ssh-copy-id -i root@0.0.0.0
ssh-copy-id -i root@test
ssh-copy-od -i root@alpha

上述搞定后,理论上就搞定了这一步的事儿

2. hadoop 环境搭建

2.1 下载 hadoop

本例中我用到的是hadoop-2.7.7,具体下载地址可以看我自己在博客园上写的东西

2.2 安装

默认安装好了java并且配置好了JAVA_HOME环境变量,直接解压到/usr/local目录中,并重命名为hadoop(主要是我觉得这样比较好记-_-)。

2.3 配置

hadoop的安装目录添加到环境变量 path 中,如

#/etc/profile中的最后的内容
export HADOOP_HOME=/usr/local/hadoop
export PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin;

使用sh /etc/profile使环境变量生效

再修改$HADOOP_HOME/etc/hadoop目录下如下 5 个文件:

  • hadoop-env.sh
  • core-site.xml
  • hdfs-site.xml
  • mapred-site.xml
  • yarn-site.xml
    hadoop-env.sh中主要配置一下JAVA_HOME的绝对路径就行了
    core-site.xml先简单配置如下:
<configuration>
    <property>
        <name>fs.defaultFS</name>
        <value>hdfs://centos:9000</value>
    </property>
</configuration>

hdfs-site.xml配置如下:

<configuration>
	<property>
		<name>dfs.replication</name>
		<value>3</value>
	</property>
</configuration>

mapred-site.xml配置如下:

<configuration>
	<property>
		<name>mapreduce.framework.name</name>
		<value>yarn</value>
	</property>
</configuration>

yarn-site.xml配置如下:

<configuration>
	<property>
		<name>yarn.nodemanager.aux-services</name>
		<value>mapreduce_shuffle</value>
	</property>
</configuration>

2.4 格式化

配置好hadoop后需要先格式化下子

hdfs namenode -format

2.5 测试

本篇稿子是实践后写的,应该不会有问题,有问题再说吧

3. zookeeper 环境搭建

3.1 下载

本例中选用的是zookeeper-3.4.14,可以到清华镜像中下载

3.2 安装

安装是很简单了,直接解压缩到/usr/local目录下

tar -zxvf zookeeper-3.4.14.tar.gz -C /usr/local
# 为方便我记忆,改名成zookeeper
mv /usr/local/zookeeper-3.4.14 usr/local/zookeeper

3.3 配置

具体的配置可以参考分布式 Zookeeper 安装搭建详解,我就是这么弄的,我的/conf/zoo.cfg下如下那样儿

#发送心跳的间隔时间,单位:毫秒
tickTime=2000
#zookeeper保存数据的目录
dataDir=/usr/local/zookeeper/data
#日志目录
dataLogDir=/usr/local/zookeeper/dataLog
#端口
clientPort=2181
#leader和follower初始化连接时最长能忍受多少个心跳时间的间隔数
initLimit=10
#leader和follower之间发送消息,请求和英达时间长度,最长不能超过多少个tickTime的时间长度
syncLimit=5
#zookeeper机器列表,server.order这里的Order依据集群的机器个数依次进行递增,这里的server1、server2、server3表示机器IP地址
server.1=centos:2888:3888
server.2=alpha:2888:3888
server.3=test:2888:3888

PS:上面的 data 目录和 dataLog 目录默认是没有的,需要自己预先建立好。并且真正用户开发环境的配置文件,尽量删除删掉上面的注释,以及多余的空白字符(划重点),有可能会造成 zookeeper 的读取失败
在上述创建的/usr/local/zookeeper/data文件夹中创建myid文件,其内容填写 1

3.4 将配置好的 zookeeper 分发到集群所有机器

分发过程,你懂的,就是scp命令将文件考到其他机子上,再修改各机子上的/usr/local/zookeeper/data/myid文件,与配置文件中的 order 保持一致。

3.5 测试

分别在centos/test/alpha执行zkServer.sh start启动zookeeper服务端,再使用zkServer.sh status查看状态,结果如下:

[root@alpha ~]#
ZooKeeper JMX enabled by default
Using config: /usr/local/zookeeper/bin/../conf/zoo.cfg
Mode: follower

[root@test ~]#
ZooKeeper JMX enabled by default
Using config: /usr/local/zookeeper/bin/../conf/zoo.cfg
Mode: leader

[root@test ~]#
ZooKeeper JMX enabled by default
Using config: /usr/local/zookeeper/bin/../conf/zoo.cfg
Mode: follower

上述结果表明zookeeper启动成功!

posted on 2019-06-16 19:54  hwang126  阅读(493)  评论(0编辑  收藏  举报