Hadoop 系列教程(三):zookeeper

原文地址:http://hainiubl.com/topics/81#reply37


1. 复制一个nn2虚拟机并设置好主机名,静态IP,HOST

修改crt上的配置文件把当前连接名称改成好识别的,并把登录用户修改成hadoop,尽量少用root操作,这样以后登录都使用hadoop用户
验证是否当前为root用户可以用vim打开某个文件查看比如/etc/hosts
file
切换到root用户


./ssh_all.sh ping -c 1 nn2.hadoop 让修改了host的机器验证一下是不否ping通新加的host主机
file
之后修改ips文件增加新主机host到主机列表中

2. zookeeper机器批量分布脚本

zookeeper 为什么是基数
zookeeper有这样一个特性:集群中只要有过半的机器是正常工作的,那么整个集群对外就是可用的。也就是说如果有2个zookeeper,那么只要有1个死了zookeeper就不能用了,因为1没有过半,所以2个zookeeper的死亡容忍度为0;同理,要是有3个zookeeper,一个死了,还剩下2个正常的,过半了,所以3个zookeeper的容忍度为1
cp ips ips_zookeeper
vim ips_zookeeper
file
cp scp_all.sh scp_all_zookeeper.sh
cp ssh_all.sh ssh_all_zookeeper.sh
cp ssh_root.sh ssh_root_zookeeper.sh
file
vim scp_all_zookeeper.sh
vim ssh_all_zookeeper.sh
vim ssh_root_zookeeper.sh
file

3 .把zookeeper的tar包分发到每个zookeeper机器上

rz,zookeeper tar包本机的/home/hadoop/hadoop_op1/up目录下
./scp_all_zookeeper.sh ./up/zookeeper-3.4.8.tar.gz /tmp/ 把zookeeper-3.4.8.tar.gz包拷贝到每台机器下
file

4. 在所有机器上把zookeeper的tar包解压到/usr/local目录下

把TAR包不包含路径的方法
tar -C 被打包的文件所在的目录 -cvzf 生成压缩包的地址 要打包的文件 例子:tar -C /root -cvzf /root/op.tar op
file

把tar到解压到指定路径
tar xvzf 压缩文件地址 -C 解压路径地址 例子:tar xvzf /home/hadoop/op.tar -C /home/hadoop/
file
./ssh_root_zookeeper.sh tar xzf /tmp/zookeeper-3.4.8.tar.gz -C /usr/local/ 在每个机器上解压刚才拷贝的tar包到/usr/local目录下
file
./ssh_all_zookeeper.sh ls /usr/local/ | grep zookeeper 查看是否解压成功
file

5. 批量把/usr/local目录下的zookeeper-3.4.8文件所有者修改成hadoop用户,并修改zookeeper-3.4.8文件目录权限为770

./ssh_root_zookeeper.sh chown -R hadoop:hadoop /usr/local/zookeeper-3.4.8 修改每台机器的/usr/local/zookeeper-3.4.8,所属用户为hadoop
file
./ssh_root_zookeeper.sh chmod -R 770 /usr/local/zookeeper-3.4.8 修改每台机器的/usr/local/zookeeper-3.4.8的权限为770
file

6. 在/usr/local目录下批量创建zookeeper-3.4.8的软链接

./ssh_root_zookeeper.sh ln -s /usr/local/zookeeper-3.4.8/ /usr/local/zookeeper 在每台机器上给/usr/local/zookeeper-3.4.8创建zookeeper软链接
file
./ssh_all_zookeeper.sh ls /usr/local/ | grep zookeeper 查看每台机器的软连接是否创建成功
file

7. 修改/usr/local/zookeeper软连接所属用户组(可做可不做)

./ssh_root_zookeeper.sh chown -h hadoop:hadoop /usr/local/zookeeper 修改每台机器软连接所属用户组
file
验证结果
file

8. 修改每个机器上的zookeeper配置

bin目录就是脚本所在的目录
file
conf目录就是zookeeper配置文件所在目录,下面为默认配置,就是个例子,实际使用需要修改
file
常用配置文件
file
./ssh_all_zookeeper.sh mv /usr/local/zookeeper/conf /usr/local/zookeeper/con_back 在每个机器上备份zookeeper原来的配置
file
验证结果
file
./ssh_all_zookeeper.sh mkdir /usr/local/zookeeper/conf 每个机器上创建conf目录
file
rz上传配置文件zoo.cfg
./scp_all_zookeeper.sh ./up/zoo.cfg /usr/local/zookeeper/conf/ 拷贝到每个机器上
file
修改输出日志配置文件所在目录
file
vim查找 /查找内容,从光标位置开始自上而下查找,?查找内容,从光标位置开始自下而上的查找
file
修改完保存":wq"

./scp_all_zookeeper.sh /usr/local/zookeeper/bin/zkEnv.sh /usr/local/zookeeper/bin/ 拷贝zkEnv.sh到每台机器的zookeeper的bin目录下
file

9. 在每个机器上创建/data目录,并把data目录所有者修改为hadoop用户

./ssh_root.sh mkdir /data 5个机器一起创建 /data目录,因为以后安装hadoop的时候也使用
file
./ssh_root.sh chown hadoop:hadoop /data 把每个机器上的/data目录所有者修改为hadoop用户
file
验证
file

10. 在新建的/data目录下生成myid文件(这个只能手动,不能使用批量脚本)

./ssh_all_zookeeper.sh touch /data/myid 在每个机器的/data目录下创建myid文件
file
每台机器都需要单独执行
cd /data/
第一台echo "1" > ./myid 第二台echo "2" > ./myid 第三台echo "3" > ./myid
cat myid
file
补充:
正常服务器,data目录是挂载到实体硬盘的
file
虚拟机的data目录是找不到挂载点的,所以他就是放在"/"目录下的一个文件夹
file

11. 给每个机器设置好环境变量

env 查看当前shell环境下已有环境变量
1./etc/profile整个系统的
2.~/.bash_profile当前用户的。
加载顺序是先加载系统,再加载自己的。
file

配置环境变量vim /etc/profile,这文件最下载追加,格式是exprot <变量名>=<环境变量值>,重新登录或者source /etc/profile一下就生效
file
env |grep JAVA_HOME查看配置过的变量变量是否已经生效
file
配置hadoop软件生态系统所使用的环境变量
export JAVA_HOME=/usr/java/jdk1.8.0_73

set Hadoop Path

export HADOOP_HOME=/usr/local/hadoop
export HADOOP_COMMON_HOME=${HADOOP_HOME}
export HADOOP_HDFS_HOME=${HADOOP_HOME}
export HADOOP_MAPRED_HOME=${HADOOP_HOME}
export HADOOP_YARN_HOME=${HADOOP_HOME}
export HADOOP_CONF_DIR=${HADOOP_HOME}/etc/hadoop
export HDFS_CONF_DIR=${HADOOP_HOME}/etc/hadoop
export YARN_CONF_DIR=${HADOOP_HOME}/etc/hadoop
export LD_LIBRARY_PATH=$HADOOP_HOME/lib/native:/usr/lib64

export HBASE_HOME=/usr/local/hbase
export HIVE_HOME=/usr/local/hive
export PATH=$PATH:$JAVA_HOME/bin:$HADOOP_HOME/bin:$HADOOP_HOME/sbin:$HBASE_HOME/bin:$HIVE_HOME/bin:/usr/local/zookeeper/bin

加到/etc/profile文件的底部,并且确认保存,注意使用root用户操作,再切换一个用户或者退出就会重新加载刚才的设置,再加env验证一下是否配置正确
file

cp /etc/profile ~/hadoop_op1/up/
cp hosts_op.sh profile_op.sh
mv profile profile_log
file
vim profile_op.sh
file
./scp_all.sh ./up/profile_log /tmp/ 拷贝到所有机器的/tmp目录下
file
./scp_all.sh ./up/profile_op.sh /tmp/ 拷贝到所有机器的/tmp目录下
file
./ssh_root.sh chmod +x /tmp/profile_op.sh 给每个机器的
/tmp/profile_op.sh加上执行权限
file

./ssh_root.sh /tmp/profile_op.sh 每个机器上执行一下,完成替换/etc/profile
file
./ssh_all.sh echo $JAVA_HOME 打印一个每个机器上的JAVA_HOME环境变量
file
which <命令>
file

12. 在每个机器上启动zookeeper服务并查看启动结果

/usr/local/zookeeper/bin/zkServer.sh ZK服务使用脚本 (nohup)
./ssh_all_zookeeper.sh /usr/local/zookeeper/bin/zkServer.sh start
file
怎么查看是否运行如果是JAVA程序可以用jps查看,或者用查看进程命令ps aux|grep zookeeper
file
./ssh_all_zookeeper.sh jps 查看其它zk的启动情况
file
查看ZK输出日志
file
通过JPS查看进程ID
file
去查看进程ID文件,再到FD目录就能查看到当前进程所使用的管道信息
file
zookeeper_server.pid 存当前ZK服务的进程ID的
file

13. zookeeper使用

./ssh_all_zookeeper.sh /usr/local/zookeeper/bin/zkServer.sh status 查看每个机器ZK运行的状态
file
./ssh_all_zookeeper.sh /usr/local/zookeeper/bin/zkServer.sh stop 整体停止服务
file
file
/usr/local/zookeeper/bin/zkCli.sh -server nn1.hadoop:2181,nn2.hadoop:2181,s1.hadoop:2181 启动zkclient,并连接集群
file
ZooKeeper服务命令

  1. 启动ZK服务: sh bin/zkServer.sh start
  2. 查看ZK服务状态: sh bin/zkServer.sh status
  3. 停止ZK服务: sh bin/zkServer.sh stop
  4. 重启ZK服务: sh bin/zkServer.sh restart

zk客户端命令

  1. 显示根目录下、文件: ls / 使用 ls 命令来查看当前 ZooKeeper 中所包含的内容
  2. 显示根目录下、文件: ls2 / 查看当前节点数据并能看到更新次数等数据
  3. 创建文件,并设置初始内容: create /zk "test" 创建一个新的 znode节点“ zk ”以及与它关联的字符串
  4. 获取文件内容: get /zk 确认 znode 是否包含我们所创建的字符串
  5. 修改文件内容: set /zk "zkbak" 对 zk 所关联的字符串进行设置
  6. 删除文件: delete /zk 将刚才创建的 znode 删除
  7. 退出客户端: quit
  8. 帮助命令: help
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值