Hadoop集群搭建(一) Zookeeper

网友投稿 827 2023-03-10

本站部分文章、图片属于网络上可搜索到的公开信息,均用于学习和交流用途,不能代表睿象云的观点、立场或意见。我们接受网民的监督,如发现任何违法内容或侵犯了您的权益,请第一时间联系小编邮箱jiasou666@gmail.com 处理。

Hadoop集群搭建(一) Zookeeper

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

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

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

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

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

Zookeeper主机分配

192.168.67.101 c6701192.168.67.102 c6702192.168.67.103 c6703

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

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

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

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

创建的用户有:

zkhdfshbase

zkhdfshbase

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

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

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

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

ssh-copy-id  c6701  ssh-copy-id  c6702 ssh-copy-id  c6703

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

[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"

ssh c6702 "cat /proc/cpuinfo"ssh c6702 "hostname"

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

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

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

#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/jreexport CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar:$JRE_HOME/lib:$CLASSPATHexport PATH=$JAVA_HOME/bin:$PATHsource /etc/profile

export JAVA_HOME=/usr/local/jdk1.8.0_144  export JRE_HOME=/usr/local/jdk1.8.0_144/jreexport CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar:$JRE_HOME/lib:$CLASSPATHexport PATH=$JAVA_HOME/bin:$PATHsource /etc/profile

8、检查版本信息

# java -versionjava 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)

# java -versionjava 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 zkecho "zk:zk" | chpasswdsu - zkmkdir zktar -zxvf /tmp/software/zookeeper-3.4.6.tar.gz -C /home/zk/zk

useradd zkecho "zk:zk" | chpasswdsu - zkmkdir zktar -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=2000initLimit=10syncLimit=5dataDir=/data/zookeeper/datadataLogDir=/data/zookeeper/logclientPort=2181autopurge.snapRetainCount=3autopurge.purgeInterval=6server.1=c6701:2888:3888server.2=c6702:2888:3888server.3=c6703:2888:3888~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

~~~~~~~~~~~~~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=2000initLimit=10syncLimit=5dataDir=/data/zookeeper/datadataLogDir=/data/zookeeper/logclientPort=2181autopurge.snapRetainCount=3autopurge.purgeInterval=6server.1=c6701:2888:3888server.2=c6702:2888:3888server.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

#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"

# 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"

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

为zk用户ssh免密

#ssh-copy-id  zk@c6702

#ssh-copy-id  zk@c6702

拷贝软件

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

#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,填入2ssh zk@c6702  "echo 2 > /data/zookeeper/data/myid"

#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,填入2ssh zk@c6702  "echo 2 > /data/zookeeper/data/myid"

6、安装c6703的zookeeper

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

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

为zk用户ssh免密

ssh-copy-id  zk@c6703

ssh-copy-id  zk@c6703

拷贝软件

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

#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 '^#'"

#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,填入3ssh zk@c6703  "echo 3 > /data/zookeeper/data/myid"

#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,填入3ssh 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

/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"

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 statusZooKeeper JMX enabled by defaultUsing config: /home/vagrant/zookeeper-3.4.10/bin/../conf/zoo.cfgError contacting service. It is probably not running.

[vagrant@c7003 bin]$ ./zkServer.sh statusZooKeeper JMX enabled by defaultUsing config: /home/vagrant/zookeeper-3.4.10/bin/../conf/zoo.cfgError contacting service. It is probably not running.

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

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

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

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

上一篇:Hadoop集群搭建(二) HDFS
下一篇:Linux内存被吃掉了,它去哪里了?
相关文章

 发表评论

暂时没有评论,来抢沙发吧~