原文地址:http://hainiubl.com/topics/81#reply37
1. 复制一个nn2虚拟机并设置好主机名,静态IP,HOST
修改crt上的配置文件把当前连接名称改成好识别的,并把登录用户修改成hadoop,尽量少用root操作,这样以后登录都使用hadoop用户
验证是否当前为root用户可以用vim打开某个文件查看比如/etc/hosts
切换到root用户
./ssh_all.sh ping -c 1 nn2.hadoop 让修改了host的机器验证一下是不否ping通新加的host主机
之后修改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
cp scp_all.sh scp_all_zookeeper.sh
cp ssh_all.sh ssh_all_zookeeper.sh
cp ssh_root.sh ssh_root_zookeeper.sh
vim scp_all_zookeeper.sh
vim ssh_all_zookeeper.sh
vim ssh_root_zookeeper.sh
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包拷贝到每台机器下
4. 在所有机器上把zookeeper的tar包解压到/usr/local目录下
把TAR包不包含路径的方法
tar -C 被打包的文件所在的目录 -cvzf 生成压缩包的地址 要打包的文件 例子:tar -C /root -cvzf /root/op.tar op
把tar到解压到指定路径
tar xvzf 压缩文件地址 -C 解压路径地址 例子:tar xvzf /home/hadoop/op.tar -C /home/hadoop/
./ssh_root_zookeeper.sh tar xzf /tmp/zookeeper-3.4.8.tar.gz -C /usr/local/ 在每个机器上解压刚才拷贝的tar包到/usr/local目录下
./ssh_all_zookeeper.sh ls /usr/local/ | grep zookeeper 查看是否解压成功
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
./ssh_root_zookeeper.sh chmod -R 770 /usr/local/zookeeper-3.4.8 修改每台机器的/usr/local/zookeeper-3.4.8的权限为770
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软链接
./ssh_all_zookeeper.sh ls /usr/local/ | grep zookeeper 查看每台机器的软连接是否创建成功
7. 修改/usr/local/zookeeper软连接所属用户组(可做可不做)
./ssh_root_zookeeper.sh chown -h hadoop:hadoop /usr/local/zookeeper 修改每台机器软连接所属用户组
验证结果
8. 修改每个机器上的zookeeper配置
bin目录就是脚本所在的目录
conf目录就是zookeeper配置文件所在目录,下面为默认配置,就是个例子,实际使用需要修改
常用配置文件
./ssh_all_zookeeper.sh mv /usr/local/zookeeper/conf /usr/local/zookeeper/con_back 在每个机器上备份zookeeper原来的配置
验证结果
./ssh_all_zookeeper.sh mkdir /usr/local/zookeeper/conf 每个机器上创建conf目录
rz上传配置文件zoo.cfg
./scp_all_zookeeper.sh ./up/zoo.cfg /usr/local/zookeeper/conf/ 拷贝到每个机器上
修改输出日志配置文件所在目录
vim查找 /查找内容,从光标位置开始自上而下查找,?查找内容,从光标位置开始自下而上的查找
修改完保存":wq"
./scp_all_zookeeper.sh /usr/local/zookeeper/bin/zkEnv.sh /usr/local/zookeeper/bin/ 拷贝zkEnv.sh到每台机器的zookeeper的bin目录下
9. 在每个机器上创建/data目录,并把data目录所有者修改为hadoop用户
./ssh_root.sh mkdir /data 5个机器一起创建 /data目录,因为以后安装hadoop的时候也使用
./ssh_root.sh chown hadoop:hadoop /data 把每个机器上的/data目录所有者修改为hadoop用户
验证
10. 在新建的/data目录下生成myid文件(这个只能手动,不能使用批量脚本)
./ssh_all_zookeeper.sh touch /data/myid 在每个机器的/data目录下创建myid文件
每台机器都需要单独执行
cd /data/
第一台echo "1" > ./myid 第二台echo "2" > ./myid 第三台echo "3" > ./myid
cat myid
补充:
正常服务器,data目录是挂载到实体硬盘的
虚拟机的data目录是找不到挂载点的,所以他就是放在"/"目录下的一个文件夹
11. 给每个机器设置好环境变量
env 查看当前shell环境下已有环境变量
1./etc/profile整个系统的
2.~/.bash_profile当前用户的。
加载顺序是先加载系统,再加载自己的。
配置环境变量vim /etc/profile,这文件最下载追加,格式是exprot <变量名>=<环境变量值>,重新登录或者source /etc/profile一下就生效
env |grep JAVA_HOME查看配置过的变量变量是否已经生效
配置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验证一下是否配置正确
cp /etc/profile ~/hadoop_op1/up/
cp hosts_op.sh profile_op.sh
mv profile profile_log
vim profile_op.sh
./scp_all.sh ./up/profile_log /tmp/ 拷贝到所有机器的/tmp目录下
./scp_all.sh ./up/profile_op.sh /tmp/ 拷贝到所有机器的/tmp目录下
./ssh_root.sh chmod +x /tmp/profile_op.sh 给每个机器的
/tmp/profile_op.sh加上执行权限
./ssh_root.sh /tmp/profile_op.sh 每个机器上执行一下,完成替换/etc/profile
./ssh_all.sh echo $JAVA_HOME 打印一个每个机器上的JAVA_HOME环境变量
which <命令>
12. 在每个机器上启动zookeeper服务并查看启动结果
/usr/local/zookeeper/bin/zkServer.sh ZK服务使用脚本 (nohup)
./ssh_all_zookeeper.sh /usr/local/zookeeper/bin/zkServer.sh start
怎么查看是否运行如果是JAVA程序可以用jps查看,或者用查看进程命令ps aux|grep zookeeper
./ssh_all_zookeeper.sh jps 查看其它zk的启动情况
查看ZK输出日志
通过JPS查看进程ID
去查看进程ID文件,再到FD目录就能查看到当前进程所使用的管道信息
zookeeper_server.pid 存当前ZK服务的进程ID的
13. zookeeper使用
./ssh_all_zookeeper.sh /usr/local/zookeeper/bin/zkServer.sh status 查看每个机器ZK运行的状态
./ssh_all_zookeeper.sh /usr/local/zookeeper/bin/zkServer.sh stop 整体停止服务
/usr/local/zookeeper/bin/zkCli.sh -server nn1.hadoop:2181,nn2.hadoop:2181,s1.hadoop:2181 启动zkclient,并连接集群
ZooKeeper服务命令
- 启动ZK服务: sh bin/zkServer.sh start
- 查看ZK服务状态: sh bin/zkServer.sh status
- 停止ZK服务: sh bin/zkServer.sh stop
- 重启ZK服务: sh bin/zkServer.sh restart
zk客户端命令
- 显示根目录下、文件: ls / 使用 ls 命令来查看当前 ZooKeeper 中所包含的内容
- 显示根目录下、文件: ls2 / 查看当前节点数据并能看到更新次数等数据
- 创建文件,并设置初始内容: create /zk "test" 创建一个新的 znode节点“ zk ”以及与它关联的字符串
- 获取文件内容: get /zk 确认 znode 是否包含我们所创建的字符串
- 修改文件内容: set /zk "zkbak" 对 zk 所关联的字符串进行设置
- 删除文件: delete /zk 将刚才创建的 znode 删除
- 退出客户端: quit
- 帮助命令: help