查看yarn进程(查看yarn log)

查看yarn进程(查看yarn log)文章目录 简介内容 amp 流程一 模板虚拟机准备安装模板虚拟机 1 选择 自定义 高级 2 稍后安装操作系统 也可以选择直接安装 没有太大区别 3 虚拟机名称只作标识该虚拟机的作用 自定义即可 4 处理器数量 1 内核数量 25 内存 4G amp 硬盘 50G6 自定义硬件 7 开启此虚拟机 选择 install centos 7 对应选项呈白色 8 语言 中文 简体中文 9 日期和时间 亚洲 上海 10 软件选择 只选择 GNOME 桌面 11 安装位置 自动配置分区 12 网络和主机名 问题 1



文章目录

简介内容&流程一、模板虚拟机准备安装模板虚拟机1,选择 - 自定义(高级)2,稍后安装操作系统(也可以选择直接安装,没有太大区别)3,虚拟机名称只作标识该虚拟机的作用,自定义即可4,处理器数量1,内核数量25, 内存4G & 硬盘50G6,自定义硬件7,开启此虚拟机,选择install centos 7(对应选项呈白色)8,语言 - 中文 - 简体中文9,日期和时间:亚洲-上海10,软件选择:只选择GNOME桌面11,安装位置:自动配置分区12,网络和主机名☭问题1:打开网络后出现DNS1或者无法连接网络

13, 开始安装14, 设置ROOT密码15, 创建用户

模板虚拟机环境准备1, 配置静态网络2,设置hostname☭问题2:主机名变为bogon如何解决?

3,SSH免密登录4,安装工具包☭问题3:报错14: curl#6 - “Could not resolve host: mirrorlist.centos.org; 未知的错误”

5,关闭防火墙,并设置关闭防火墙开机自启6,修改/etc/sudoers文件,使hadoop用户(普通用户)具有 root 权限,方便后期加 sudo 执行 root 权限的命令7,在/opt 目录下创建 module、software 文件夹8,卸载虚拟机自带JDK并重启虚拟机

二、克隆虚拟机准备1,修改克隆机 IP2,修改克隆机主机名3,修改/etc/hosts文件4,重启虚拟机5,修改 windows 的主机映射文件6,在hadoop102上安装JDK☭问题4:执行 source /etc/profile命令时,报错:bash: #: 未找到命令

7,在hadoop102安装Hadoop

三、完全分布式环境部署1,本地测试2,编写集群分发脚本 xsync3,ssh免密登录4,集群配置5,群起集群6,配置历史服务器7,配置日志的聚集8,编写 Hadoop 集群常用脚本9,时间同步

四、安装ZooKeeper、HBase、MAVEN和IDEAZooKeeper完全分布式部署1,解压安装2,配置服务器编号3,配置 zoo.cfg 文件☭问题5:启动ZooKeeper报错 mkdir: 无法创建目录".": 权限不够 ?☭问题6:Zookeeper启动显示成功,zkServer.sh status报错?

4,集群操作

HBase安装1,Zookeeper 正常部署2,Hadoop 正常部署3,HBase 的解压4,HBase 的配置文件☭问题7:HBase启动警告:Java HotSpot™ 64-Bit Server VM warning

5,HBase 远程发送到其他集群6,HBase 服务的启动☭问题8:HBase启动报错 错误:找不到或无法加载主类 org.jruby.Main

安装MAVEN & IDEA1,解压安装2,设置环境变量3,测试 MAVEN4,修改MAVEN配置文件,使用阿里的镜像地址5,运行IDEA

参考资料资源分享

简介

保姆级入门教程:图片讲解 + 各种问题解决方案集群服务器:hadoop102、hadoop103和hadoop104虚拟机版本:CentOS7-1804资源分享处(文章最后)提供CentOS7和Hadoop各组件压缩包(也可以自行下载,要注意版本兼容的问题),有需要自取~

内容&流程

1, 模板虚拟机准备 2, 克隆三台虚拟机,作为完全分布式集群 3, Hadoop完全分布式环境搭建 4, ZooKeeper & HBase & Maven & IDEA安装

一、模板虚拟机准备

安装模板虚拟机

注:下方未出现的步骤,选择默认选项即可

1,选择 - 自定义(高级)

2,稍后安装操作系统(也可以选择直接安装,没有太大区别)

3,虚拟机名称只作标识该虚拟机的作用,自定义即可

4,处理器数量1,内核数量2

5, 内存4G & 硬盘50G

(此虚拟机只为演示Hadoop完全分布式环境搭建过程所用,4G内存基本够用)

硬盘50G (安装内容包含JDK、Hadoop、ZooKeeper、HBase、Maven和IDEA,50G够用)

6,自定义硬件

6.1 选择ISO映像文件

选择稍后安装的要在这一步选择自定义硬件,添加ISO映像文件

6.2 USB兼容性 - USB 3.1

7,开启此虚拟机,选择install centos 7(对应选项呈白色)

8,语言 - 中文 - 简体中文

(在操作体验上,与选择英语差别不大,建议英语不太好的童靴选择中文)

进入安装信息摘要界面

9,日期和时间:亚洲-上海

10,软件选择:只选择GNOME桌面

11,安装位置:自动配置分区

选择自动配置分区即可 (若想要手动分区,则 我要配置分区 - 完成,就会出现手动分区的界面)

12,网络和主机名

12.1 选择配置

12.2 查看个人虚拟机的相关信息

虚拟机 - 编辑选项卡 - 虚拟网络编辑器 选择NAT模式 NAT设置 - 查看子网掩码和网关 DHCP设置 - 查看IP地址范围

之后在配置静态IP地址时,所有的IP地址都必须在这个范围之内 回到配置界面 - 选择IPv4配置 - Add

根据前面的步骤,地址填IP地址范围内的地址,子网掩码和网关照填即可 附加DNS服务器:填入与网关IP相同的地址 保存 - 回到配置界面 - 打开网络

☭问题1:打开网络后出现DNS1或者无法连接网络

出现DNS1:检查网关地址是否正确 无法连接网络:检查IP地址是否在起始和终止的IP地址范围之内

完成

13, 开始安装

将出现以下界面:

14, 设置ROOT密码

建议密码不要太复杂

15, 创建用户

创建一个普通用户,名称可自定义(我创建的用户名称是hadoop,之后用此名称指代普通用户)目的: 在搭建项目的过程中,所有的项目有关的操作都由普通用户来执行,以此与超级用户(root用户)作区别,来维护系统的安全性(防止一些涉及到系统内核的操作被执行)。建议密码不要太复杂

模板虚拟机环境准备

1, 配置静态网络

Q: 为什么使用静态IP地址? A: 在使用虚拟机的时候,默认情况下使用的DHCP协议分配的动态IP地址,使得每次打开虚拟机后当前的IP地址都会发生变化,这样不方便管理。为了能够给当前虚拟机设置一个静态IP地址,方便后期使用XShell连接工具进行连接,以及配置各种服务。所以,我们需要为虚拟机设置一个静态IP地址。

1.1 打开终端,查看网卡名称 - 我的网卡名称为ens33,如下图所示

[root@bogon ~]$ ip addr

1.2 修改网卡配置文件(记得后面要改成自己的网卡名称)

[root@bogon ~]$ vi /etc/sysconfig/network-scripts/ifcfg-ens33

修改以下选项

BOOTPROTO='dhcp' -> 'static'

ONBOOT='no' -> 'yes'

如果在前面安装过程中,设置 网络和主机名 没有出错,那下列选项应该没有问题

IPADDR='要设置的IP地址'

PREFIX='子网掩码'

GATEWAY='网关IP'

DNS1='网关IP'

1.3 重启网络

[root@bogon ~]$ service network restart

2,设置hostname

设置主机名很重要,我设置的模板机的主机名为hadoop100,之后集群服务器中的主机名为hadoop102、hadoop103和hadoop104下面的命令按自己的主机名来

[root@bogon ~]$ hostnamectl set-hostname 主机名

例如:hostnamectl set-hostname hadoop100

2.1 查看hostname

[root@bogon ~]$ cat /etc/hostname

hadoop100

2.2 编辑hosts文件

目的: 修改/etc/hosts 文件,该文件主要用于映射 IP 地址和域名之间的连接

[root@bogon ~]$ vi /etc/hosts

在第二行添加:原本第二行如果有内容删除即可;之后保存退出

IP地址 主机名

例如:

我设置的IP地址为xxx.xxx.xxx.130,那么我要添加的内容就是

xxx.xxx.xxx.130 hadoop100

☭问题2:主机名变为bogon如何解决?

# 执行su命令

[root@bogon ~]$ su

[root@localhost ~]$

3,SSH免密登录

# hadoop 普通用户

[root@localhost ~]$ su hadoop

# 第一次配置免密登录,执行下面这个命令后点三次回车即可

[hadoop@localhost root]$ ssh-keygen

[hadoop@localhost root]$ ssh-copy-id localhost

[hadoop@localhost root]$ ssh localhost

Last login: Web Feb 8 21:43:26 2023

[hadoop@localhost ~]$

4,安装工具包

[root@localhost ~]$ yum install -y epel-release

...

已安装:

epel-release.noarch 0:7-11

完毕!

[root@localhost ~]$ yum install -y net-tools

[root@localhost ~]$ yum install -y vim

☭问题3:报错14: curl#6 - “Could not resolve host: mirrorlist.centos.org; 未知的错误”

CentOS7下报错14: curl#6 - “Could not resolve host: mirrorlist.centos.org; 未知的错误”-解决方法

5,关闭防火墙,并设置关闭防火墙开机自启

[root@localhost ~]$ systemctl stop firewalld

[root@localhost ~]$ systemctl disable firewalld.service

Removed symlink /etc/systemd/system/multi-user.target.wants/firewalld.service.

Removed symlink /etc/systemd/system/dbus-org.fedoraproject.FirewallD1.service.

# 查看防火墙是否已关闭

[root@localhost ~]$ systemctl list-unit-files |grep firewalld

firewalld.service disabled

6,修改/etc/sudoers文件,使hadoop用户(普通用户)具有 root 权限,方便后期加 sudo 执行 root 权限的命令

[root@localhost ~]$ vim /etc/sudoers

在%wheel 这行下面添加一行,其他为文件本身内容,不要改动

Allow root to run any commands anywhere

root ALL=(ALL) ALL

Allows people in group wheel to run all commands

%wheel ALL=(ALL) ALL

hadoop ALL=(ALL) NOPASSWD:ALL

7,在/opt 目录下创建 module、software 文件夹

7.1 module文件夹存放解压后的文件,software文件夹存放待解压的压缩包

[root@localhost ~]$ mkdir /opt/module /opt/software

7.2 修改两个目录的所属组和所有者均为hadoop用户

[root@localhost ~]$ chown -R hadoop:hadoop /opt/module

[root@localhost ~]$ chown -R hadoop:hadoop /opt/software

7.3 查看 module、software 文件夹的所有者和所属组

[root@localhost ~]$ cd /opt/

[root@localhost opt]$ ll

总用量 0

drwxr-xr-x. 2 hadoop hadoop 6 2月 8 21:53 module

drwxr-xr-x. 2 root root 6 9月 7 2017 rh

drwxr-xr-x. 2 hadoop hadoop 6 2月 8 12:53 software

8,卸载虚拟机自带JDK并重启虚拟机

[root@localhost opt]$ rpm -qa | grep -i java | xargs -n1 rpm -e --nodeps

[root@localhost opt]$ reboot

8.1 查看JDK版本(看是否卸载干净)

[root@hadoop100 ~]$ java -version

bash: java: 未找到命令...

二、克隆虚拟机准备

使用VMware自带的克隆功能,利用模板虚拟机克隆三台虚拟机: 主机名分别为hadoop102、hadoop103和hadoop104 IP地址为xxx.xxx.xxx.132、xxx.xxx.xxx.133和xxx.xxx.xxx.134(根据自己虚拟机的IP地址范围配置,下面有具体配置过程)

注意:克隆时,要先关闭hadoop100

1,修改克隆机 IP

以下过程以hadoop102为例,三台虚拟机都需要做

1.1 修改网卡配置文件(记得后面要改成自己的网卡名称)

[root@hadoop100 ~]$ vi /etc/sysconfig/network-scripts/ifcfg-ens33

修改以下选项

附:Linux中为网卡生成UUID

UUID='原来的UUID' -> '新生成的UUID'

IPADDR='原来的IP地址' -> '要设置的IP地址'

1.2 重启网络

[root@hadoop100 ~]$ service network restart

2,修改克隆机主机名

以下过程以hadoop102为例,三台虚拟机都需要做

[root@hadoop100 ~]$ vim /etc/hostname

hadoop102

3,修改/etc/hosts文件

以下过程以hadoop102为例,三台虚拟机都需要做

[root@hadoop100 ~]$ vim /etc/hosts

3.1 添加如下内容

依然是IP地址要修改成你自己的: 尤其是hadoop102~104,对应的IP地址为你要设置的IP

192.168.10.100 hadoop100

192.168.10.101 hadoop101

192.168.10.102 hadoop102

192.168.10.103 hadoop103

192.168.10.104 hadoop104

192.168.10.105 hadoop105

192.168.10.106 hadoop106

192.168.10.107 hadoop107

192.168.10.108 hadoop108

4,重启虚拟机

以下过程以hadoop102为例,三台虚拟机都需要做

[root@hadoop100 ~]$ reboot

4.1 重启之后,打开终端发现主机名已经修改成功

[root@hadoop102 ~]$

5,修改 windows 的主机映射文件

5.1 如果操作系统是window7,可以直接修改

进入C:WindowsSystem32driversetc 路径打开hosts 文件并添加如下内容,然后保存

192.168.10.100 hadoop100

192.168.10.101 hadoop101

192.168.10.102 hadoop102

192.168.10.103 hadoop103

192.168.10.104 hadoop104

192.168.10.105 hadoop105

192.168.10.106 hadoop106

192.168.10.107 hadoop107

192.168.10.108 hadoop108

5.2 如果操作系统是window10,先拷贝出来,修改保存以后,再覆盖即可

进入C:WindowsSystem32driversetc 路径拷贝hosts 文件到桌面打开桌面 hosts 文件并添加同上内容将桌面 hosts 文件覆盖 C:WindowsSystem32driversetc 路径 hosts 文件

修改完毕后,就可以在windows环境下使用xshell连接虚拟机了,操作会方便很多哦~ 附:XShell免费版的安装配置教程以及使用教程(超级详细、保姆级)

6,在hadoop102上安装JDK

6.1 首先确保虚拟机自带JDK卸载干净

[root@hadoop102 ~]$ java -version

bash: java: 未找到命令...

6.2 解压JDK到/opt/module

提示1:xshell中可以使用rz命令将本地文件上传至虚拟机,或者建立共享文件夹也有同样效果。提示2:文章末尾提供JDK8等各组件的安装包,需要自取~

进入/opt/software文件夹,查看压缩包名称

[root@hadoop102 ~]$ cd /opt/software

[root@hadoop102 software]$ ls

解压JDK压缩包

[root@hadoop102 software]$ su hadoop

[hadoop@hadoop102 software]$ sudo tar -zxvf jdk-8u211-linux-x64.tar.gz -C /opt/module

6.3 修改JDK安装包名称

[hadoop@hadoop102 software]$ cd https://www.51969.com/module

[hadoop@hadoop102 module]$ ls

jdk1.8.0_211

[hadoop@hadoop102 module]$ mv jdk1.8.0_211 jdk

[hadoop@hadoop102 module]$ ls

jdk

6.4 配置 JDK 环境变量

[hadoop@hadoop102 module]$ sudo vim /etc/profile.d/my_env.sh

添加以下内容:

#JAVA_HOME

export JAVA_HOME=/opt/module/jdk

export PATH=$PATH:$JAVA_HOME/bin

刷新shell环境,让环境变量生效

[hadoop@hadoop102 module]$ source /etc/profile

查看JDK版本信息

[hadoop@hadoop102 module]$ java -version

☭问题4:执行 source /etc/profile命令时,报错:bash: #: 未找到命令

首先再仔细检查一下 /etc/profile.d/my_env.sh 文件,尤其是注释前面的 # 有没有省略,以及HOME目录有没有配错。

7,在hadoop102安装Hadoop

7.1 进入/opt/software文件夹,解压Hadoop到/opt/module

[hadoop@hadoop102 software]$ sudo tar -zxvf hadoop-2.6.0-cdh5.14.2.tar.gz -C /opt/module

7.2 修改Hadoop安装包名称

[hadoop@hadoop102 module]$ ls

hadoop-2.6.0-cdh5.14.2 jdk

[hadoop@hadoop102 module]$ mv hadoop-2.6.0-cdh5.14.2 hadoop

[hadoop@hadoop102 module]$ ls

hadoop jdk

# 确保hadoop用户具有操作module目录下文件的权限

[hadoop@hadoop102 module]$ cd ..

[hadoop@hadoop102 opt]$ chown -R hadoop:hadoop module

7.3 将 Hadoop 添加到环境变量

[hadoop@hadoop102 module]$ sudo vim /etc/profile.d/my_env.sh

添加以下内容:

#HADOOP_HOME

export HADOOP_HOME=/opt/module/hadoop

export PATH=$PATH:$HADOOP_HOME/bin

export PATH=$PATH:$HADOOP_HOME/sbin

刷新shell环境,让环境变量生效

[hadoop@hadoop102 module]$ source /etc/profile

查看Hadoop版本信息

[hadoop@hadoop102 module]$ hadoop version

三、完全分布式环境部署

1,本地测试

里面有些步骤与后续内容相关,尽量不要跳过

#创建hello.txt文件,用来测试hadoop自带的wordcount程序

[hadoop@hadoop102 module]$ mkdir /hadoop/wcinput

[hadoop@hadoop102 module]$ cd /hadoop/wcinput

[hadoop@hadoop102 wcinput]$ vim hello.txt

1.1 在hello.txt文件中填入任意内容即可,举例:

hello world

hello java

I'm MOSS

1.2 运行wordcount程序

注:在$HADOOP_HOME/share/hadoop/mapreduce/目录下找对应jar包

[hadoop@hadoop102 hadoop]$ pwd

/opt/module/hadoop

[hadoop@hadoop102 hadoop]$ hadoop jar share/hadoop/mapreduce/hadoop-mapreduce-examples-2.6.0-cdh5.14.2.jar wordcount wcinput wcoutput

[hadoop@hadoop102 hadoop]$ cat wcoutput/part-r-00000

2,编写集群分发脚本 xsync

2.1 执行以下命令同步jdk和hadoop文件到hadoop103和hadoop104,顺便测试scp和rsync命令

注意执行各命令的服务器

[hadoop@hadoop102 hadoop]$ scp -r /opt/module/jdk hadoop@hadoop103:/opt/module

[hadoop@hadoop103 hadoop]$ scp -r hadoop@hadoop102:/opt/module/hadoop /opt/module/

[hadoop@hadoop103 hadoop]$ scp -r hadoop@hadoop102:/opt/module/* hadoop@hadoop104:/opt/module

# 在hadoop103上删除wcinput目录,执行rsync同步命令后,hadoop103上wcinput目录恢复

[hadoop@hadoop103 hadoop]$ rm -rf wcinput/

[hadoop@hadoop102 opt]$ rsync -av hadoop/ hadoop@hadoop103:/opt/module/hadoop/

2.2 编写xsync脚本

期望脚本在任何路径都能使用(脚本放在声明了全局环境变量的路径):

[hadoop@hadoop102 opt]$ echo $PATH

[hadoop@hadoop102 opt]$ cd /home/hadoop

[hadoop@hadoop102 ~]$ mkdir bin

将/home/hadoop/bin目录添加到全局环境变量中

[hadoop@hadoop102 ~]$ sudo vim /etc/profile.d/my_env.sh

添加以下内容:

#XSYNC_HOME

export XSYNC_HOME=/home/hadoop

export PATH=$PATH:$XSYNC_HOME/bin

刷新shell环境,让环境变量生效

[hadoop@hadoop102 ~]$ source /etc/profile

# 查看发现全局环境变量中已有/home/hadoop/bin目录

[hadoop@hadoop102 ~]$ echo $PATH

在/home/hadoop/bin目录下编写xsync脚本

[hadoop@hadoop102 ~]$ cd bin

[hadoop@hadoop102 bin]$ vim xsync

在该文件中编写如下代码

#!/bin/bash

#1. 判断参数个数

if [ $# -lt 1 ]

then

echo Not Enough Arguement!

exit;

fi

#2. 遍历集群所有机器

for host in hadoop102 hadoop103 hadoop104

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

2.3 修改脚本 xsync 具有执行权限

[hadoop@hadoop102 bin]$ chmod +x xsync

2.4 测试脚本

[hadoop@hadoop102 bin]$ xsync /home/hadoop/bin

2.5 同步环境变量配置 注意:如果用了 sudo,那么 xsync 一定要给它的路径补全。

[hadoop@hadoop102 ~]$ sudo https://www.51969.com/post/bin/xsync /etc/profile.d/my_env.sh

2.6 让环境变量生效

[hadoop@hadoop103 bin]$ source /etc/profile

[hadoop@hadoop104 bin]$ source /etc/profile

3,ssh免密登录

3.1 生成公钥和私钥

[hadoop@hadoop102 ~]$ cd /home/hadoop/.ssh

[hadoop@hadoop102 .ssh]$ ssh-keygen -t rsa

3.2 将公钥拷贝到要免密登录的目标机器上

[hadoop@hadoop102 .ssh]$ ssh-copy-id hadoop102

[hadoop@hadoop102 .ssh]$ ssh-copy-id hadoop103

[hadoop@hadoop102 .ssh]$ ssh-copy-id hadoop104

注意:

还需要在 hadoop103 上采用 hadoop 账号配置一下无密登录到 hadoop102、hadoop103、 hadoop104 服务器上;还需要在 hadoop104 上采用 hadoop 账号配置一下无密登录到 hadoop102、hadoop103、 hadoop104 服务器上;还需要在 hadoop102 上采用 root 账号,配置一下无密登录到 hadoop102、hadoop103、hadoop104。 接下来就可以通过ssh 主机名命令免密登录到别的服务器了~ 以下为测试:

[hadoop@hadoop102 .ssh]$ ssh hadoop103

Last login: Tue Feb 14 11:57:09 2023 from hadoop102

[hadoop@hadoop103 ~]$ pwd

/home/hadoop

[hadoop@hadoop103 ~]$ exit

登出

Connection to hadoop103 closed.

[hadoop@hadoop102 .ssh]$

4,集群配置

4.1 集群部署规划

数据节点、资源管理器和从数据节点分别安装在三台服务器上数据节点和节点管理器在三台服务器上均安装

4.2 配置集群

核心配置文件配置 core-site.xml

[hadoop@hadoop102 .ssh]$ cd $HADOOP_HOME/etc/hadoop

[hadoop@hadoop102 hadoop]$ vim core-site.xml

core-site.xml修改内容如下:

注意这个hadoop数据存储目录哦,如果没有指定的话,hadoop会在HOME目录下生成一个tmp目录,现在我们指定了,就变成 /opt/module/hadoop/data目录。 所以如果在进行hadoop的格式化之前要删除的tmp目录和logs目录,就变成了data目录和logs目录了。 附:如何重新格式化Hadoop文件系统

fs.defaultFS

hdfs://hadoop102:8020

hadoop.tmp.dir

/opt/module/hadoop/data

hadoop.http.staticuser.user

hadoop

HDFS 配置文件-配置 hdfs-site.xml

[hadoop@hadoop102 hadoop]$ vim hdfs-site.xml

hdfs-site.xml修改内容如下:

dfs.namenode.http-address

hadoop102:9870

dfs.namenode.secondary.http-address

hadoop104:9868

YARN 配置文件-配置 yarn-site.xml

[hadoop@hadoop102 hadoop]$ vim yarn-site.xml

yarn-site.xml修改内容如下:

yarn.nodemanager.aux-services

mapreduce_shuffle

yarn.resourcemanager.hostname

hadoop103

yarn.nodemanager.env-whitelist

JAVA_HOME,HADOOP_COMMON_HOME,HADOOP_HDFS_HOME,HADOOP_CO

NF_DIR,CLASSPATH_PREPEND_DISTCACHE,HADOOP_YARN_HOME,HADOOP_MAP

RED_HOME

MapReduce 配置文件-配置 mapred-site.xml

[hadoop@hadoop102 hadoop]$ vim mapred-site.xml

mapred-site.xml内容如下:

mapreduce.framework.name

yarn

4.3 在集群上分发配置好的 Hadoop 配置文件

[hadoop@hadoop102 hadoop]$ xsync /opt/module/hadoop/etc/hadoop/

4.4 去103 和 104上查看文件分发情况

[hadoop@hadoop103 ~]$ cat /opt/module/hadoop/etc/hadoop/core-site.xml

[hadoop@hadoop104 ~]$ cat /opt/module/hadoop/etc/hadoop/core-site.xml

5,群起集群

5.1 配置 slaves(hadoop3.0之后版本改为workers)

[hadoop@hadoop102 hadoop]$ vim /opt/module/hadoop/etc/hadoop/slaves

文件内容如下:(原本的内容要删除)

hadoop102

hadoop103

hadoop104

同步所有节点配置文件:

[hadoop@hadoop102 hadoop]$ xsync /opt/module/hadoop/etc

5.2 启动集群 注意:如果集群是第一次启动,需要在 hadoop102 节点格式化 NameNode

[hadoop@hadoop102 hadoop]$ hdfs namenode -format

启动HDFS:

[hadoop@hadoop102 hadoop]$ start-dfs.sh

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

[hadoop@hadoop103 hadoop]$ start-yarn.sh

6,配置历史服务器

目的: 为了查看程序的历史运行情况Hadoop自带了一个历史服务器,可以通过历史服务器在web端查看已经运行完的Mapreduce作业记录,比如用了多少个Map、用了多少个Reduce、作业提交时间、作业启动时间、作业完成时间等信息所以修改mapreduce的配置文件以配置历史服务器

6.1 配置 mapred-site.xml

[hadoop@hadoop102 hadoop]$ vim mapred-site.xml

在该文件里面增加如下配置:

mapreduce.jobhistory.address

hadoop102:10020

mapreduce.jobhistory.webapp.address

hadoop102:19888

6.2 分发配置

[hadoop@hadoop102 hadoop]$ xsync $HADOOP_HOME/etc/hadoop/mapred-site.xml

6.3 在 hadoop102启动历史服务器

在hadoop2.0和hadoop3.0上,启动和终止历史服务器的命令有区别,以下为2.0版本 附:hadoop3.x集群:配置、启动历史服务(history server,端口19888)

[hadoop@hadoop102 hadoop]$ mr-jobhistory-daemon.sh start historyserver

6.4 查看历史服务器是否启动

[hadoop@hadoop102 hadoop]$ jps

7,配置日志的聚集

目的: 可以方便的查看到程序运行详情,方便开发调试(在102的HDFS上)

7.1 配置 yarn-site.xml

[hadoopu@hadoop102 hadoop]$ vim yarn-site.xml

在该文件里面增加如下配置

yarn.log-aggregation-enable

true

yarn.log.server.url

http://hadoop102:19888/jobhistory/logs

yarn.log-aggregation.retain-seconds

7.2 分发配置

[hadoop@hadoop102 hadoop]$ xsync $HADOOP_HOME/etc/hadoop/yarn-site.xml

7.3 关闭 NodeManager 、ResourceManager和 HistoryServer

[hadoop@hadoop103 hadoop]$ stop-yarn.sh

[hadoop@hadoop102 hadoop]$ mr-jobhistory-daemon.sh stop historyserver

7.4 启动 NodeManager 、ResourceManage 和 HistoryServer

[hadoop@hadoop103 hadoop]$ start-yarn.sh

[hadoop@hadoop102 hadoop]$ mr-jobhistory-daemon.sh start historyserver

7.5 测试

上传hello.txt文件

[hadoop@hadoop102 hadoop]$ pwd

/opt/module/hadoop

[hadoop@hadoop102 hadoop]$ hadoop fs -mkdir /input

[hadoop@hadoop102 hadoop]$ hadoop fs -put wcinput/hello.txt /input

执行 WordCount 程序

[hadoop@hadoop102 hadoop]$ hadoop jar share/hadoop/mapreduce/hadoop-mapreduce-examples-2.6.0-cdh5.14.2.jar wordcount /input /output

# 查看运行结果

[hadoop@hadoop102 hadoop]$ hadoop fs -text /out*/p*

7.6 查看日志

历史服务器地址:地址历史任务列表 查看任务运行日志 运行日志详情

8,编写 Hadoop 集群常用脚本

8.1 Hadoop 集群启停脚本(包含 HDFS,Yarn,Historyserver)

[hadoop@hadoop102 ~]$ cd /home/hadoop/bin

[hadoop@hadoop102 bin]$ vim myhadoop.sh

编写myhadoop.sh脚本内容

#!/bin/bash

if [ $# -lt 1 ]

then

echo "No Args Input..."

exit ;

fi

case $1 in

"start")

echo " =================== 启动 hadoop 集群 ==================="

echo " --------------- 启动 hdfs ---------------"

ssh hadoop102 "/opt/module/hadoop/sbin/start-dfs.sh"

echo " --------------- 启动 yarn ---------------"

ssh hadoop103 "/opt/module/hadoop/sbin/start-yarn.sh"

echo " --------------- 启动 historyserver ---------------"

ssh hadoop102 "/opt/module/hadoop/sbin/mr-jobhistory-daemon.sh start historyserver"

;;

"stop")

echo " =================== 关闭 hadoop 集群 ==================="

echo " --------------- 关闭 historyserver ---------------"

ssh hadoop102 "/opt/module/hadoop/sbin/mr-jobhistory-daemon.sh stop historyserver"

echo " --------------- 关闭 yarn ---------------"

ssh hadoop103 "/opt/module/hadoop/sbin/stop-yarn.sh"

echo " --------------- 关闭 hdfs ---------------"

ssh hadoop102 "/opt/module/hadoop/sbin/stop-dfs.sh"

;;

*)

echo "Input Args Error..."

;;

esac

保存后退出,然后赋予脚本执行权限

[hadoop@hadoop102 bin]$ chmod +x myhadoop.sh

8.2 查看三台服务器 Java 进程脚本

[hadoop@hadoop102 ~]$ cd /home/hadoop/bin

[hadoop@hadoop102 bin]$ vim jpsall

输入如下内容

#!/bin/bash

for host in hadoop102 hadoop103 hadoop104

do

echo =============== $host ===============

ssh $host jps

done

保存后退出,然后赋予脚本执行权限:

[hadoop@hadoop102 bin]$ chmod +x jpsall

8.3 分发/home/hadoop/bin 目录,保证自定义脚本在三台机器上都可以使用:

# 先确保一下文件所属

[hadoop@hadoop102 ~]$ chown -R hadoop:hadoop bin

# 分发bin目录

[hadoop@hadoop102 ~]$ xsync /home/hadoop/bin/

8.4 测试

[hadoop@hadoop102 ~]$ myhadoop.sh stop

[hadoop@hadoop102 ~]$ jpsall

9,时间同步

​如果服务器在公网环境(能连接外网),可以不采用集群时间同步,因为服务器会定期和公网时间进行校准; ​如果服务器在内网环境,必须要配置集群时间同步,否则时间久了,会产生时间偏差, 导致集群执行任务时间不同步。 因为我没有配置,所以需要配置时间同步的童靴请自行搜索 Hadoop集群时间同步配置。

四、安装ZooKeeper、HBase、MAVEN和IDEA

ZooKeeper完全分布式部署

1,解压安装

1.1 解压 Zookeeper 安装包到/opt/module/目录下

[hadoop@hadoop102 software]$ tar -zxvf zookeeper-3.4.10.tar.gz -C /opt/module/

# 在/opt/module目录下修改ZK文件包名称

[hadoop@hadoop102 software]$ cd /opt/module

[hadoop@hadoop102 module]$ mv zookeeper-3.4.10 zookeeper

[hadoop@hadoop102 module]$ ls

hadoop jdk zookeeper

# 修改其所属为hadoop用户

[hadoop@hadoop102 module]$ sudo chown -R hadoop:hadoop zookeeper

1.2 同步/opt/module/zookeeper 目录内容到 hadoop103、hadoop104

[hadoop@hadoop102 module]$ xsync zookeeper/

2,配置服务器编号

2.1 在/opt/module/zookeeper/这个目录下创建 zkData

[hadoop@hadoop102 zookeeper]$ mkdir zkData

2.2 在/opt/module/zookeeper/zkData 目录下创建一个 myid 的文件

[hadoop@hadoop102 zkData]$ touch myid

添加 myid 文件,注意一定要在 linux 里面创建,在 notepad++里面很可能乱码 2.3 编辑 myid 文件

[hadoop@hadoop102 zkData]$ vim myid

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

2

2.4 拷贝配置好的 zookeeper 到其他机器上

[hadoop@hadoop102 zkData]$ xsync myid

并分别在 hadoop103、hadoop104 上修改 myid 文件中内容为 3、4注意:使用xsync分发文件会使目标服务器上的文件与本服务器文件完全一致。进行Hadoop完全分布式环境搭建的时候,如果分发的目录或文件中包含myid文件,一定记得修改目标服务器上的myid文件,否则可能导致zookeeper无法启动等问题。

3,配置 zoo.cfg 文件

3.1 重命名/opt/module/zookeeper/conf 这个目录下的 zoo_sample.cfg 为 zoo.cfg

[hadoop@hadoop102 conf]$ mv zoo_sample.cfg zoo.cfg

3.2 修改 zoo.cfg 文件

[hadoop@hadoop102 conf]$ vim zoo.cfg

修改数据存储路径配置:

dataDir=/opt/module/zookeeper/zkData

增加如下配置:

cluster

server.2=hadoop102:2888:3888

server.3=hadoop103:2888:3888

server.4=hadoop104:2888:3888

配置参数解读

server.A=B:C:D

A 是一个数字,表示这个是第几号服务器; 集群模式下配置一个文件 myid,这个文件在 dataDir 目录下,这个文件里面有一个数据就是A 的值,Zookeeper 启动时读取此文件,拿到里面的数据与 zoo.cfg 里面的配置信息 较从而判断到底是哪个 server;B 是这个服务器的地址;C 是这个服务器 Follower 与集群中的 Leader 服务器交换信息的端口;D 是万一集群中的 Leader服务器挂了,需要一个端口来重新进行选举,选出一个新的 Leader,而这个端口就是用来执行选举时服务器相互通信的端口。

3.3 同步 zoo.cfg 配置文件

[hadoop@hadoop102 conf]$ xsync zoo.cfg

3.4 删除hadoop103和hadoop104上的多余文件

# hadoop103

[hadoop@hadoop103 conf]$ pwd

/opt/module/zookeeper/conf

[hadoop@hadoop103 conf]$ rm -rf zoo_sample.cfg

# hadoop104

[hadoop@hadoop104 conf]$ rm -rf zoo_sample.cfg

☭问题5:启动ZooKeeper报错 mkdir: 无法创建目录".": 权限不够 ?

注意:ZK有启动成功,只是在启动时返回这样一条报错信息,那么只需要把集群中的zoo_sample.cfg文件删除即可。

☭问题6:Zookeeper启动显示成功,zkServer.sh status报错?

附:Zookeeper启动显示成功,zkServer.sh status报错补充一条:重新查看集群中各服务器的myid文件中的编号,是否与在zoo.cfg文件配置的服务器编号一致。

4,集群操作

4.1 将ZooKeeper目录所在路径添加到环境变量,方便全局调用命令

[hadoop@hadoop102 conf]$ sudo vim /etc/profile.d/my_env.sh

[hadoop@hadoop102 conf]$ source /etc/profile

添加以下内容:

#ZOOKEEPER_HOME

export ZOOKEEPER_HOME=/opt/module/zookeeper

export PATH=$PATH:$ZOOKEEPER_HOME/bin

export PATH=$PATH:$ZOOKEEPER_HOME/sbin

4.2 编写ZooKeeper启动脚本 注意:集群中全部服务器上的Zookeeper均启动成功,才能正常运行

[hadoop@hadoop102 conf]$ cd /home/hadoop/bin

[hadoop@hadoop102 bin]$ vim myzk.sh

编写myzk.sh脚本内容

#!/bin/bash

if [ $# -lt 1 ]

then

echo "No Args Input..."

exit ;

fi

case $1 in

"start")

echo " =================== 启动 zookeeper ==================="

echo " --------------- hadoop102 ---------------"

ssh hadoop102 "/opt/module/zookeeper/bin/zkServer.sh start"

echo " --------------- hadoop103 ---------------"

ssh hadoop103 "/opt/module/zookeeper/bin/zkServer.sh start"

echo " --------------- hadoop104 ---------------"

ssh hadoop104 "/opt/module/zookeeper/bin/zkServer.sh start"

;;

"stop")

echo " =================== 关闭 zookeeper ==================="

echo " --------------- hadoop104 ---------------"

ssh hadoop104 "/opt/module/zookeeper/bin/zkServer.sh stop"

echo " --------------- hadoop103 ---------------"

ssh hadoop103 "/opt/module/zookeeper/bin/zkServer.sh stop"

echo " --------------- hadoop102 ---------------"

ssh hadoop102 "/opt/module/zookeeper/bin/zkServer.sh stop"

;;

*)

echo "Input Args Error..."

;;

esac

保存后退出,然后赋予脚本执行权限

[hadoop@hadoop102 bin]$ chmod +x myzk.sh

4.3 分发/home/hadoop/bin 目录,保证自定义脚本在三台机器上都可以使用

# 进入bin的上级目录/home/hadoop

[hadoop@hadoop102 bin]$ cd ..

# 先确保一下文件所属

[hadoop@hadoop102 ~]$ chown -R hadoop:hadoop bin

# 分发bin目录

[hadoop@hadoop102 ~]$ xsync bin/

4.4 运行ZooKeeper

[hadoop@hadoop102 ~]$ myzk.sh start

4.5 查看状态

[hadoop@hadoop102 zookeeper]$ zkServer.sh status

[hadoop@hadoop103 zookeeper]$ zkServer.sh status

[hadoop@hadoop104 zookeeper]$ zkServer.sh status

HBase安装

1,Zookeeper 正常部署

首先保证 Zookeeper 集群的正常部署,并启动之

# 启动过就不要再启动了

[hadoop@hadoop102 zookeeper]$ myzk.sh start

2,Hadoop 正常部署

Hadoop 集群的正常部署并启动

[hadoop@hadoop102 hadoop]$ myhadoop.sh start

3,HBase 的解压

3.1 解压 HBase 到指定目录

[hadoop@hadoop102 software]$ tar -zxvf hbase-1.2.0-cdh5.14.0.tar.gz -C /opt/module

3.2 修改文件包名称和所属

[hadoop@hadoop102 module]$ mv hbase* hbase

[hadoop@hadoop102 module]$ sudo chown -R hadoop:hadoop hbase

# 进入conf目录,之后需修改配置文件

[hadoop@hadoop102 module]$ cd hbase/conf

[hadoop@hadoop102 conf]$

4,HBase 的配置文件

4.1 修改 hbase-env.sh

修改内容如下:分别在27和128行左右

export JAVA_HOME=/opt/module/jdk

export HBASE_MANAGES_ZK=false

☭问题7:HBase启动警告:Java HotSpot™ 64-Bit Server VM warning

警告内容: Java HotSpot™ 64-Bit Server VM warning: ignoring option PermSize=128m; support was removed in 8.0 Java HotSpot™ 64-Bit Server VM warning: ignoring option MaxPermSize=128m; support was removed in 8.0 解决方案: hbase-env.sh文件中45行左右有注释说明下面两个export在JDK8+版本可以被安全地移除,注释掉即可

4.2 hbase-site.xml 修改内容

hbase.rootdir

hdfs://hadoop102:8020/hbase

hbase.cluster.distributed

true

hbase.master.port

16000

hbase.zookeeper.quorum

hadoop102:2181,hadoop103:2181,hadoop104:2181

hbase.zookeeper.property.dataDir

/opt/module/zookeeper/zkData

4.3 regionservers文件内容如下:原内容删去

regionservers文件列出了所有运行HRegionServer进程服务器,对该文件的配置与Hadoop中对slaves或者workers文件的配置相似,需要在文件的每一行指定一台服务器,当HBASE启动时会读取该文件,将文件指定的所有服务器启动HRegionServer进程,当HBASE停止的时候,也会同时停止他们。 因此,在启动hbase后,主服务器hadoop102将启动两个节点HMaster和HRegionServer,其余各服务器启动一个节点HRegionServer。

hadoop102

hadoop103

hadoop104

4.4 软连接 hadoop 配置文件到 hbase:

[hadoop@hadoop102 module]$ ln -s /opt/module/hadoop/etc/hadoop/core-site.xml /opt/module/hbase/conf/core-site.xml

[hadoop@hadoop102 module]$ ln -s /opt/module/hadoop/etc/hadoop/hdfs-site.xml /opt/module/hbase/conf/hdfs-site.xml

5,HBase 远程发送到其他集群

[hadoop@hadoop102 module]$ xsync hbase/

6,HBase 服务的启动

6.1 添加环境变量

[hadoop@hadoop102 module]$ sudo vim /etc/profile.d/my_env.sh

[hadoop@hadoop102 module]$ source /etc/profile

添加内容如下

#HBASE_HOME

export HBASE_HOME=/opt/module/hbase

export PATH=$PATH:$HBASE_HOME/bin

6.2 分发环境变量文件

[hadoop@hadoop102 module]$ sudo /home/hadoop/bin/xsync /etc/profile.d/my_env.sh

# 使文件在各服务器上生效

[hadoop@hadoop103 module]$ source /etc/profile

[hadoop@hadoop104 module]$ source /etc/profile

6.3 测试

[hadoop@hadoop102 module]$ start-hbase.sh

[hadoop@hadoop102 module]$ jpsall

[hadoop@hadoop102 module]$ hbase shell

☭问题8:HBase启动报错 错误:找不到或无法加载主类 org.jruby.Main

这里提供一个特别zz的解决方案: 我在后续把IDEA的目录添加到环境变量中时,因为错把$IDEA_HOME写成$HBASE_HOME(复制粘贴的锅),导致环境变量中$HBASE_HOME被IDEA的目录所覆盖,因此出现如上报错。 所以可以先仔细检查环境变量文件,我当时就是没有全部看一遍,导致困扰许久。

6.4 关闭集群顺序

[hadoop@hadoop102 module]$ stop-hbase.sh

[hadoop@hadoop102 module]$ myhadoop.sh stop

[hadoop@hadoop102 module]$ myzk.sh stop

# 查看各服务器上的进程,正常关闭后,各服务器上均只剩下一个进程jps

[hadoop@hadoop102 module]$ jpsall

安装MAVEN & IDEA

1,解压安装

# 解压安装

MAVEN

[hadoop@hadoop102 software]$ tar -zxvf apache-maven-3.6.3-bin.tar.gz -C /opt/module

IDEA

[hadoop@hadoop102 software]$ tar -zxvf ideaIU-2017.2.7.tar.gz -C /opt/module

# 修改目录名和所属

[hadoop@hadoop102 module]$ mv apache* maven

[hadoop@hadoop102 module]$ mv idea* idea

[hadoop@hadoop102 module]$ sudo chown -R hadoop:hadoop maven idea

[hadoop@hadoop102 module]$ ll

2,设置环境变量

[hadoop@hadoop102 module]$ sudo vim /etc/profile.d/my_env.sh

[hadoop@hadoop102 module]$ source /etc/profile

添加下列内容

#MAVEN_HOME

export MAVEN_HOME=/opt/module/maven

export PATH=$PATH:$MAVEN_HOME/bin

#IDEA_HOME

export IDEA_HOME=/opt/module/idea

export PATH=$PATH:$IDEA_HOME/bin

3,测试 MAVEN

# 输入名令 mvn -v 可以查看版本号

[hadoop@hadoop102 module]$ mvn -v

4,修改MAVEN配置文件,使用阿里的镜像地址

[hadoop@hadoop102 conf]$ pwd

/opt/module/maven/conf

[hadoop@hadoop102 conf]$ vim settings.xml

找到mirrors标签,插入

id=alimaven

name=aliyun maven

url=http://maven.aliyun.com/nexus/content/groups/public/

mirrorOf=central

修改前: 修改后:

5,运行IDEA

[hadoop@hadoop102 conf]$ idea.sh

参考资料

教程相关 【1】尚硅谷大数据技术之 Hadoop(入门) 【2】hadoop3.x集群:配置、启动历史服务(history server,端口19888) 【3】【尚硅谷】大数据全套教程下载 【4】centos7安装IDEA配置Maven 【5】如何重新格式化Hadoop文件系统 【6】同一个局域网内如何共享文件夹(含共享打印机操作方法) 【7】在本地用idea连接虚拟机上的hbase集群

报错相关 【1】Hbase启动警告 【2】linux 终端启动图形化程序界面时报错:No protocol specified 【3】stop-hbase.sh一直处于等待状态

知识相关 【1】【hadoop 的坑】hadoop的配置文件slaves/workers 【2】Hadoop配置文件详解 【3】Zookeeper学习笔记 【4】Hbase的集群模式安装配置(笔记) 【5】maven-porm.xml详解 【6】hadoop3.x——历史服务器 【7】UUID详细介绍

实战项目 【1】HBase快速入门系列 (九)| HBase 的实战案例(微博)

资源分享

链接:https://bianchenghao.cn/s/1YnO6NQYrU4gGgx1kEVy1jA 提取码:MNZX

以上过程希望对你有所帮助!

欢迎评论区交流指教!

精彩文章

  

大家都在找:

hadoop:hadoop安装包下载

分布式:分布式光伏项目邀请招标

大数据:大数据技术专业学什么

hbase:hbase安装与配置详解

zookeeper:zookeeper官网


今天的文章 查看yarn进程(查看yarn log)分享到此就结束了,感谢您的阅读。

编程小号
上一篇 2025-11-24 19:46
下一篇 2025-04-22 14:46

相关推荐

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
如需转载请保留出处:https://bianchenghao.cn/bian-cheng-ri-ji/22730.html