IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 大数据 -> WMware上搭建基于Ubuntu18.04的Zookeeper+Hadoop+HBase集群 -> 正文阅读

[大数据]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.161192.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免密登陆

  1. 安装ssh服务
sudo apt-get install openssh-server
  1. 检测ssh服务是否开启
    输入sudo ps -e |grep ssh–>回车–>有sshd,说明ssh服务已经启动,如果没有启动,输入sudo service ssh start–>回车–>ssh服务就会启动
    在这里插入图片描述
  2. 生成ssh密钥
    以下操作都是在hadoop001节点操作,其他节点操作相同。
    进入到宿主目录下,生成本机秘钥同时设置免密登录,注意,这里不能使用 root 用户生成秘钥!用hadoop001用户。
 cd ~
 ssh-keygen -t rsa

然后一路回车,就创建完成了。

  1. 将公钥追加到 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
#1. 判断参数个数
if [ $# -lt 1 ]
then
    echo Not Enough Arguement!
    exit;
fi
#2. 遍历集群所有机器
for host in hadoop001 hadoop002 hadoop003
do
    echo ====================  $host  ====================
    #3. 遍历所有目录,挨个发送
    for file in $@
    do
        #4. 判断文件是否存在
        if [ -e $file ]
            then
                #5. 获取父目录
                pdir=$(cd -P $(dirname $file); pwd)
                #6. 获取当前文件的名称
                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中增加以下内容:

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

  1. 打开finalShell,远程连接上Hadoop001。

.

  1. /opt路径下创建一个module文件夹用于安装集群所需要的文件,加上sudo,因为opt目录下普通用户没有权限创建文件夹。
sudo mkdir /opt/module
  1. 进入/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/
  1. 使用chown指令修改文件所有者。
sudo chown wzh:wzh -R /opt/module
  1. 再次查看,发现已经修改成功。
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/
  1. 然后用finalShell的上传工具,上传JDK到/opt/module路径
    在这里插入图片描述
  2. 解压JDK安装包
wzh@hadoop001:/opt/module$ tar -zxvf jdk-linux-x64.tar.gz 
  1. 更改解压后的文件夹名字,方便后面设置环境变量。设置完后通过ll指令查看是否更改成功。
wzh@hadoop001:/opt/module$ mv jdk1.8.0_131/ java
wzh@hadoop001:/opt/module$ ll
  1. 配置JDK的环境变量,这里新建一个环境变量脚本my_env.sh,这样后续其他软件的环境变量也可以放这里。
sudo vim /etc/profile.d/my_env.sh
  1. 添加下面的配置
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
  1. 修改完成后,保存退出,然后用source指令使其生效。
source /etc/profile
  1. 输入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。

  1. 和hadoop001一样,分别在002、003上创建module文件夹,并更改他们的权限。
sudo mkdir /opt/module
sudo chown wzh:wzh -R /opt/module/
  1. 分发JDK解压后的文件给Hadoop002、Hadoop003
cd /opt/module
xsync java
  1. 按照JDK安装的步骤9~12为Hadoop002和Hadoop003节点设置环境变量 (推荐还是用下面的脚本分发环境变量,后面的3个软件如果都手动设置太麻烦)

是不是感觉这个脚本very beautiful~!!!后面的Zookeeper、Hadoop、HBase都是只需要在一个虚拟机上安装然后用脚本分发,你只需要为每个机器配置环境变量。
其实环境变量也能分发!!!!

2.4 分发JDK的系统环境配置

由于系统环境变量文件,需要root用户权限才能进行复制等操作,没办法直接在普通用户wzh上面用xsync来分发给其他设备,所以需要对root用户进行ssh配置(xsync脚本里面有用到ssh命令)

  1. 登陆root用户,因为下面的指令都是在root用户上操作的,所以第一步必须登录root账户
sudo -i
  1. 设置root密码,ubuntu默认root密码是随机的,需要重置一下,我这里和wzh用户设置一样的密码123456
sudo passwd root
  1. 修改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节点上也操作一下!!然后在执行下面步骤

  1. 到用户目录,生成ssh密钥
cd ~ 
ssh-keygen -t rsa
  1. 分发密钥给各个节点(包括自己,因为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

  1. 下载Zookeeper文件
    Zookeeper官网: https://zookeeper.apache.org/
  2. 使用finalShell上传zookeeper安装包到/opt/module路径。
    在这里插入图片描述
  3. 解压zookeeper安装包
tar -zxvf apache-zookeeper-3.5.7-bin.tar.gz 
  1. 修改文件夹名,方便后面配置环境变量
mv apache-zookeeper-3.5.7-bin zookeeper
  1. /opt/module/zookeeper/conf 这个路径下的 zoo_sample.cfg 修改为 zoo.cfg
mv zoo_sample.cfg zoo.cfg
  1. 打开 zoo.cfg 文件,修改 dataDir 路径:
vim zoo.cfg
修改如下内容:
dataDir=/opt/module/zookeeper/zkData
  1. 启动Zookeeper
wzh@hadoop001:/opt/module/zookeeper$ bin/zkServer.sh start
  1. 检查启动的状态
wzh@hadoop001:/opt/module/zookeeper$ bin/zkServer.sh status

发现打印的日志显示Mode: standalone,表示单节点启动。
再输入jps指令,发现进程中多了一个QuorumPeerMain,这个就是Zookeeper的进程。

  1. 停止Zookeeper
wzh@hadoop001:/opt/module/zookeeper$ bin/zkServer.sh stop

3.2 分布式Zookeeper安装

这里的安装是接着上面单节点的安装步骤的,hadoop001
上已经创建了zkData文件夹,同时把zoo_example.cfg修改成了zoo.cfg文件。

  1. 创建myid文件,该文件是集群的不同节点的标识符,要保证每个节点的不一样。
wzh@hadoop001:/opt/module/zookeeper/zkData$ touch myid
  1. 修改myid文件
wzh@hadoop001:/opt/module/zookeeper/zkData$ vim myid 

在文件中添加与 server 对应的编号:

1
  1. 修改zoo.cfg文件。
wzh@hadoop001:/opt/module/zookeeper$ vim conf/zoo.cfg 

增加以下内容

#######################cluster##########################
server.1=hadoop001:2888:3888
server.2=hadoop002:2888:3888
server.3=hadoop003:2888:3888
  1. 分发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,而这个端口就是用来执行选举时服务器相互通信的端口。
  1. 启动集群
    分别在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
  1. 查看每个节点的状态
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

  1. 解压Hadoop压缩包
wzh@hadoop001:/opt/module$ tar -zxvf hadoop-3.2.2.tar.gz 
  1. 更改名字,方便后面配置环境变量
wzh@hadoop001:/opt/module$ mv hadoop-3.2.2 hadoop
  1. 打开/etc/profile.d/my_env.sh文件,配置Hadoop的环境变量
wzh@hadoop001:/opt/module$ sudo vim /etc/profile.d/my_env.sh
  1. 在my_env.sh文件末尾添加如下内容:(shift+g)
#HADOOP_HOME
export HADOOP_HOME=/opt/module/hadoop
export PATH=$PATH:$HADOOP_HOME/bin
export PATH=$PATH:$HADOOP_HOME/sbin
  1. 让修改后的文件生效
source /etc/profile
  1. 检验hadoop是否安装成功
hadoop version

如果该命令无效,输入reboot重启虚拟机

4.2 分布式安装Hadoop

4.2.1 集群部署规划

注意:
NameNode和SecondaryNameNode不要安装在同一台服务器
ResourceManager也很消耗内存,不要和NameNode、SecondaryNameNode配置在同一台机器上。
在这里插入图片描述

配置文件说明
Hadoop配置文件分两类:默认配置文件和自定义配置文件,只有用户想修改某一默认配置值时,才需要修改自定义配置文件,更改相应属性值。

  1. 默认配置文件:

    要获取的默认文件 文件存放在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

  2. 自定义配置文件:

    core-site.xml、hdfs-site.xml、yarn-site.xml、mapred-site.xml四个配置文件存放在$HADOOP_HOME/etc/hadoop这个路径上,用户可以根据项目需求重新进行修改配置。

4.2.2 配置集群

  1. 核心配置文件

配置core-site.xml

wzh@hadoop001:~$ cd $HADOOP_HOME/etc/hadoop
wzh@hadoop001:/opt/module/hadoop/etc/hadoop$ vim core-site.xml

修改配置如下:

<configuration>
    <!-- 指定NameNode的地址 -->
    <property>
        <name>fs.defaultFS</name>
        <value>hdfs://hadoop001:8020</value>
    </property>

    <!-- 指定hadoop数据的存储目录 -->
    <property>
        <name>hadoop.tmp.dir</name>
        <value>/opt/module/hadoop/data</value>
    </property>

    <!-- 配置HDFS网页登录使用的静态用户为wzh-->
    <property>
        <name>hadoop.http.staticuser.user</name>
        <value>wzh</value>
    </property>
</configuration>
  1. 配置hdfs-site.xml
wzh@hadoop001:/opt/module/hadoop/etc/hadoop$ vim hdfs-site.xml

修改内容如下:

<configuration>
        <!-- nn web端访问地址-->
        <property>
        <name>dfs.namenode.http-address</name>
        <value>hadoop001:9870</value>
    </property>
        <!-- 2nn web端访问地址-->
    <property>
        <name>dfs.namenode.secondary.http-address</name>
        <value>hadoop003:9868</value>
    </property>
</configuration>
  1. 配置yarn-site.xml
wzh@hadoop001:/opt/module/hadoop/etc/hadoop$ vim yarn-site.xml

配置如下:

<configuration>

<!-- Site specific YARN configuration properties -->
<!-- 指定MR走shuffle -->
    <property>
        <name>yarn.nodemanager.aux-services</name>
        <value>mapreduce_shuffle</value>
    </property>

    <!-- 指定ResourceManager的地址-->
    <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>

  1. 配置mapred-site.xml
wzh@hadoop001:/opt/module/hadoop/etc/hadoop$ vim mapred-site.xml

配置如下:

<configuration>
<!-- 指定MapReduce程序运行在Yarn上 -->
    <property>
        <name>mapreduce.framework.name</name>
        <value>yarn</value>
    </property>
</configuration>

4.2.3 分发hadoop及配置

  1. 分发hadoop
wzh@hadoop001:/opt/module$ xsync hadoop
  1. 分发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
  1. 配置集群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 启动集群

  1. 格式化NameNode

如果集群是第一次启动,需要在hadoop102节点格式化NameNode(注意:格式化NameNode,会产生新的集群id,导致NameNode和DataNode的集群id不一致,集群找不到已往数据。如果集群在运行过程中报错,需要重新格式化NameNode的话,一定要先停止namenode和datanode进程,并且要删除所有机器的data和logs目录,然后再进行格式化。)

wzh@hadoop001:/opt/module/hadoop$ hdfs namenode -format

执行完成后,hadoop目录会出现datalogs文件夹。如何重新格式化,记得要删除这两个文件夹。

  1. 启动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
源文件:

# The java implementation to use. By default, this environment
# variable is REQUIRED on ALL platforms except OS X!
# export JAVA_HOME=

取消export JAVA_HOME=的注释,修改成下面这样

export JAVA_HOME=/opt/module/java

分发hadoop-env.sh

xsync /opt/module/hadoop/etc/hadoop/hadoop-env.sh

分发完成后,再次启动hadoop,启动成功后,输入jps检查各个节点的进程。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

  1. 启动YARN

在配置了ResourceManager的节点(hadoop002)启动YARN

wzh@hadoop002:/opt/module/hadoop$ sbin/start-yarn.sh 

启动成功在各个节点输入jps,查看进程是否与下图一直。
在这里插入图片描述

  • Web端查看HDFS的NameNode,在虚拟机上面的浏览器,如果在自己电脑上看,需要配置电脑上的hosts文件
    (a)浏览器中输入:http://hadoop001:9870
    (b)查看HDFS上存储的数据信息

  • Web端查看YARN的ResourceManager
    (a)浏览器中输入:http://hadoop002:8088
    (b)查看YARN上运行的Job信息

至此,hadoop基本服务已经可以正常运行了,下面配置两个常用的服务,历史服务器和日志服务器。

4.2.6 配置历史服务器

为了查看程序的历史运行情况,需要配置一下历史服务器。具体配置步骤如下:

  1. 配置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>

<!-- 历史服务器web端地址 -->
<property>
    <name>mapreduce.jobhistory.webapp.address</name>
    <value>hadoop001:19888</value>
</property>
  1. 在hadoop001启动历史服务器
wzh@hadoop001:/opt/module/hadoop$ mapred --daemon start historyserver

输入jps,查看是否多了一个JobHistoryServer的进程。
查看JobHistory
http://hadoop001:19888/jobhistory

4.2.7 配置日志的聚集

日志聚集概念:应用运行完成以后,将程序运行日志信息上传到HDFS系统上。
在这里插入图片描述

日志聚集功能好处:可以方便的查看到程序运行详情,方便开发调试。
注意:开启日志聚集功能,需要重新启动NodeManager 、ResourceManager和HistoryServer。
开启日志聚集功能具体步骤如下:

  1. 配置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>
<!-- 设置日志保留时间为7天 -->
<property>
    <name>yarn.log-aggregation.retain-seconds</name>
    <value>604800</value>
</property>
  1. 分发配置
wzh@hadoop001:/opt/module/hadoop$ xsync etc/hadoop/
  1. 关闭NodeManager 、ResourceManager和HistoryServer
wzh@hadoop001:/opt/module/hadoop$ sbin/stop-yarn.sh
wzh@hadoop001:/opt/module/hadoop$ mapred --daemon stop historyserver
  1. 启动NodeManager 、ResourceManage和HistoryServer
wzh@hadoop001:/opt/module/hadoop$ sbin/start-yarn.sh
wzh@hadoop001:/opt/module/hadoop$ mapred --daemon start historyserver
  1. 创建一个文件,上传到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#/

  • 运行wordcount的程序
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安装

  1. 用finalShell将Hbase压缩包上传到/opt/module目录
    在这里插入图片描述
  2. 解压压缩包
wzh@hadoop001:/opt/module$ tar -zxvf hbase-1.3.1-bin.tar.gz 

更改文件夹名称,方便后面配置文件。

wzh@hadoop001:/opt/module$ mv hbase-1.3.1 hbase
  1. 修改 HBase 对应的配置文件。
wzh@hadoop001:/opt/module/hbase$ vim conf/hbase-env.sh 

修改下面两处

export JAVA_HOME=/opt/module/java
#不使用HBase自带的Zookeeper
export HBASE_MANAGES_ZK=false
  1. 修改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>
        <!-- 0.98 后的新变动,之前版本没有.port,默认端口为 60000 -->
        <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>
  1. 配置regionservers
wzh@hadoop001:/opt/module/hbase$ vim conf/regionservers 

regionservers中的内容:

hadoop001
hadoop002
hadoop003
  1. 软连接 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一致。

  1. 分发hbase
wzh@hadoop001:/opt/module$ xsync hbase
  1. 启动/停止 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集群就成功搭建了!!~~~~

  大数据 最新文章
实现Kafka至少消费一次
亚马逊云科技:还在苦于ETL?Zero ETL的时代
初探MapReduce
【SpringBoot框架篇】32.基于注解+redis实现
Elasticsearch:如何减少 Elasticsearch 集
Go redis操作
Redis面试题
专题五 Redis高并发场景
基于GBase8s和Calcite的多数据源查询
Redis——底层数据结构原理
上一篇文章      下一篇文章      查看所有文章
加:2021-08-21 15:32:29  更:2021-08-21 15:33:37 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/23 12:56:05-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码