以下环境全部基于此系统:
[root@localhost ~]# cat /etc/redhat-release
CentOS Linux release 7.5.1804 (Core)
安装软件及对应版本
jdk-8u172-linux-x64.tar.gz
Hadoop-2.8.4
Zookeeper-3.4.5
apache-storm-1.0.6.tar.gz
hbase-0.98.6-hadoop2-bin.tar.gz
一 Hadoop安装
http://archive.apache.org/dist/hadoop/common/
http://download.oracle.com/otn-pub/java/jdk/8u172-b11/a58eab1ec242421181065cdc37240b08/jdk-8u172-linux-x64.tar.gz
1、实验环境
3台虚拟机IP及机器名称如下:
IP地址 主机名 角色
192.168.43.205 master Namenode
192.168.43.79 Slave1 Datanode1
192.168.43.32 Slave2 Datanode2
2、FQND配置
[root@master ~]# cat /etc/hosts
127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4
::1 localhost localhost.localdomain localhost6 localhost6.localdomain6
192.168.43.205 master
192.168.43.79 slave1
192.168.43.32 slave2
3、免密码登录
[root@master ~]#ssh-keygen
[root@master ~]#ssh-copy-id 192.168.43.205
[root@master ~]#ssh-copy-id 192.168.43.79
[root@master ~]#ssh-copy-id 192.168.43.32
验证是否生效
[root@master ~]# ssh 192.168.43.79
[root@master ~]# ssh 192.168.43.32
复制到其他两台机器
[root@master ~]#scp /etc/hosts root@192.168.43.79:/etc/
[root@master ~]#scp /etc/hosts root@192.168.43.32:/etc/
重启生效(我这里是原本就配置好生效的)
4、安装JAVA环境
三台机器都要安装
上传软件包:jdk-8u172-linux-x64.tar.gz
[root@master ~]# mkdir /usr/java/
[root@master ~]# tar -xvf jdk-8u172-linux-x64.tar.gz -C /usr/java/
环境变量
[root@master ~]# vim /etc/profile #在文末添加以下内容
####################JDK
export JAVA_HOME=/usr/java/jdk1.8.0_172
export CLASSPATH=$CLASSPATH:$JAVA_HOME/lib:$JAVA_HOME/jre/lib
export PATH=$JAVA_HOME/bin:$JAVA_HOME/jre/bin:$PATH:$HOMR/bin
[root@master ~]# source /etc/profile #使配置文件生效
验证java运行是否成功
[root@master ~]# java -version
java version "1.8.0_172"
Java(TM) SE Runtime Environment (build 1.8.0_172-b11)
Java HotSpot(TM) 64-Bit Server VM (build 25.172-b11, mixed mode)
如果出现对应版本,则说明java运行环境安装成功
如果本来就有java环境,升级java也是一样安装,会优先执行高版本
将jdk环境部署到其他两台机器上去
[root@master ~]# scp -r /usr/java/ slave1:/usr/
[root@master ~]# scp -r /usr/java/ slave2:/usr/
[root@master ~]# scp -r /etc/profile slave1:/etc/
[root@master ~]# scp -r /etc/profile slave2:/etc/
验证其他两台服务器
[root@slave1 ~]# source /etc/profile
[root@slave1 ~]# java -version
[root@slave2 ~]# source /etc/profile
[root@slave2 ~]# java -version
5、安装hadoop
5.1、安装hadoop
上传软件:hadoop-2.8.4.tar.gz
[root@master ~]# tar -zxf hadoop-2.8.4.tar.gz -C /usr/local/
[root@master ~]# ls /usr/local/hadoop-2.8.4/
bin etc lib LICENSE.txt NOTICE.txt sbin
include libexec README.txt share
5.2、创建临时目录和文件目录
[root@master~]# mkdir /usr/local/hadoop-2.8.4/tmp/
[root@master~]# mkdir /usr/local/hadoop-2.8.4/dfs/name
[root@master~]# mkdir /usr/local/hadoop-2.8.4/dfs/data
5.3、配置文件
主要配置文件:/usr/local/hadoop-2.8.4/etc/hadoop
文件名称:hadoop-env.sh、yarn-evn.sh、slaves、core-site.xml、hdfs-site.xml、mapred-site.xml、yarn-site.xml
hadoop-env.sh //java环境变量脚本
yarn-env.sh //制定yarn框架的java运行环境,YARN,它将资源管理和 处理组件分开。基于YARN的架构不受MapReduce约束
slaves //指定datanode数据存储服务器
core-site.xml //指定访问hadoop web界面的路径
hdfs-site.xml //文件系统的配置文件
mapred-site.xml //mapreducer任务配置文件
yarn-site.xml //该文件为yarn框架的配置,主要是一些任务的启动位置
5.4、修过配置文件
修改前最好先备份一份,避免出错
[root@master etc]# cp -r hadoop/ hadoop.bak
(1)、配置文件 hadoop-env.sh,指定 hadoop 的 java 运行环境该文件是 hadoop 运行基本环境的配置,需要修改的为 java 虚拟机的位置。
[root@master hadoop]# vim hadoop-env.sh
改:25 export JAVA_HOME=${JAVA_HOME}
为:export JAVA_HOME=/usr/java/jdk1.8.0_172
注:指定 java 运行环境变量
(2)、配置文件 yarn-env.sh,指定 yarn 框架的 java 运行环境
该文件是 yarn 框架运行环境的配置,同样需要修改 java 虚拟机的位置。
Yarn:Hadoop的新 MapReduce 框架 Yarn 是 Hadoop 自 0.23.0 版本后新的map-reduce 框架(Yarn) 原理。
[root@master hadoop]# vim yarn-env.sh
改:26 JAVA_HOME=$JAVA_HOME
为:26 JAVA_HOME=/usr/java/jdk1.8.0_172
(3)、 配置文件 slaves ,指定 datanode 数据存储服务器
将所有DataNode 的机器名字写入此文件中,每个主机名一行,配置如下:
[root@master hadoop]#vim slaves
slave1
slave2
(4)、 配置文件 core-site.xml,指定访问 hadoopweb 界面访问路径这个是 hadoop 的核心配置文件,这里需要配置的就这两个属性,fs.default.name 配置了 hadoop 的HDFS 系统的命名,位置为主机的 9000 端口;hadoop.tmp.dir 配置了 hadoop 的 tmp 目彔的根位置。这里使用了一个文件系统中没有的位置,所以要先用 mkdir 命令新建一下。
[root@master hadoop]#vim core-site.xml
<configuration>
<property>
<name>fs.defaultFS</name>
<value>hdfs://192.168.43.205:9000</value>
</property>
<property>
<name>hadoop.tmp.dir</name>
<value>file:/usr/local/hadoop-2.8.4/tmp</value>
</property>
</configuration>
(5)、 配置文件 hdfs-site.xml
这个是 hdfs 的配置文件,dfs.http.address 配置了 hdfs 的 http 的访问位置;dfs.replication 配置了文件块的副本数,一般不大于从机的个数。
[root@master hadoop]#vim hdfs-site.xml
<configuration>
<property>
<name>dfs.namenode.secondary.http-address</name>
<value>master:9001</value> # 通过 web 界面来查看 HDFS 状态
</property>
<property>
<name>dfs.namenode.name.dir</name>
<value>file:/usr/local/hadoop-2.8.4/dfs/name</value>
</property>
<property>
<name>dfs.datanode.data.dir</name>
<value>file:/usr/local/hadoop-2.8.4/dfs/data</value>
</property>
<property>
<name>dfs.repliction</name>
<value>2</value> #每个 Block 有 2 个备份。
</property>
</configuration>
(6)、 配置文件 mapred-site.xml
这个是 mapreduce 任务的配置,由于hadoop2.x 使用了yarn框架,所以要实现分布式部署,必须在mapreduce.framework.name属性下配置yarn.mapred.map.tasks和 mapred.reduce.tasks分别为 map 和 reduce 的任务数,同时指定:Hadoop 的历史服务器 historyserver。
生成mapred-site.xml
[root@master hadoop]# cp mapred-site.xml.template mapred-site.xml
[root@master hadoop]# vim mapred-site.xml
<configuration>
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
</configuration>
(7)、 配置节点 yarn-site.xml
该文件为 yarn 框架的配置,主要是一些任务的启动位置
[root@master hadoop]# vim yarn-site.xml
<configuration>
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
<property>
<name>yarn.nodemanager.aux-services.mapreduce.shuffle.class</name>
<value>org.apache.hadoop.mapred.ShuffleHandler</value>
</property>
<property>
<name>yarn.resourcemanager.address</name>
<value>master:8032</value>
</property>
<property>
<name>yarn.resourcemanager.scheduler.address</name>
<value>master:8030</value>
</property>
<property>
<name>yarn.resourcemanager.resource-tracker.address</name>
<value>master:8035</value>
</property>
<property>
<name>yarn.resourcemanager.admin.address</name>
<value>master:8033</value>
</property>
<property>
<name>yarn.resourcemanager.webapp.address</name>
<value>master:8088</value>
</property>
</configuration>
7个要修改的配置文件,到这里完成!
复制到其他datanode节点:
[root@master ~]# scp -r /usr/local/hadoop-2.8.4/ slave1:/usr/local/
[root@master ~]# scp -r /usr/local/hadoop-2.8.4/ slave2:/usr/local/
5.5、配置环境变量
[root@master ~]# vim /etc/profile #在文末添加以下内容
####################HADOOP
export HADOOP_HOME=/usr/local/hadoop-2.8.4/
export PATH=$PATH:$HADOOP_HOME/bin
[root@master bin]# source /etc/profile
[root@master bin]# echo $HADOOP_HOME
/usr/local/hadoop-2.8.4/
其他两台也是一样操作,可scp复制过去
5.6、管理节点
(1) 格式化
Hadoop namenode 的初始化,只需要第一次的时候初始化,之后就不需要了。
注意:只需要一次就行了,因为格式化会改变ID号,多次格式化会导致namenode角色跟datanode角色ID号不一致,最后会导致,namenode启动正常,但是slave的datanode启动不了
[root@master ~]# /usr/local/hadoop-2.8.4/bin/hdfs namenode -format
15/08/03 22:35:21 INFO common.Storage:Storage directory /usr/local/hadoop-2.8.4/dfs/name has beensuccessfully formatted.
。。。。。。
15/08/03 22:35:21 INFOutil.ExitUtil: Exiting with status 0
15/08/03 22:35:21 INFO namenode.NameNode:SHUTDOWN_MSG:
/************************************************************
SHUTDOWN_MSG: Shutting down NameNode at master/192.168.43.205
************************************************************/
[root@master ~]# echo $?
0
#检测上一次执行的命令是否正确 0正确 非0 错误
查看格式化后,生成的文件:
[root@master ~]# yum -y install tree #要先配置好源
[root@master ~]# tree /usr/local/hadoop-2.8.4/dfs
/usr/local/hadoop-2.8.4/dfs
├── data
└── name
└── current
├── fsimage_0000000000000000000
├── fsimage_0000000000000000000.md5
├── seen_txid
└── VERSION
3 directories, 4 files
(2)启动 hdfs: ./sbin/start-dfs.sh,即启动HDFS 分布式存储
[root@master ~]#/usr/local/hadoop-2.8.4/sbin/start-dfs.sh
Starting namenodes on [master]
master: starting namenode, logging to/usr/local/hadoop-2.8.4/logs/hadoop-root-namenode-master.out
slave2: starting datanode, logging to /usr/local/hadoop-2.8.4/logs/hadoop-root-datanode-slave2.out
slave1: starting datanode, logging to/usr/local/hadoop-2.8.4/logs/hadoop-root-datanode-slave1.out
Starting secondary namenodes [master]
master: starting secondarynamenode, loggingto /usr/local/hadoop-2.8.4/logs/hadoop-root-secondarynamenode-master.out
注:如果报错,如:
Slave1: Host key verification failed.
解决:
[root@master ~]# ssh slave1 #确认可以输入密码直接连接上 slave1
关闭后再重启:
[root@master ~]# /usr/local/hadoop-2.8.4/sbin/stop-dfs.sh
[root@master ~]# /usr/local/hadoop-2.8.4/sbin/start-dfs.sh
(3)查看进程,此时master 有进程:namenode 和 secondarynamenode 进程:
[root@master ~]# ps -aux | grep namenode--color
Warning: bad syntax, perhaps a bogus '-'?See /usr/share/doc/procps-3.2.8/FAQ
root 4404 12.2 13.6 2761684 136916 ? Sl 01:17 0:26 /usr/java/jdk1.8.0_144/bin/java -Dproc_namenode -Xmx1000m-Djava.library.path=/lib/native -Dhadoop.log.dir=/usr/local/hadoop-2.8.4/logs
。。。。。。
root 4565 8.5 11.4 2722404 114812? Sl 01:18 0:15 /usr/java/jdk1.8.0_144/bin/java -Dproc_secondarynamenode-Xmx1000m -Djava.library.path=/lib/native-Dhadoop.log.dir=/usr/local/hadoop-2.8.4/logs
。。。。。。
Slave1和 slave2上有进程:DataNode
[root@slave1 ~]# ps-aux | grep datanode --color
Warning: bad syntax,perhaps a bogus '-'? See /usr/share/doc/procps-3.2.8/FAQ
root 2246 2380 7.3 10.6 2760144 107336 ? Sl 01:17 0:28 /usr/java/jdk1.8.0_144/bin/java -Dproc_datanode -Xmx1000m
。。。。。
org.apache.hadoop.hdfs.server.datanode.DataNode
[root@slave2 ~]# ps-aux | grep datanode --color
Warning: bad syntax,perhaps a bogus '-'? See /usr/share/doc/procps-3.2.8/FAQ
root 1977 6.2 11.1 2756488 111608 ? Sl 07:26 0:30 /usr/java/jdk1.8.0_144/bin/java -Dproc_datanode -Xmx1000m
。。。。。
org.apache.hadoop.hdfs.server.datanode.DataNode
(4)在master 上启动 yarn:./sbin/start-yarn.sh 即,启动分布式计算
[root@master ~]#/usr/local/hadoop-2.8.4/sbin/start-yarn.sh
starting yarn daemons
starting resourcemanager, logging to /usr/local/hadoop-2.8.4/logs/yarn-root-resourcemanager-master.out
slave1: starting nodemanager, logging to/usr/local/hadoop-2.8.4/logs/yarn-root-nodemanager-slave1.out
slave2: starting nodemanager, logging to/usr/local/hadoop-2.8.4/logs/yarn-root-nodemanager-slave2.out
(5)查看进程:
查看master上的进程:ResourceManager ,slave1 和 slave2上的进程:NodeManager
[root@master ~]# ps -aux | grep resourcemanager --color
Warning: bad syntax, perhaps a bogus '-'? See/usr/share/doc/procps-3.2.8/FAQ
root 4749 53.2 16.0 2919812160832 pts/0 Sl 01:28 0:47 /usr/java/jdk1.8.0_144/bin/java -Dproc_resourcemanager-Xmx1000m
。。。。。。
[root@slave1 ~]# ps -aux | grep nodemanager --color
Warning: bad syntax, perhaps a bogus '-'? See/usr/share/doc/procps-3.2.8/FAQ
root 2354 17.7 12.9 2785400129776 ? Sl 01:27 0:45 /usr/java/jdk1.8.0_144/bin/java -Dproc_nodemanager-Xmx1000m
。。。。。。
[root@slave2 ~]# ps -aux | grep nodemanager --color
Warning: bad syntax, perhaps a bogus '-'? See/usr/share/doc/procps-3.2.8/FAQ
root 2085 15.1 13.8 2785400139544 ? Sl 07:36 0:46 /usr/java/jdk1.8.0_144/bin/java -Dproc_nodemanager-Xmx1000m
注:start-dfs.sh 和 start-yarn.sh 这两个脚本可用 start-all.sh 代替。
[root@master ~]# /usr/local/hadoop-2.8.4/sbin/start-all.sh
[root@master ~]# /usr/local/hadoop-2.8.4/sbin/stop-all.sh
Hadoop 自带了一个历史服务器historserver,可以通过历史服务器查看已经运行完的 Mapreduce 作业记彔,比如用了多少个 Map、用了多少个 Reduce、作业提交时间、作业启动时间、作业完成时间等信息。默认情况下,Hadoop 历史服务器是没有启动的,我们可以通过下面的命令来启动Hadoop 历史服务器
/usr/local/hadoop-2.8.4/sbin/mr-jobhistory-daemon.shstart historyserver
这样我们就可以在相应机器的 19888 端口上打开历史服务器的 WEB UI 界面。可以查看已经运行完的作业情况。
启动:jobhistory 服务,查看 mapreduce 运行状态
[root@master~]# /usr/local/hadoop-2.8.4/sbin/mr-jobhistory-daemon.sh start historyserver
starting historyserver,logging to /usr/local/hadoop-2.8.4/logs/mapred-root-historyserver-master.out
通过jps查看
[root@master ~]# jps
4565 SecondaryNameNode #辅助namenode
4749 ResourceManager #管理应用资源
4404 NameNode #管理节点
3277 JobHistoryServe #历史服务器
2527 Jps
[root@slave1 ~]# jps
1744 Jps
2354 NodeManager #从节点资源管理
2246 DataNode #数据节点
[root@slave2 ~]# jps
1644 Jps
2085 NodeManager #从节点资源管理
1977 DataNode #数据节点
(6)查看 HDFS 分布式文件系统状态:
[root@master ~]#/usr/local/hadoop-2.8.4/bin/hdfs dfsadmin -report
Configured Capacity: 38205915136 (35.58 GB)
Present Capacity: 32456699904 (30.23 GB)
DFS Remaining: 32456691712 (30.23 GB)
DFS Used: 8192 (8 KB)
DFS Used%: 0.00%
Under replicated blocks: 0
Blocks with corrupt replicas: 0
Missing blocks: 0
Missing blocks (with replication factor 1):0
Pending deletion blocks: 0
-------------------------------------------------
Live datanodes (2):
Name: 192.168.43.32:50010 (slave2)
Hostname: slave2
Decommission Status : Normal
Configured Capacity: 19102957568 (17.79 GB)
DFS Used: 4096 (4 KB)
Non DFS Used: 2874605568 (2.68 GB)
DFS Remaining: 16228347904 (15.11 GB)
DFS Used%: 0.00%
DFS Remaining%: 84.95%
Configured Cache Capacity: 0 (0 B)
Cache Used: 0 (0 B)
Cache Remaining: 0 (0 B)
Cache Used%: 100.00%
Cache Remaining%: 0.00%
Xceivers: 1
Last contact: Mon Jun 25 10:00:18 CST 2018
Name: 192.168.43.79:50010 (slave1)
Hostname: slave1
Decommission Status : Normal
Configured Capacity: 19102957568 (17.79 GB)
DFS Used: 4096 (4 KB)
Non DFS Used: 2874609664 (2.68 GB)
DFS Remaining: 16228343808 (15.11 GB)
DFS Used%: 0.00%
DFS Remaining%: 84.95%
Configured Cache Capacity: 0 (0 B)
Cache Used: 0 (0 B)
Cache Remaining: 0 (0 B)
Cache Used%: 100.00%
Cache Remaining%: 0.00%
Xceivers: 1
Last contact: Mon Jun 25 10:00:18 CST 2018
(7)查看文件块组成:一个文件由哪些块组成
[root@master ~]#/usr/local/hadoop-2.8.4/bin/hdfs fsck / -files –blocks
(8)Web 查看 HDFS: http://192.168.43.205:50070
(9)通过 Web 查看 hadoop 集群状态: http://192.168.43.205:8088
HDFS
Hdfs是安装hadoop中就有的
HDFS操作命令
(1)显示文件列表
[root@master ~]# hadoop fs -ls /
Found 1 items
drwxrwx--- -root supergroup 0 2018-07-01 11:28 /tmp
#前面有配置
(2)上传文件
[root@master ~]# hadoop fs -put anaconda-ks.cfg /
[root@master ~]# hadoop fs -ls /
Found 2 items
-rw-r--r-- 3 root supergroup 1551 2018-07-01 11:45 /anaconda-ks.cfg
drwxrwx--- - root supergroup 0 2018-07-01 11:28 /tmp
(3)创建文件
[root@master ~]# hadoop fs -touchz /hdfs.txt
[root@master ~]# hadoop fs -ls /
Found 3 items
-rw-r--r-- 3 root supergroup 1551 2018-07-01 11:45 /anaconda-ks.cfg
-rw-r--r-- 3 root supergroup 0 2018-07-01 11:47 /hdfs.txt
drwxrwx--- - root supergroup 0 2018-07-01 11:28 /tmp
(4)下载文件
[root@master ~]# hadoop fs -get /hdfs.txt /root
[root@master ~]# ls
anaconda-ks.cfg hdfs.txt
(5)其他命令用法,查看帮助命令
[root@master ~]# hadoop fs
二 Zookeeper安装
http://archive.apache.org/dist/zookeeper/zookeeper-3.4.5/zookeeper-3.4.5.tar.gz
1、集群环境
192.168.43.205 master
192.168.43.79 slave1
192.168.43.32 slave2
安装有jdk、hadoop
2、安装zookeeper
[root@master src]# tar -xvf zookeeper-3.4.5.tar.gz -C /usr/local/
解压即可用
3、环境变量配置
[root@master ~]# vim /etc/profile
exportZOOKEEPER_HOME=/usr/local/zookeeper-3.4.5
export PATH=$ZOOKEEPER_HOME/bin:$PATH
[root@master ~]# source /etc/profile
[root@master ~]# echo $ZOOKEEPER_HOME
/usr/local/zookeeper-3.4.5
4、配置过程
[root@master ~]# cd/usr/local/zookeeper-3.4.5/
创建数据、日记保存目录
[root@master zookeeper-3.4.5]# mkdir data
[root@master zookeeper-3.4.5]# mkdir log
[root@master zookeeper-3.4.5]# cd conf
[root@master conf]# cp zoo_sample.cfg zoo.cfg
[root@master conf]# vim zoo.cfg
dataDir=/usr/local/zookeeper-3.4.5/data
dataLogDir=/usr/local/zookeeper-3.4.5/log
server.1=master:2888:3888
server.2=slave1:2888:3888
server.3=slave2:2888:3888
5、传输给其他两台服务器
[root@master ~]# scp -r /usr/local/zookeeper-3.4.5/ slave1:/usr/local/
[root@master ~]# scp -r /usr/local/zookeeper-3.4.5/slave2:/usr/local/
[root@master ~]# scp /etc/profile slave1:/etc/
[root@master ~]# scp /etc/profile slave2:/etc/
[root@slave1 ~]# source /etc/profile
[root@slave2 ~]# source /etc/profile
6、添加mydi文件
要求 myid中的值要与配置文件server.X 中设置的X 相一致,且路径要与datadir中一致
[root@master ~]# echo 1 >/usr/local/zookeeper-3.4.5/data/myid
[root@slave1 ~]# echo 2 >/usr/local/zookeeper-3.4.5/data/myid
[root@slave2 ~]# echo 3 >/usr/local/zookeeper-3.4.5/data/myid
7、启动服务
[root@master bin]# pwd
/usr/local/zookeeper-3.4.5/bin
[root@master bin]# zkServer.sh start
JMX enabled by default
Using config:/usr/local/zookeeper-3.4.5/bin/../conf/zoo.cfg
Starting zookeeper ... STARTED
[root@master bin]# jps
4404 NameNode
4565 SecondaryNameNode
6524 Jps
3277 JobHistoryServer
4749 ResourceManager
6493 QuorumPeerMain #zookeeper进程
[root@slave1 ~]# zkServer.sh start
JMX enabled by default
Using config:/usr/local/zookeeper-3.4.5/bin/../conf/zoo.cfg
Starting zookeeper ... STARTED
[root@slave2 bin]# zkServer.sh start
JMX enabled by default
Using config:/usr/local/zookeeper-3.4.5/bin/../conf/zoo.cfg
Starting zookeeper ... STARTED
8、查看状态
[root@slave2 bin]# zkServer.sh status
JMX enabled by default
Using config:/usr/local/zookeeper-3.4.5/bin/../conf/zoo.cfg
Mode: leader
[root@slave1 ~]# zkServer.sh status
JMX enabled by default
Using config:/usr/local/zookeeper-3.4.5/bin/../conf/zoo.cfg
Mode: follower
[root@master bin]# zkServer.sh status
JMX enabled by default
Using config:/usr/local/zookeeper-3.4.5/bin/../conf/zoo.cfg
Mode: follower
9、测试leader故障后切换情况
[root@slave2 bin]# jps
2085 NodeManager
2824 QuorumPeerMain
1977 DataNode
2894 Jps
[root@slave2 bin]# ps -aux | grep zookeeper
Warning: bad syntax, perhaps a bogus '-'?See /usr/share/doc/procps-3.2.8/FAQ
root 2824 0.4 5.2 2262348 52608 pts/0 Sl 11:18 0:13/usr/java/jdk1.8.0_144/bin/java -Dzookeeper.log.dir=.-Dzookeeper.root.logger=INFO,CONSOLE
[root@slave2 bin]# kill -9 2824
[root@slave2 bin]# ps -aux | grep zookeeper
Warning: bad syntax, perhaps a bogus '-'?See /usr/share/doc/procps-3.2.8/FAQ
root 9305 0.0 0.0 103328 852 pts/0 S+ 12:10 0:00 grep zookeeper
[root@slave2 bin]# jps
7520 NodeManager
7415 DataNode
9307 Jps
这时查看其他两台服务器状态
[root@master bin]# zkServer.sh status
JMX enabled by default
Using config:/usr/local/zookeeper-3.4.5/bin/../conf/zoo.cfg
Mode: follower
[root@slave1 ~]# zkServer.sh status
JMX enabled by default
Using config: /usr/local/zookeeper-3.4.5/bin/../conf/zoo.cfg
Mode: leader
现在slave1成为主了
10、Zookeeper客户端四字符指令
conf 配置信息
cons 连接信息
dump 未处理会话节点
envi 环境信息
reqs 未处理请求
stat 统计信息
wchs 服务器watch的详细信息
wchp 列出指定路径下服务器信息
[root@master bin]# echo conf | nc 192.168.43.205 2181
clientPort=2181
dataDir=/usr/local/zookeeper-3.4.5/data/version-2
dataLogDir=/usr/local/zookeeper-3.4.5/log/version-2
。。。。。。
[root@master bin]# echo envi |nc192.168.43.205 2181
Environment:
zookeeper.version=3.4.5-1392090, built on09/30/2012 17:52 GMT
host.name=master
。。。。。。
[root@master ~]# echo stat | nc 192.168.43.205 2181
Zookeeper version: 3.4.5-1392090, built on09/30/2012 17:52 GMT
Clients:
/192.168.43.205:49880[0](queued=0,recved=1,sent=0)
。。。。。。
11、Zookeeper客户端命令
通过zkCli.sh 连接服务器
zkCli.sh -server master/slave1/slave2:2181
[root@master bin]# ./zkCli.sh
Connecting to localhost:2181
。。。。。。
WATCHER::
WatchedEvent state:SyncConnected type:Nonepath:null
[zk: localhost:2181(CONNECTED) 0] h ##帮助命令
ZooKeeper -server host:port cmd args
statpath [watch]
setpath data [version]
。。。。。。
[zk: localhost:2181(CONNECTED) 1] ls / #列出目录内容
[zookeeper]
[zk: localhost:2181(CONNECTED) 2] ls /zookeeper
[quota]
[zk: localhost:2181(CONNECTED) 3] ls /zookeeper/quota
[]
[zk: localhost:2181(CONNECTED) 5] create /root test #创建目录及数据
Created /root
[zk: localhost:2181(CONNECTED) 7] ls /
[zookeeper, root]
[zk: localhost:2181(CONNECTED) 8] get /root #获取数据
test
cZxid = 0x500000006
ctime = Sat Feb 24 06:16:16 CST 2018
mZxid = 0x500000006
mtime = Sat Feb 24 06:16:16 CST 2018
pZxid = 0x500000006
。。。。。。
需要注意的是ZK是不能一次创建多级节点的
[zk: localhost:2181(CONNECTED) 9] create /root/s1/s1-1 #报错
[zk: localhost:2181(CONNECTED) 10] ls /root #查看为空
[]
[zk: localhost:2181(CONNECTED) 11] create /root/s1 s1-date
Created /root/s1
[zk: localhost:2181(CONNECTED) 12] create /root/s2 s2-data
Created /root/s2
[zk: localhost:2181(CONNECTED) 13] create /root/s3 s3-data
Created /root/s3
[zk: localhost:2181(CONNECTED) 14] ls /root
[s3, s1, s2]
查看状态
[zk: localhost:2181(CONNECTED) 15] stat /root
cZxid = 0x500000006
ctime = Sat Feb 24 06:16:16 CST 2018
。。。。。。
删除目录
[zk: localhost:2181(CONNECTED) 16] delete /root/s3
[zk: localhost:2181(CONNECTED) 17] ls /root
[s1, s2]
断开连接
[zk: localhost:2181(CONNECTED) 18] close
2018-02-24 06:27:08,915 [myid:] - INFO [main-EventThread:ClientCnxn$EventThread@509]- EventThread shut down
2018-02-24 06:27:08,917 [myid:] - INFO [main:ZooKeeper@684] - Session:0x161c4b008a20002 closed
重新连接
由于ZK服务器间的数据是一致的,因此这次我连接其它服务器
[zk: localhost:2181(CLOSED) 19] connect master:2181
[zk: master:2181(CONNECTED) 20] get /root
test
cZxid = 0x500000006
。。。。。。
[zk: master:2181(CONNECTED) 21] get /root/s1
s1-date
。。。。。。
三 安装storm
http://mirror.bit.edu.cn/apache/storm/
1. 集群环境
192.168.43.205 master
192.168.43.79 slave1
192.168.43.32 slave2
安装了jdk、hadoop、zookeeper
注意点启动hadoop、zookeeper,再启动storm
2. 安装
上传软件:apache-storm-1.0.6.tar.gz
[root@master src]# tar -xvf apache-storm-1.0.6.tar.gz-C /usr/local/
[root@master src]# cd /usr/local/
[root@master local]# mv apache-storm-1.0.6/ storm-1.0.6
[root@master storm-1.0.6]# ls
bin external lib NOTICE RELEASE
conf extlib LICENSE public SECURITY.md
examples extlib-daemon log4j2 README.markdown
[root@master storm-1.0.6]# cd conf/
[root@master conf]# ls #查看主要配置文件,注意先备份
storm_env.ini storm-env.sh storm.yaml
3. 修改配置文件
[root@master conf]# cp storm.yaml storm.yaml.bak
[root@master conf]# vim storm.yaml
storm.zookeeper.servers:
- "master"
- "slave1"
- "slave2"
nimbus.host:"master"
supervisor.slots.ports:
- 6700
- 6701
- 6702
- 6703
- 6704
- 6705
4. 配置环境变量
[root@master conf]# vim /etc/profile
#####################storm
STORM_HOME=/usr/local/storm-1.0.6/
export PATH=$PATH:$STORM_HOME/bin
[root@master conf]# source /etc/profile
5. 拷贝到slave1 slave2
#Master
[root@master ~]# scp -r /usr/local/storm-1.0.6/ slave1:/usr/local/
[root@master ~]# scp -r /usr/local/storm-1.0.6/ slave2:/usr/local/
[root@master ~]# scp /etc/profile slave1:/etc/
[root@master ~]# scp /etc/profile slave2:/etc/
[root@slave1 ~]# source /etc/profile
[root@slave2 ~]# source /etc/profile
[root@slave1 ~]# echo $STORM_HOM
6. 启动集群
[root@master ~]# vim /usr/local/storm-1.0.6/bin/start-storm-master.sh
nohup /usr/local/storm-1.0.6/bin/storm nimbus >/dev/null 2>&1 &
nohup /usr/local/storm-1.0.6/bin/storm ui >/dev/null 2>&1 &
nohup /usr/local/storm-1.0.6/bin/storm logviewer >/dev/null 2>&1 &
[root@master~]#chmod +x /usr/local/storm-1.0.6/bin/start-storm-master.sh
[root@master~]#/usr/local/storm-1.0.6/bin/start-storm-master.sh
#Slave1、Slave2
[root@slave1 ~]# vim /usr/local/storm-1.0.6/bin/start-storm-slave.sh
nohup /usr/local/storm-1.0.6/bin/storm supervisor >/dev/null 2>&1 &
nohup /usr/local/storm-1.0.6/bin/storm logviewer >/dev/null 2>&1 &[root@slave1 ~]#chmod +x/usr/local/storm-1.0.6/bin/start-storm-slave.sh
[root@slave1 ~]#/usr/local/storm-1.0.6/bin/start-storm-slave.sh
slave2一样操作,这里就不写了
7. 集群状态
Jps
#Master
[root@master ~]# jps
6977 nimbus #主节点,资源分配,任务调度
6978 core #ui界面,必须跟nimbus同一服务器
6979 logviewer #可在storm ui中查看日记
4404 NameNode
4565 SecondaryNameNode
7322 Jps
3277 JobHistoryServer
4749 ResourceManager
6493 QuorumPeerMain
#Slave1
[root@slave1 ~]# jps
2354 NodeManager
2246 DataNode
2969 QuorumPeerMain
5629 Supervisor #从节点,管理work
5630 logviewer
6046 Jps
#Slave2
[root@slave2 ~]# jps
2085 NodeManager
5591 Supervisor #从节点,管理work
2824 QuorumPeerMain
5592 logviewer
1977 DataNode
5994 Jps
8. 监控页面
http://master:8080/index.html
9. 关闭集群
#master、Slave1、Slave2
[root@master~]# vim /usr/local/storm-1.0.6/bin/stop-storm.sh
kill `ps aux| grep storm | grep -v 'grep' | awk '{print $2}'`
[root@master~]#chmod +x /usr/local/storm-1.0.6/bin/stop-storm.sh
[root@master~]#/usr/local/storm-1.0.6/bin/stop-storm.sh
四 安装hbase
http://mirror.bit.edu.cn/apache/hbase/
http://archive.apache.org/dist/hbase/hbase-0.98.6/hbase-0.98.6-hadoop2-bin.tar.gz
启动hbase前,需要先启动hadoop
Hbase里有自带的zookeeper,如果zookeeper是另外安装的也要先启动
启动顺序:Hadoop----zookeeper----hbase
1. 集群环境
192.168.43.205 master
192.168.43.79 slave1
192.168.43.32 slave2
安装有hadoop zookeeper storm
2. 安装hbase
#Master
上传软件包:hbase-0.98.6-hadoop2-bin.tar.gz
[root@master src]# tar -xvf hbase-0.98.6-hadoop2-bin.tar.gz -C /usr/local/
[root@master src]# cd /usr/local
[root@master local]# mv hbase-0.98.6-hadoop2/ hbase-0.98.6
3. 修改Hbase配文件
#Master
[root@master local]# cd hbase-0.98.6/conf/
[root@master conf]# ls
hadoop-metrics2-hbase.properties hbase-policy.xml regionservers
hbase-env.cmd hbase-site.xml
hbase-env.sh log4j.properties
3.1、修改regionservers
#Master
[root@master conf]# vim regionservers
master
slave1
slave2
3.2、修改hbase-env.sh
#Master
[root@master conf]# vim hbase-env.sh
#添加下面两行
export JAVA_HOME=/usr/java/jdk1.8.0_172
export CLASSPATH=.:$CLASSPATH:$JAVA_HOME/lib
124 # export HBASE_MANAGES_ZK=true
这一行原本注释的,把注释去掉,true为使用自带的zookeeper,false为使用自己安装的zookeeper
改为:export HBASE_MANAGES_ZK=false
3.3、修改hbase-site.xml
#Master
[root@master conf]# vim hbase-site.xml
<configuration>
<property>
<name>hbase.tmp.dir</name>
<value>/var/hbase</value> #临时文件存储位置
</property>
<property>
<name>hbase.rootdir</name>
<value>hdfs://master:9000/hbase</value>
</property>
<property>
<name>hbase.cluster.distributed</name>
<value>true</value>
</property>
<property>
<name>hbase.zookeeper.quorum</name>
<value>master,slave1,slave2</value>
</property>
<property>
<name>hbase.zookeeper.property.dataDir</name>
<value>/usr/local/hbase-0.98.6/zookeeper</value>
</property>
<property>
<name>hbase.master.info.port</name>
<value>60010</value>
</property>
</configuration>
4、添加环境变量
[root@master ~]# vim /etc/profile
####################hbase
HBASE_HOME=/usr/local/hbase-0.98.6
HBASE_CLASSPATH=$HBASE_HOME/conf
HBASE_LOG_DIR=$HBASE_HOME/logs
PATH=$PATH:$HBASE_HOME/bin
[root@master ~]# source /etc/profile
#刷新环境变量
5. 拷贝安装包
[root@master ~]# scp -r /usr/local/hbase-0.98.6/ slave1:/usr/local/
[root@master ~]# scp -r /usr/local/hbase-0.98.6/ slave2:/usr/local/
[root@master ~]# scp /etc/profile slave1:/etc/
[root@master ~]# scp /etc/profile slave2:/etc/
[root@slave1 ~]# source /etc/profile
[root@slave2 ~]# source /etc/profile
6. 启动集群
启动顺序:
hadoop---hbase (自动zookeeper)
hadoop---zookeeper---hbase (另装zookeeper)
关闭相反
启动hbase
启动前要先确认hadoop、zookeeper已经启动,并且要注意启动顺序
[root@master ~]# /usr/local/hbase-0.98.6/bin/start-hbase.sh
starting master, logging to /usr/local/hbase-0.98.6/bin/../logs/hbase-root-master-master.out
slave2: starting regionserver, logging to /usr/local/hbase-0.98.6/bin/../logs/hbase-root-regionserver-slave2.out
slave1: starting regionserver, logging to /usr/local/hbase-0.98.6/bin/../logs/hbase-root-regionserver-slave1.out
master: starting regionserver, logging to /usr/local/hbase-0.98.6/bin/../logs/hbase-root-regionserver-master.out
7. 进程状态
[root@master ~]# jps
4404 NameNode
4565 SecondaryNameNode
9749 Jps
9547 HRegionServer
3277 JobHistoryServer
4749 ResourceManager
6493 QuorumPeerMain
9438 HMaster
8. 监控页面
http://master:60010/master-status
9. 关闭集群
#master
[root@master ~]# /usr/local/hbase-0.98.6/bin/stop-hbase.sh
配置完成!