WMware上搭建基于Ubuntu18.04的Zookeeper+Hadoop+HBase集群
前言
本文章在VMware上搭建了3个节点的HBase集群。集群整体架构如下:
整个集群有3个节点,各个节点需要在同一个网段,每个节点需要安装JDK、Zookeeper、Hadoop、HBase
一、环境准备
1、创建虚拟机
虚拟机只需要创建一个,等基础环境设置完后在拷贝2份。如下图新建一个虚拟机,用户名为wzh,密码123456。 保存虚拟机的名称为 Hadoop001 这个名称只是WMware上方便开发者自己识别设备的,并不是虚拟机内部的用户名。
硬件设置如下,内存设置3G (3078 M) 就够用了,因为本人电脑内存只有16G,创建3台3G的虚拟机就已经很吃力了 =_= !
2、网络配置
这里的网络设置为NAT模式,这是VMware上最方便的令虚拟机上网的网络模式。至于WMware的桥接网段是什么,可以在编辑-虚拟网络编辑器 中查看。如下图,我的电脑上面是192.168.50.0网段。 然后修改自己电脑上的网络接口设置,网关设置成192.168.50.2,和虚拟机上的保持一致。
创建完成虚拟机后,手动修改网络配置,使虚拟机的ip变成静态ip。
设置完成后ping www.baidu.com ,若能ping通,则说明网络配置没有问题,否则检查一下自己的网络是否配置错误。
3、克隆2个虚拟机
首先,将Hadoop001虚拟机关机,然后右键-管理-克隆 ,
这一步,记得是创建完整克隆 克隆完成后,一共3个节点。 修改Hadoop002以及Hadoop003的ip分别为192.168.50.161 ,192.168.50.162 ,修改完成后,重新连接该网络或者重启虚拟机使ip生效。
4、更改主机名hostname以及修改hosts文件
修改主机名,分别修改为hadoop001、hadoop002、hadoop003 ,修改完后重启虚拟机使其生效。
sudo vim /etc/hostname
重启虚拟机后,终端输入hostname 验证是否修改hostanme成功
修改每一个节点的hosts文件,3个节点都要修改!
sudo vim /ets/hosts
注释掉127.0.1.1 ,然后增加hadoop001、hadoop002、hadoop003 的映射,记得保存!
4、配置各节点之间的SSH免密登陆
- 安装ssh服务
sudo apt-get install openssh-server
- 检测ssh服务是否开启
输入sudo ps -e |grep ssh –>回车–>有sshd,说明ssh服务已经启动,如果没有启动,输入sudo service ssh start –>回车–>ssh服务就会启动 - 生成ssh密钥
以下操作都是在hadoop001节点操作,其他节点操作相同。 进入到宿主目录下,生成本机秘钥同时设置免密登录,注意,这里不能使用 root 用户生成秘钥!用hadoop001用户。
cd ~
ssh-keygen -t rsa
然后一路回车,就创建完成了。
- 将公钥追加到 authorized_keys 文件中
ssh-copy-id hadoop001
这里先追加给自己,测试能不能行得通。输入完指令要输入yes 以及用户的密码(123456)。 测试能否ssh上自己。
ssh hadoop001
出现下图字样说明ssh成功。 输入exit 退出ssh。 同理,使用ssh-copy-id hadoop002 ssh-copy-id hadoop003 这样就可以在hadoop001上面ssh免密登陆hadoop002以及hadoop003。 上述就是在hadoop001上配置对002和003节点的免密登陆。然后在002、003上同样对3个节点都配置ssh免密登陆,这里就不在贴图了。
5、集群文件群发脚本xsync
划重点!~这个脚本炒鸡实用~~特别方便~~~~!!! 该脚本是对Linux中的rsync 命令进行一个简单封装,rsync 的语法如下图所示
rsync -av $pdir/$fname $user@$host:$pdir/$fname
命令 选项参数 要拷贝的文件路径/名称 目的地用户@主机:目的地路径/名称
脚本实现 进入用户目录 /home/wzh/
cd ~
创建bin 文件夹
mkdir bin
创建xsync 文件
touch xsync
编辑脚本
#!/bin/bash
if [ $# -lt 1 ]
then
echo Not Enough Arguement!
exit;
fi
for host in hadoop001 hadoop002 hadoop003
do
echo ==================== $host ====================
for file in $@
do
if [ -e $file ]
then
pdir=$(cd -P $(dirname $file); pwd)
fname=$(basename $file)
ssh $host "mkdir -p $pdir"
rsync -av $pdir/$fname $host:$pdir
else
echo $file does not exists!
fi
done
done
保存后,对该文件夹添加可执行权限
sudo chmod +x xsync
执行完后通过ll 指令可以看到该文件变成绿色可执行的样式。 创建一个 my_env.sh 的文件用于保存/home/wzh/bin 的路径到环境变量,这样该目录下的可执行脚本xsync ,无论在任何路径,都可以执行了。
wzh@hadoop001:~$ sudo vim /etc/profile.d/my_env.sh
my_env.sh 中增加以下内容:
export PATH=$PATH:/home/wzh/bin
修改完后,保存退出,然后使其生效
wzh@hadoop001:~$ source /etc/profile
在终端输入 $PATH 检查/home/wzh/bin 是否添加到环境变量中。
wzh@hadoop001:~$ $PATH
bash: /home/wzh/bin:/usr/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin: No such file or directory
输入 $PATH 发现/hoome/wzh/bin 已经在系统的环境变量PATH中了。 然后创建一个hello.txt 文件,测试一下xsync 脚本
wzh@hadoop001:~$ touch hello.txt
wzh@hadoop001:~$ vim hello.txt
wzh@hadoop001:~$ xsync hello.txt
==================== hadoop001 ====================
sending incremental file list
sent 58 bytes received 12 bytes 140.00 bytes/sec
total size is 11 speedup is 0.16
==================== hadoop002 ====================
sending incremental file list
hello.txt
sent 116 bytes received 35 bytes 302.00 bytes/sec
total size is 11 speedup is 0.07
==================== hadoop003 ====================
sending incremental file list
hello.txt
sent 116 bytes received 35 bytes 100.67 bytes/sec
total size is 11 speedup is 0.07
出现上图字样说明创建成功,如果没有成功,检查一下ssh配置是否正确。
6、设置sudo免密
由于每次运行sudo 命令都需要输入密码,这里配置sudo免密,这样以后再输入sudo 命令就不需要输入密码了。 编辑sudoders 配置
sudo vim /etc/sudoers
在最下面加入,然后:wq! 保存退出。
wzh ALL=(ALL:ALL) NOPASSWD:ALL
二、集群上安装JDK
2.1 虚拟机安装JDK
- 打开finalShell,远程连接上Hadoop001。
- 在
/opt 路径下创建一个module 文件夹用于安装集群所需要的文件,加上sudo ,因为opt目录下普通用户没有权限创建文件夹。
sudo mkdir /opt/module
- 进入
/opt 路径,输入ll 查看文件的属性,发现module 文件夹属于root 用户。
wzh@hadoop001:~$ cd /opt/
wzh@hadoop001:/opt$ ll
total 12
drwxr-xr-x 3 root root 4096 Aug 17 18:59 ./
drwxr-xr-x 24 root root 4096 Aug 16 22:57 ../
drwxr-xr-x 2 root root 4096 Aug 17 18:59 module/
- 使用
chown 指令修改文件所有者。
sudo chown wzh:wzh -R /opt/module
- 再次查看,发现已经修改成功。
wzh@hadoop001:/opt$ ll
total 12
drwxr-xr-x 3 root root 4096 Aug 17 18:59 ./
drwxr-xr-x 24 root root 4096 Aug 16 22:57 ../
drwxr-xr-x 2 wzh wzh 4096 Aug 17 18:59 module/
- 然后用finalShell的上传工具,上传JDK到
/opt/module 路径 - 解压JDK安装包
wzh@hadoop001:/opt/module$ tar -zxvf jdk-linux-x64.tar.gz
- 更改解压后的文件夹名字,方便后面设置环境变量。设置完后通过
ll 指令查看是否更改成功。
wzh@hadoop001:/opt/module$ mv jdk1.8.0_131/ java
wzh@hadoop001:/opt/module$ ll
- 配置JDK的环境变量,这里新建一个环境变量脚本
my_env.sh ,这样后续其他软件的环境变量也可以放这里。
sudo vim /etc/profile.d/my_env.sh
- 添加下面的配置
export JAVA_HOME=/opt/module/java
export PATH=$PATH:$JAVA_HOME/bin
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
export JRE_HOME=$JAVA_HOME/jre
- 修改完成后,保存退出,然后用
source 指令使其生效。
source /etc/profile
- 输入
java -version 检查是否生效。
wzh@hadoop001:/opt/module$ java -version
java version "1.8.0_131"
Java(TM) SE Runtime Environment (build 1.8.0_131-b11)
Java HotSpot(TM) 64-Bit Server VM (build 25.131-b11, mixed mode)
若出现上述字样,则安装JDK成功。
2.2 JDK卸载(选做)
如果安装错了,想要卸载JDK,只需要删除JDK的安装文件夹,然后删除刚才配置的环境变量就行。
rm -rf /opt/module/java
2.3 集群文件分发脚本xsync
划重点~~这个脚本特别好用!!!!
至此为止,我们已经成功在hadoop001虚拟机上完成了JDK安装,下面使用xsync 脚本,分发JDK。
- 和hadoop001一样,分别在002、003上创建
module 文件夹,并更改他们的权限。
sudo mkdir /opt/module
sudo chown wzh:wzh -R /opt/module/
- 分发JDK解压后的文件给Hadoop002、Hadoop003
cd /opt/module
xsync java
按照JDK安装的步骤9~12 为Hadoop002和Hadoop003节点设置环境变量 (推荐还是用下面的脚本分发环境变量,后面的3个软件如果都手动设置太麻烦)
是不是感觉这个脚本very beautiful~!!!后面的Zookeeper、Hadoop、HBase都是只需要在一个虚拟机上安装然后用脚本分发,你只需要为每个机器配置环境变量。 其实环境变量也能分发!!!!
2.4 分发JDK的系统环境配置
由于系统环境变量文件,需要root 用户权限才能进行复制等操作,没办法直接在普通用户wzh 上面用xsync 来分发给其他设备,所以需要对root 用户进行ssh配置(xsync 脚本里面有用到ssh 命令)
- 登陆
root 用户,因为下面的指令都是在root用户上操作的,所以第一步必须登录root 账户
sudo -i
- 设置root密码,ubuntu默认root密码是随机的,需要重置一下,我这里和
wzh 用户设置一样的密码123456
sudo passwd root
- 修改ssh的配置,开放
root 用户ssh权限
sudo vim /etc/ssh/sshd_config
更改PermitRootLogin 改成yes 修改完毕后,重启ssh 服务
sudo service sshd restart
或者用下面这个命令重启ssh 服务
sudo systemctl restart sshd
上面的1~3 步记得在002和003节点上也操作一下!!然后在执行下面步骤
- 到用户目录,生成ssh密钥
cd ~
ssh-keygen -t rsa
- 分发密钥给各个节点(包括自己,因为xsync脚本里面有ssh自己)
ssh-copy-id hadoop001
ssh-copy-id hadoop002
ssh-copy-id hadoop003
分发完成后,ssh hadoop002 测试一下,看ssh过去后,是否是以root 用户登录的。 注意!!!步骤4~5 也是要在每个节点都要操作的!!!
完成上诉步骤后,在hadoop001上分发my_en.sh ,记得使用wzh 用户分发,如果是root 用户,输入exit 指令退出root 用户
wzh@hadoop001:~$ sudo ./bin/xsync /etc/profile.d/my_env.sh
执行后,去002和003虚拟机上检查是否有my_env.sh 这个文件,
cd /etc/profile.d/
ll
使环境变量生效
source /etc/profile
测试JDK 是否安装成功
java -version
三、Zookeeper集群安装
3.1 单节点安装Zookeeper
- 下载Zookeeper文件
Zookeeper官网: https://zookeeper.apache.org/ - 使用finalShell上传
zookeeper 安装包到/opt/module 路径。 - 解压
zookeeper 安装包
tar -zxvf apache-zookeeper-3.5.7-bin.tar.gz
- 修改文件夹名,方便后面配置环境变量
mv apache-zookeeper-3.5.7-bin zookeeper
- 将
/opt/module/zookeeper/conf 这个路径下的 zoo_sample.cfg 修改为 zoo.cfg ;
mv zoo_sample.cfg zoo.cfg
- 打开 zoo.cfg 文件,修改
dataDir 路径:
vim zoo.cfg
修改如下内容:
dataDir=/opt/module/zookeeper/zkData
- 启动Zookeeper
wzh@hadoop001:/opt/module/zookeeper$ bin/zkServer.sh start
- 检查启动的状态
wzh@hadoop001:/opt/module/zookeeper$ bin/zkServer.sh status
发现打印的日志显示Mode: standalone ,表示单节点启动。 再输入jps 指令,发现进程中多了一个QuorumPeerMain ,这个就是Zookeeper 的进程。
- 停止Zookeeper
wzh@hadoop001:/opt/module/zookeeper$ bin/zkServer.sh stop
3.2 分布式Zookeeper安装
这里的安装是接着上面单节点的安装步骤的,hadoop001 上已经创建了zkData 文件夹,同时把zoo_example.cfg 修改成了zoo.cfg 文件。
- 创建
myid 文件,该文件是集群的不同节点的标识符,要保证每个节点的不一样。
wzh@hadoop001:/opt/module/zookeeper/zkData$ touch myid
- 修改
myid 文件
wzh@hadoop001:/opt/module/zookeeper/zkData$ vim myid
在文件中添加与 server 对应的编号:
1
- 修改
zoo.cfg 文件。
wzh@hadoop001:/opt/module/zookeeper$ vim conf/zoo.cfg
增加以下内容
server.1=hadoop001:2888:3888
server.2=hadoop002:2888:3888
server.3=hadoop003:2888:3888
- 分发
Zookeeper 文件夹
wzh@hadoop001:/opt/module$ xsync zookeeper/
并分别在 hadoop002、hadoop003 上修改 myid 文件中内容为 2、3
配置参数解读 server.A=B:C:D。
- A 是一个数字,表示这个是第几号服务器; 集群模式下配置一个文件 myid,这个文件在 dataDir 目录下,这个文件里面有一个数据 就是 A 的值,Zookeeper 启动时读取此文件,拿到里面的数据与 zoo.cfg 里面的配置信息比 较从而判断到底是哪个 server。
- B 是这个服务器的地址;
- C 是这个服务器 Follower 与集群中的 Leader 服务器交换信息的端口;
- D 是万一集群中的 Leader 服务器挂了,需要一个端口来重新进行选举,选出一个新的
Leader,而这个端口就是用来执行选举时服务器相互通信的端口。
- 启动集群
分别在3个节点上启动zkServer
wzh@hadoop001:/opt/module/zookeeper$ bin/zkServer.sh start
wzh@hadoop002:/opt/module/zookeeper$ bin/zkServer.sh start
wzh@hadoop003:/opt/module/zookeeper$ bin/zkServer.sh start
- 查看每个节点的状态
wzh@hadoop001:/opt/module/zookeeper$ bin/zkServer.sh status
wzh@hadoop002:/opt/module/zookeeper$ bin/zkServer.sh status
wzh@hadoop003:/opt/module/zookeeper$ bin/zkServer.sh status
发现有一个是leader ,剩下的是follower ,则集群启动成功。
四、Hadoop安装
用finalShell上传Hadoop安装包。 hadoop3.2.2 下载
4.1 单节点安装hadoop
- 解压Hadoop压缩包
wzh@hadoop001:/opt/module$ tar -zxvf hadoop-3.2.2.tar.gz
- 更改名字,方便后面配置环境变量
wzh@hadoop001:/opt/module$ mv hadoop-3.2.2 hadoop
- 打开/etc/profile.d/my_env.sh文件,配置Hadoop的环境变量
wzh@hadoop001:/opt/module$ sudo vim /etc/profile.d/my_env.sh
- 在my_env.sh文件末尾添加如下内容:(shift+g)
export HADOOP_HOME=/opt/module/hadoop
export PATH=$PATH:$HADOOP_HOME/bin
export PATH=$PATH:$HADOOP_HOME/sbin
- 让修改后的文件生效
source /etc/profile
- 检验hadoop是否安装成功
hadoop version
如果该命令无效,输入reboot 重启虚拟机
4.2 分布式安装Hadoop
4.2.1 集群部署规划
注意: NameNode和SecondaryNameNode不要安装在同一台服务器 ResourceManager也很消耗内存,不要和NameNode、SecondaryNameNode配置在同一台机器上。
配置文件说明 Hadoop配置文件分两类:默认配置文件和自定义配置文件,只有用户想修改某一默认配置值时,才需要修改自定义配置文件,更改相应属性值。
-
默认配置文件: 要获取的默认文件 文件存放在Hadoop的jar包中的位置 [core-default.xml] hadoop-common-3.1.3.jar/core-default.xml [hdfs-default.xml] hadoop-hdfs-3.1.3.jar/hdfs-default.xml [yarn-default.xml] hadoop-yarn-common-3.1.3.jar/yarn-default.xml [mapred-default.xml] hadoop-mapreduce-client-core-3.1.3.jar/mapred-default.xml -
自定义配置文件: core-site.xml、hdfs-site.xml、yarn-site.xml、mapred-site.xml四个配置文件存放在$HADOOP_HOME/etc/hadoop这个路径上,用户可以根据项目需求重新进行修改配置。
4.2.2 配置集群
- 核心配置文件
配置core-site.xml
wzh@hadoop001:~$ cd $HADOOP_HOME/etc/hadoop
wzh@hadoop001:/opt/module/hadoop/etc/hadoop$ vim core-site.xml
修改配置如下:
<configuration>
<property>
<name>fs.defaultFS</name>
<value>hdfs://hadoop001:8020</value>
</property>
<property>
<name>hadoop.tmp.dir</name>
<value>/opt/module/hadoop/data</value>
</property>
<property>
<name>hadoop.http.staticuser.user</name>
<value>wzh</value>
</property>
</configuration>
- 配置hdfs-site.xml
wzh@hadoop001:/opt/module/hadoop/etc/hadoop$ vim hdfs-site.xml
修改内容如下:
<configuration>
<property>
<name>dfs.namenode.http-address</name>
<value>hadoop001:9870</value>
</property>
<property>
<name>dfs.namenode.secondary.http-address</name>
<value>hadoop003:9868</value>
</property>
</configuration>
- 配置yarn-site.xml
wzh@hadoop001:/opt/module/hadoop/etc/hadoop$ vim yarn-site.xml
配置如下:
<configuration>
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
<property>
<name>yarn.resourcemanager.hostname</name>
<value>hadoop002</value>
</property>
<property>
<name>yarn.nodemanager.env-whitelist</name>
<value>JAVA_HOME,HADOOP_COMMON_HOME,HADOOP_HDFS_HOME,HADOOP_CONF_DIR,CLASSPATH_PREPEND_DISTCACHE,HADOOP_YARN_HOME,HADOOP_MAPRED_HOME</value>
</property>
</configuration>
- 配置mapred-site.xml
wzh@hadoop001:/opt/module/hadoop/etc/hadoop$ vim mapred-site.xml
配置如下:
<configuration>
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
</configuration>
4.2.3 分发hadoop及配置
- 分发hadoop
wzh@hadoop001:/opt/module$ xsync hadoop
- 分发hadoop环境变量文件
wzh@hadoop001:/opt/module$ sudo ~/bin/xsync /etc/profile.d/my_env.sh
分别在3个节点使配置文件生效
wzh@hadoop001:~$ source /etc/profile
wzh@hadoop002:~$ source /etc/profile
wzh@hadoop003:~$ source /etc/profile
在002和003节点,检测hadoop是否成功分发。
hadoop version
- 配置集群workers。
wzh@hadoop001:/opt/module$ vim /opt/module/hadoop/etc/hadoop/workers
将该文件内容修改为
hadoop001
hadoop002
hadoop003
注意:该文件中添加的内容结尾不允许有空格,文件中不允许有空行。因为空格会被当做虚拟机名字中的空格
分发workers
wzh@hadoop001:/opt/module/hadoop$ xsync etc/hadoop/workers
4.2.4 启动集群
- 格式化NameNode
如果集群是第一次启动,需要在hadoop102节点格式化NameNode(注意:格式化NameNode,会产生新的集群id,导致NameNode和DataNode的集群id不一致,集群找不到已往数据。如果集群在运行过程中报错,需要重新格式化NameNode的话,一定要先停止namenode和datanode进程,并且要删除所有机器的data和logs目录,然后再进行格式化。)
wzh@hadoop001:/opt/module/hadoop$ hdfs namenode -format
执行完成后,hadoop 目录会出现data 和logs 文件夹。如何重新格式化,记得要删除这两个文件夹。
- 启动HDFS
wzh@hadoop001:/opt/module/hadoop$ sbin/start-dfs.sh
如果报了 ERROR: JAVA_HOME is not set and could not be found.
*修改hadoop-env.sh 该文件在$HADOOP_HOME/etc/hadoop 源文件:
取消export JAVA_HOME= 的注释,修改成下面这样
export JAVA_HOME=/opt/module/java
分发hadoop-env.sh
xsync /opt/module/hadoop/etc/hadoop/hadoop-env.sh
分发完成后,再次启动hadoop,启动成功后,输入jps检查各个节点的进程。
- 启动YARN
在配置了ResourceManager的节点(hadoop002)启动YARN
wzh@hadoop002:/opt/module/hadoop$ sbin/start-yarn.sh
启动成功在各个节点输入jps ,查看进程是否与下图一直。
至此,hadoop基本服务已经可以正常运行了,下面配置两个常用的服务,历史服务器和日志服务器。
4.2.6 配置历史服务器
为了查看程序的历史运行情况,需要配置一下历史服务器。具体配置步骤如下:
- 配置mapred-site.xml
wzh@hadoop001:/opt/module/hadoop$ vim etc/hadoop/mapred-site.xml
增加下面的配置:
<property>
<name>mapreduce.jobhistory.address</name>
<value>hadoop001:10020</value>
</property>
<property>
<name>mapreduce.jobhistory.webapp.address</name>
<value>hadoop001:19888</value>
</property>
- 在hadoop001启动历史服务器
wzh@hadoop001:/opt/module/hadoop$ mapred --daemon start historyserver
输入jps ,查看是否多了一个JobHistoryServer 的进程。 查看JobHistory http://hadoop001:19888/jobhistory
4.2.7 配置日志的聚集
日志聚集概念:应用运行完成以后,将程序运行日志信息上传到HDFS系统上。
日志聚集功能好处:可以方便的查看到程序运行详情,方便开发调试。 注意:开启日志聚集功能,需要重新启动NodeManager 、ResourceManager和HistoryServer。 开启日志聚集功能具体步骤如下:
- 配置yarn-site.xml
wzh@hadoop001:/opt/module/hadoop$ vim etc/hadoop/yarn-site.xml
增加以下配置:
<property>
<name>yarn.log-aggregation-enable</name>
<value>true</value>
</property>
<property>
<name>yarn.log.server.url</name>
<value>http://hadoop001:19888/jobhistory/logs</value>
</property>
<property>
<name>yarn.log-aggregation.retain-seconds</name>
<value>604800</value>
</property>
- 分发配置
wzh@hadoop001:/opt/module/hadoop$ xsync etc/hadoop/
- 关闭NodeManager 、ResourceManager和HistoryServer
wzh@hadoop001:/opt/module/hadoop$ sbin/stop-yarn.sh
wzh@hadoop001:/opt/module/hadoop$ mapred --daemon stop historyserver
- 启动NodeManager 、ResourceManage和HistoryServer
wzh@hadoop001:/opt/module/hadoop$ sbin/start-yarn.sh
wzh@hadoop001:/opt/module/hadoop$ mapred --daemon start historyserver
- 创建一个文件,上传到hdfs系统,并执行 WordCount程序
- 在本地创建一个
wcinput 文件夹,以及helloworld 文件。
wzh@hadoop001:/opt/module/hadoop$ mkdir wcinput
wzh@hadoop001:/opt/module/hadoop$ vim wcinput/helloworld.txt
文件内容:
aa
bb
cc
dd
helloworld
- 在hdfs系统里面创建一个文件夹
input ,并将刚才的hellowolrd.txt 文件上传到该目录
wzh@hadoop001:/opt/module/hadoop$ hadoop fs -put $HADOOP_HOME/wcinput/helloworld.txt /input
上传完成后,可在浏览器上查看上传的结果: http://hadoop001:9870/explorer.html#/
hadoop jar share/hadoop/mapreduce/hadoop-mapreduce-examples-3.2.2.jar wordcount /input /output
4.3 Hadoop 常用的两个脚本
4.3.1 Hadoop集群启动/关闭脚本(包含HDFS,Yarn,Historyserver)
创建myhadoop.sh 脚本
wzh@hadoop001:~$ cd ~/bin/
wzh@hadoop001:~/bin$ vim myhadoop.sh
增加以下内容:
#!/bin/bash
if [ $# -lt 1 ]
then
echo "No Args Input..."
exit ;
fi
case $1 in
"start")
echo " =================== 启动 hadoop集群 ==================="
echo " --------------- 启动 hdfs ---------------"
ssh hadoop001 "/opt/module/hadoop/sbin/start-dfs.sh"
echo " --------------- 启动 yarn ---------------"
ssh hadoop002 "/opt/module/hadoop/sbin/start-yarn.sh"
echo " --------------- 启动 historyserver ---------------"
ssh hadoop001 "/opt/module/hadoop/bin/mapred --daemon start historyserver"
;;
"stop")
echo " =================== 关闭 hadoop集群 ==================="
echo " --------------- 关闭 historyserver ---------------"
ssh hadoop001 "/opt/module/hadoop/bin/mapred --daemon stop historyserver"
echo " --------------- 关闭 yarn ---------------"
ssh hadoop002 "/opt/module/hadoop/sbin/stop-yarn.sh"
echo " --------------- 关闭 hdfs ---------------"
ssh hadoop001 "/opt/module/hadoop/sbin/stop-dfs.sh"
;;
*)
echo "Input Args Error..."
;;
esac
增加脚本可执行权限
wzh@hadoop001:~/bin$ chmod +x myhadoop.sh
测试脚本。
wzh@hadoop001:~$ myhadoop.sh stop
wzh@hadoop001:~$ myhadoop.sh start
4.3.2 集群进程查看 jpsall
创建jpsall.sh 脚本
wzh@hadoop001:~/bin$ cd ~/bin/
wzh@hadoop001:~/bin$ vim jpsall
添加以下内容:
#!/bin/bash
for host in hadoop001 hadoop002 hadoop003
do
echo =============== $host ===============
ssh $host "source /etc/profile;jps"
done
增加脚本可执行权限
wzh@hadoop001:~$ chmod +x bin/jpsall
测试脚本
wzh@hadoop001:~$ jpsall
=============== hadoop001 ===============
7633 DataNode
11108 Jps
8502 JobHistoryServer
7434 NameNode
8207 NodeManager
=============== hadoop002 ===============
122993 ResourceManager
123361 NodeManager
122763 DataNode
123597 Jps
=============== hadoop003 ===============
118372 Jps
118007 NodeManager
117702 DataNode
117867 SecondaryNameNode
分发/home/atguigu/bin目录,保证自定义脚本在三台机器上都可以使用
wzh@hadoop001:~$ xsync ~/bin/
五、 HBase集群部署
Hbase的运行需要建立在Zookeeper和Hadoop集群正常启动的环境下,同时要保证各节点之间SSH免密,时间同步,由于本集群所有机器都是可以上网的,它们的时间都是会联网更新,就不需要时间同步了。
5.1. Zookeeper 正常部署
首先保证 Zookeeper 集群的正常部署,并启动之:
wzh@hadoop001:/opt/module/zookeeper$ bin/zkServer.sh start
wzh@hadoop002:/opt/module/zookeeper$ bin/zkServer.sh start
wzh@hadoop003:/opt/module/zookeeper$ bin/zkServer.sh start
5.2 Hadoop 正常部署
Hadoop 集群的正常部署并启动:
wzh@hadoop001:/opt/module/hadoop$ sbin/start-dfs.sh
wzh@hadoop001:/opt/module/hadoop$ sbin/start-yarn.sh
或者也可以直接用脚本启动,更加方便。
myhadoop.sh start
5.3 HBase安装
- 用finalShell将Hbase压缩包上传到
/opt/module 目录 - 解压压缩包
wzh@hadoop001:/opt/module$ tar -zxvf hbase-1.3.1-bin.tar.gz
更改文件夹名称,方便后面配置文件。
wzh@hadoop001:/opt/module$ mv hbase-1.3.1 hbase
- 修改 HBase 对应的配置文件。
wzh@hadoop001:/opt/module/hbase$ vim conf/hbase-env.sh
修改下面两处
export JAVA_HOME=/opt/module/java
export HBASE_MANAGES_ZK=false
- 修改hbase-site.xml 修改内容:
wzh@hadoop001:/opt/module/hbase$ vim conf/hbase-site.xml
修改内容如下:
<configuration>
<property>
<name>hbase.rootdir</name>
<value>hdfs://hadoop001:8020/hbase</value>
</property>
<property>
<name>hbase.cluster.distributed</name>
<value>true</value>
</property>
<property>
<name>hbase.master.port</name>
<value>16000</value>
</property>
<property>
<name>hbase.zookeeper.quorum</name>
<value>hadoop001,hadoop002,hadoop003</value>
</property>
<property>
<name>hbase.zookeeper.property.dataDir</name>
<value>/opt/module/zookeeper/zkData</value>
</property>
</configuration>
- 配置regionservers
wzh@hadoop001:/opt/module/hbase$ vim conf/regionservers
regionservers中的内容:
hadoop001
hadoop002
hadoop003
- 软连接 hadoop 配置文件到 HBase
软连接:使hadoop和HBase中的配置文件保持一致,类似于快捷方式和源文件一样
wzh@hadoop001:/opt/module/hbase$ ln -s /opt/module/hadoop/etc/hadoop/core-site.xml /opt/module/hbase/conf/core-site.xml
wzh@hadoop001:/opt/module/hbase$ ln -s /opt/module/hadoop/etc/hadoop/hdfs-site.xml /opt/module/hbase/conf/hdfs-site.xml
执行后,查看/opt/module/hbase/conf/hdfs-site.xml 中的内容是否与/opt/module/hadoop/etc/hadoop/hdfs-site.xml 一致。
- 分发hbase
wzh@hadoop001:/opt/module$ xsync hbase
- 启动/停止 hbase
wzh@hadoop001:/opt/module/hbase$ bin/start-hbase.sh
wzh@hadoop001:/opt/module/hbase$ bin/stop-hbase.sh
成功启动后,输入jpsall 会发现,hadoop001中有一个HMaster 进程,且所有节点都有RegionServer 进程。
wzh@hadoop001:/opt/module/hbase$ jpsall
=============== hadoop001 ===============
7633 DataNode
55827 QuorumPeerMain
8502 JobHistoryServer
91526 Jps
91001 HRegionServer
7434 NameNode
90748 HMaster
8207 NodeManager
=============== hadoop002 ===============
122993 ResourceManager
123361 NodeManager
27928 HRegionServer
126248 QuorumPeerMain
122763 DataNode
28251 Jps
=============== hadoop003 ===============
22450 Jps
118007 NodeManager
117702 DataNode
117867 SecondaryNameNode
22076 HRegionServer
121006 QuorumPeerMain
启动成功后,可以通过“host:port”的方式来访问 HBase 管理页面,例如: http://hadoop001:16010
至此!HBase集群就成功搭建了!!~~~~
|