Hadoop系列(二):完全分布式搭建(腾讯云服务器+阿里云服务器)

您所在的位置:网站首页 云服务器搭建hadoop,内网外网问题 Hadoop系列(二):完全分布式搭建(腾讯云服务器+阿里云服务器)

Hadoop系列(二):完全分布式搭建(腾讯云服务器+阿里云服务器)

2023-03-31 20:15| 来源: 网络整理| 查看: 265

文章目录 Hadoop系列文章 Hive系列文章 一. 集群简介 二. 集群部署方式 2.1 Standalone mode(独立模式) 2.2 Pseudo-Distributed mode(伪分布式模式) 2.3 Cluster mode(群集模式)-单节点模式-高可用HA模式 三. 集群环境准备 3.1 服务器信息如下: 3.2 集群规划如下: 3.3 主机hosts文件配置(重要) 四. 用户创建及防火墙设置 4.1 创建hadoop用户 4.2 防火墙设置 五. SSH免密登录设置 5.1 ssh密钥生成 5.2 写入公钥 5.3 赋权 5.4 交换公钥 5.5 将hosts信息写入known_hosts 5.6 成功测试 六. Java环境配置 6.1 下载jdk1.8 6.2 配置jdk环境变量 6.3 验证 七. Hadoop安装及配置 7.1 hadoop下载 7.2 配置hadoop环境变量 7.3 Hadoop配置文件修改 八. 数据文件目录创建及文件分发 8.1 目录创建 8.2 文件分发 8.3 配置slave1环境变量 九. 启动集群 9.1 格式化namenode 9.2 一键启动 9.3 脚本一键启动 9.4 停止集群 9.5 日志分析 十. 集群页面访问 10.1 IP访问 10.2 主机名访问 十一. Hadoop使用体验 11.1 HDFS文件目录 11.2 运行mapreduce程序 十二. 注意事项总结

Hadoop系列文章

Hadoop系列 (一):在CentOS中搭建hadoop环境(伪分布式)

Hadoop系列 (二):完全分布式搭建(腾讯云服务器+阿里云服务器)

Hadoop系列 (三):HDFS详细介绍

Hadoop系列 (四):Yarn详细介绍

Hadoop系列 (五):MapReduce详细介绍

Hadoop系列 (六):Spark搭建

Hadoop系列 (七):ZooKeeper详细介绍

Hive系列文章

Hive系列 (一):Hive搭建

Hive系列 (二):Hive基础知识

Hive系列 (三):开窗函数详解

Hive系列 (四):自定义函数UDF UDTF UDAF

Hive系列 (五):Hive数据类型

Hive系列 (六):Hive数据类型转换

Hive系列 (七):Hive常用函数

Hive系列 (八):Hive中的explode 与 lateral view

Hive系列 (九):Hive数据存储

Hive系列 (十):Hive调优

一. 集群简介 HADOOP集群具体来说包含两个集群:HDFS集群和YARN集群,两者逻辑上分离,但物理上常在一起。 HDFS集群负责海量数据的存储,集群中的角色主要有:NameNode、DataNode、SecondaryNameNode YARN集群负责海量数据运算时的资源调度,集群中的角色主要有:ResourceManager、NodeManager mapreduce是一个分布式运算编程框架,是应用程序开发包,由用户按照编程规范进行程序开发,后打包运行在HDFS集群上,并且受到YARN集群的资源调度管理。 二. 集群部署方式 2.1 Standalone mode(独立模式)

​ 独立模式又称为单机模式,仅1个机器运行1个java进程,主要用于调试。

2.2 Pseudo-Distributed mode(伪分布式模式)

​ 伪分布模式也是在1个机器上运行HDFS的NameNode和DataNode、YARN的ResourceManger和NodeManager,但分别启动单独的java进程,主要用于调试。

2.3 Cluster mode(群集模式)-单节点模式-高可用HA模式

​ 集群模式主要用于生产环境部署。会使用N台主机组成一个Hadoop集群。这种部署模式下,主节点和从节点会分开部署在不同的机器上。

三. 集群环境准备

​ 集群模式主要用于生产环境部署,需要多台主机,并且这些主机之间可以相互访问,现在使用腾讯云服务器和阿里云服务器2台主机为例进行搭建进行搭建。

3.1 服务器信息如下:

​ 腾讯云服务器(master):2核4G,CentOS 8.3

​ 阿里云服务器(slave1):1核2G, CentOS 8.2

3.2 集群规划如下: 主机组件 master(外网ip:101.36.9.202 内网IP:10.0.8.33) slave1(外网IP:39.136.77.212 内网IP:172.12.227.201) NameNode √ × Secondary Namenode × √ DataNode √ √ ResourceManager √ × NodeManager √ √ 3.3 主机hosts文件配置(重要)

在腾讯云服务器上做如下操作:

调整服务器主机名为master:

[root@V_TENS_EOS ~]# hostnamectl set-hostname master

修改hosts文件 vim /etc/hosts

# 注释掉127.0.0.1 和 ::1 的ipv6地址 # 127.0.0.1 master master 127.0.0.1 localhost.localdomain localhost 127.0.0.1 localhost4.localdomain4 localhost4 #::1 master master ::1 localhost.localdomain localhost ::1 localhost6.localdomain6 localhost6 #新增,这里很重要,内外网地址,弄了很久才搞明白要这样配置,不然无法形成主机回路,会出现slave1无法访问master某些端口,或者本地浏览器无法访问master端口 10.0.8.33 master #master 内网地址 39.136.77.212 slave1 # slave1 外网地址

同样调整slave1节点配置:

[root@V_MNSTE ~]# hostnamectl set-hostname slave1

修改hosts文件 vim /etc/hosts

#注释掉127.0.0.1 和::1 ipv6地址 #::1 localhost localhost.localdomain localhost6 localhost6.localdomain6 #127.0.0.1 localhost localhost #新增 101.36.9.202 master #master 外网地址 172.12.227.201 slave1 # slave1 内网地址

保存,断开,重新连接,查看主机名生效

#master [root@master ~]# cd #slave1 [root@slave1 ~]# cd 四. 用户创建及防火墙设置 4.1 创建hadoop用户

在master和slave1上均执行以下操作

# 新增用户 [root@master ~]# useradd hadoop # 设置密码 [root@master ~]# passwd hadoop

编辑 sudo vim /etc/sudoers 给hadoop用户赋予sudo权限:

## Allow root to run any commands anywhere root ALL=(ALL) ALL #在root这行下面新增 hadoop ALL=(ALL) ALL

保存,退出,切换hadoop用户登录。

4.2 防火墙设置

云服务平台自带防火墙设置,我再这里没有设置centos8系统防火墙。

以下是我的腾讯云服务器(master)防火墙设置,slave1同样设置 云服务器防火墙设置

五. SSH免密登录设置

注意:从本步骤开始,后面所有操作均使用hadoop用户

5.1 ssh密钥生成

分别在master 和 slave1 两台机器的用户目录下生成公钥和私钥,提示输入可以直接回车

#master 机器: [hadoop@master ~]$ ssh-keygen -t rsa Generating public/private rsa key pair. Enter file in which to save the key (/home/hadoop/.ssh/id_rsa): Created directory '/home/hadoop/.ssh'. Enter passphrase (empty for no passphrase): Enter same passphrase again: Your identification has been saved in /home/hadoop/.ssh/id_rsa. Your public key has been saved in /home/hadoop/.ssh/id_rsa.pub. The key fingerprint is: SHA256:HfIkWBAJNCHFKLWuYJW/jWbSMRx2GdfSfV/vnVOL+DI hadoop@master The key's randomart image is: +---[RSA 2048]----+ | .o=*oo=..o . | |. .oo..o+. o . ..| | ..o o.oo + . +| | .. + o * . +| |... = S o . ..=| |o. . * . . +o| |. . * . . .| | + E . | | o | +----[SHA256]-----+ [hadoop@master ~]$ cd .ssh [hadoop@master .ssh]$ ll total 8 -rw------- 1 hadoop root 1675 Jun 24 16:14 id_rsa -rw-r--r-- 1 hadoop root 395 Jun 24 16:14 id_rsa.pub #slave1机器 [hadoop@slave1 ~]$ ssh-keygen -t rsa Generating public/private rsa key pair. Enter file in which to save the key (/home/hadoop/.ssh/id_rsa): Created directory '/home/hadoop/.ssh'. Enter passphrase (empty for no passphrase): Enter same passphrase again: Your identification has been saved in /home/hadoop/.ssh/id_rsa. Your public key has been saved in /home/hadoop/.ssh/id_rsa.pub. The key fingerprint is: SHA256:uqQhC77i1TU/XOU8fB8fxboS3tCllIKNdL/NuGxyfRc hadoop@slave1 The key's randomart image is: +---[RSA 3072]----+ | . . | | . = . o | | o o.+ +| | =+ O.| | oS .o=*Eo| | . ..+ .. =o+*| |. ....o + + B *| |o..o + . . = o| |o+o . . | +----[SHA256]-----+ [hadoop@slave1 .ssh]$ ll total 8 -rw------- 1 hadoop hadoop 2602 Jun 24 16:15 id_rsa -rw-r--r-- 1 hadoop hadoop 567 Jun 24 16:15 id_rsa.pub 5.2 写入公钥 # master上执行 [hadoop@slave1 .ssh]$ cat id_rsa.pub >> authorized_keys # 在slave1上执行 [hadoop@master .ssh]$ cat id_rsa.pub >> authorized_keys 5.3 赋权 # 在master上执行 [hadoop@master ~]$ chmod 700 .ssh [hadoop@master ~]$ chmod 600 .ssh/authorized_keys #在slave1上执行 [hadoop@slave1 ~]$ chmod 700 .ssh [hadoop@slave1 ~]$ chmod 600 .ssh/authorized_keys 5.4 交换公钥

执行下面命令,两台机器上生成的公钥,相互发送到对方机器,完成公钥复制。

# 在master上执行 [hadoop@master ~]$ ssh-copy-id hadoop@slave1 # 在slave1上执行 [hadoop@slave1 ~]$ ssh-copy-id hadoop@master

成功提示如下: 在这里插入图片描述

5.5 将hosts信息写入known_hosts

在master和slave1上分别执行:

[hadoop@master ~]$ ssh master [hadoop@master ~]$ ssh slave1 [hadoop@master ~]$ ssh localhost

执行成功后,可以在known_hosts中看到master和slave1的host信息。

5.6 成功测试 [hadoop@master ~]$ ssh slave1 Welcome to Alibaba Cloud Elastic Compute Service ! Activate the web console with: systemctl enable --now cockpit.socket Last login: Thu Jul 15 08:33:17 2021 from 58.240.165.51 [hadoop@slave1 ~]$ #不需要输入密码,可以直接到slave1 六. Java环境配置

在master和slave1两台主机上均进行以下配置

6.1 下载jdk1.8

oracle网站下载需要验证,没有直接使用wget下载,我是下载到本地后,通过xftp上传到master服务器上。使用的版本为 jdk-8u291-linux-x64.tar.gz。

解压后,移动到 /usr/local/java/jdk1.8.0_291。

至于java目录,个人习惯放在local下面,建一个java文件夹,下面可以方不同版本的jdk,不用应用或程序只需要在profile文件中配置要使用的jdk版本路径即可。

[hadoop@master java]$ pwd /usr/local/java [hadoop@master java]$ ll total 4 drwxr-xr-x 8 root root 4096 Apr 8 03:26 jdk1.8.0_291 [hadoop@master java]$ 6.2 配置jdk环境变量

编辑 .bash_profile 文件,在文件底部新增以下内容

#java environment export JAVA_HOME=/usr/local/java/jdk1.8.0_291 export PATH=$PATH:$JAVA_HOME/bin

根据个人情况,也可以放入全局配置文件 /etc/profile。

保存文件,使生效

[hadoop@master ~]$ source .bash_profile 6.3 验证 [hadoop@master ~]$ echo $JAVA_HOME /usr/local/java/jdk1.8.0_291 [hadoop@master ~]$ java -version java version "1.8.0_291" Java(TM) SE Runtime Environment (build 1.8.0_291-b10) Java HotSpot(TM) 64-Bit Server VM (build 25.291-b10, mixed mode) [hadoop@master ~]$ 七. Hadoop安装及配置

Hadoop安装主要就是配置文件的修改,一般在主节点进行修改,完毕后scp下发给其他各个从节点机器。

注意,以下所有操作都在master主机进行

7.1 hadoop下载

本文使用的hadoop版本为hadoop3.3.1

[hadoop@master software]$ pwd /home/hadoop/software [hadoop@mastersoftware]$ wget https://mirrors.bfsu.edu.cn/apache/hadoop/common/hadoop-3.3.1/hadoop-3.3.1.tar.gz [hadoop@master software]$ ll total 1004832 -rw-rw-r-- 1 hadoop hadoop 278813748 Jul 3 2020 apache-hive-3.1.2-bin.tar.gz -rw-rw-r-- 1 hadoop hadoop 605187279 Jun 15 17:55 hadoop-3.3.1.tar.gz -rw-rw-r-- 1 hadoop hadoop 144935989 Jul 12 13:18 jdk-8u291-linux-x64.tar.gz

解压并移动到 /opt/ 目录下

[hadoop@master software]$ tar -zxvf hadoop-3.3.1.tar.gz [hadoop@master software]$ mv hadoop-3.3.1 hadoop [hadoop@master software]$ mv hadoop /opt/hadoop [hadoop@master software]$ cd /opt/ [hadoop@master opt]$ ll total 593436 drwxr-xr-x 13 hadoop hadoop 4096 Jul 14 16:19 hadoop drwxrwxr-x 13 hadoop hadoop 4096 Jul 13 11:10 hive 7.2 配置hadoop环境变量

编辑文件 .bash_profile

#set hadoop environment export HADOOP_HOME=/opt/hadoop export HADOOP_HDFS_HOME=$HADOOP_HOME export HADOOP_YARN_HOME=$HADOOP_HOME export HADOOP_CONF_DIR=$HADOOP_HOME/etc/hadoop export PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin export HDFS_DATANODE_USER=hadoop export HDFS_DATANODE_SECURE_USER=hadoop export HDFS_NAMENODE_USER=hadoop export HDFS_SECONDARYNAMENODE_USER=hadoop

保存,使生效

[hadoop@master ~]$ source .bash_profile

验证

[hadoop@master ~]$ hadoop version # 显示hadoop版本信息及来源 Hadoop 3.3.1 Source code repository https://github.com/apache/hadoop.git -r a3b9c37a397ad4188041dd80621bdeefc46885f2 Compiled by ubuntu on 2021-06-15T05:13Z Compiled with protoc 3.7.1 From source with checksum 88a4ddb2299aca054416d6b7f81ca55 This command was run using /opt/hadoop/share/hadoop/common/hadoop-common-3.3.1.jar [hadoop@master ~]$ 7.3 Hadoop配置文件修改

hadoop-env.sh

hadoop-env.sh文件中设置的是Hadoop运行时需要的环境变量。JAVA_HOME是必须设置的,即使我们当前的系统中设置了JAVA_HOME,它也是不认识的,因为Hadoop即使是在本机上执行,它也是把当前的执行环境当成远程服务器。

在这里添加配置:

[hadoop@master ~]$ cd /opt/hadoop/etc/hadoop/ [hadoop@master hadoop]$ vim hadoop-env.sh

添加以下内容

#java env export JAVA_HOME=/usr/local/java/jdk1.8.0_291 export PATH=$PATH:$JAVA_HOME/bin

core-site.xml

hadoop的核心配置文件。集群全局参数,用于定义系统级别的参数,如HDFS URL、Hadoop的临时目录等。

在这里添加配置:

[hadoop@master ~]$ cd /opt/hadoop/etc/hadoop/ [hadoop@master hadoop]$ vim core-site.xml

配置内容如下:

fs.default.name hdfs://master:9000/ hadoop.tmp.dir /opt/hadoop/hadoopDatas/tempDatas

hdfs-site.xml

HDFS的核心配置文件,主要配置HDFS相关参数,如名称节点和数据节点的存放位置、文件

副本的个数、文件读取权限等。

在这里添加配置:

[hadoop@master ~]$ cd /opt/hadoop/etc/hadoop/ [hadoop@master hadoop]$ vim hdfs-site.xml

配置内容如下:

dfs.namenode.http-address master:9870 dfs.datanode.data.dir /opt/hadoop/hadoopDatas/datanodeDatas true dfs.namenode.dir /opt/hadoop/hadoopDatas/namenodeDatas ture dfs.namenode.secondary.http-address slave1:9868 dfs.namenode.edits.dir /opt/hadoop/dfs/hadoopDatas/nn/edits dfs.namenode.checkpoint.dir /opt/hadoop/hadoopDatas/snn/name dfs.namenode.checkpoint.edits.dir /opt/hadoop/hadoopDatas/dfs/snn/edits dfs.replication 1 dfs.permissions false dfs.hosts /opt/hadoop/etc/hadoop/workers dfs.client.use.datanode.hostname true Whether clients should use datanode hostnames when connecting to datanodes.

mapred-site.xml

MapReduce的核心配置文件,包括JobHistory Server和应用程序参数两部分,如reduce任务的默认个数、任务所能够使用内存的默认上下限等。

在这里添加配置:

[hadoop@master ~]$ cd /opt/hadoop/etc/hadoop/ [hadoop@master hadoop]$ vim mapred-env.sh

配置内容如下:

mapreduce.framework.name yarn mapreduce.job.ubertask.enable true mapreduce.jobhistory.address master:10020 mapreduce.jobhistory.webapp.address master:19888 yarn.app.mapreduce.am.env HADOOP_MAPRED_HOME=/opt/hadoop mapreduce.map.env HADOOP_MAPRED_HOME=/opt/hadoop mapreduce.reduce.env HADOOP_MAPRED_HOME=/opt/hadoop

mapred-env.sh

在该文件中需要指定JAVA_HOME。

在此处添加配置:

[hadoop@master ~]$ cd /opt/hadoop/etc/hadoop/ [hadoop@master hadoop]$ vim mapred-env.sh

配置内容如下:

#java env export JAVA_HOME=/usr/local/java/jdk1.8.0_291 export PATH=$PATH:$JAVA_HOME/bin

yarn-site.xml

集群资源管理系统参数,配置 ResourceManager,NodeManager 的通信端口,web监控端口等。

在此处添加配置:

[hadoop@master ~]$ cd /opt/hadoop/etc/hadoop/ [hadoop@master hadoop]$ vim yarn-site.xml

配置内容如下:

yarn.resourcemanager.hostname master yarn.nodemanager.aux-services mapreduce_shuffle yarn.nodemanager.aux-services.mapreduce_shuffle.class org.apache.hadoop.mapred.ShuffleHandler yarn.resourcemanager.address master:8032 yarn.resoucemanager.scheduler.address master:8030 yarm.resourcemanager.resource-tracker.address master:8031 yarn.resourcemanager.admin.address master:8033 yarn.resourcemanager.webapp.address master:8088 yarn.nodemanager.resource.memory-mb 4096

workers

hadoop3.0以后slaves更名为workers

文件里面记录的是集群主机名。一般有以下两种作用:

一是配合一键启动脚本如start-dfs.sh、stop-yarn.sh用来进行集群启动。这时候workers文件里面的主机标记的就是从节点角色所在的机器。

二是可以配合hdfs-site.xml里面dfs.hosts属性形成一种白名单机制。本文中未配置该文件。

dfs.hosts指定一个文件,其中包含允许连接到NameNode的主机列表。必须指定文件的完整路径名,那么所有在workers中的主机才可以加入的集群中。如果值为空,则允许所有主机。

在此处添加配置:

[hadoop@master ~]$ cd /opt/hadoop/etc/hadoop/ [hadoop@master hadoop]$ vim workers

配置内容如下:

master slave1 八. 数据文件目录创建及文件分发 8.1 目录创建

在master上操作

# Hadoop存储数据目录 [hadoop@master ~]$ mkdir -p /opt/hadoop/hadoopDatas/tempDatas # 指定namenode元数据存放位置 [hadoop@master ~]$ mkdir -p /opt/hadoop/hadoopDatas/namenodeDatas # 指定datanode数节点位置 [hadoop@master ~]$ mkdir -p /opt/hadoop/hadoopDatas/datanodeDatas # 指定namenode的edits文件的存放位置 [hadoop@master ~]$ mkdir -p /opt/hadoop/hadoopDatas/nn/edits # 检查点目录 [hadoop@master ~]$ mkdir -p /opt/hadoop/hadoopDatas/snn/name [hadoop@master ~]$ mkdir -p /opt/hadoop/hadoopDatas/dfs/snn/edits 8.2 文件分发

将配置好的Hadoop目录分发到slave1上。

[hadoop@master ~]$ srp -r /opt/hadoop/ hadoop@slave1:/opt/

上面速度会有点慢,可以将整个hadoop打包后发到slave1

[hadoop@master ~]$ cd /opt [hadoop@master ~]$ tar -zcvf hadoop.tar.gz hadoop [hadoop@master ~]$ srp -r /opt/hadoop.tar.gz hadoop@slave1:/opt/ 8.3 配置slave1环境变量

在hadoop用户目录下,修改 .bash_profile 文件,添加以下内容:

#java env export JAVA_HOME=/usr/local/java/jdk1.8.0_291 export PATH=$PATH:$JAVA_HOME/bin #set hadoop environment export HADOOP_HOME=/opt/hadoop export HADOOP_HDFS_HOME=$HADOOP_HOME export HADOOP_YARN_HOME=$HADOOP_HOME export HADOOP_CONF_DIR=$HADOOP_HOME/etc/hadoop export PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin export HDFS_DATANODE_USER=hadoop export HDFS_DATANODE_SECURE_USER=hadoop export HDFS_NAMENODE_USER=hadoop export HDFS_SECONDARYNAMENODE_USER=hadoop

保存,使生效

[hadoop@slave1 ~]$ source .bash_profile 九. 启动集群 9.1 格式化namenode

要启动Hadoop集群,需要启动HDFS和YARN两个集群。

首次启动HDFS时,必须对其进行格式化操作。本质上是一些清理和准备工作,因为此时的HDFS在物理上还是不存在的。

格式化namenode,在master上执行格式化指令

[hadoop@master ~]$ hadoop namenode -format 9.2 一键启动

启动hdfs和yarn,可以直接执行 start-all.sh

[hadoop@master ~]$ start-all.sh WARNING: Attempting to start all Apache Hadoop daemons as hadoop in 10 seconds. WARNING: This is not a recommended production deployment configuration. WARNING: Use CTRL-C to abort. Starting namenodes on [master] Starting datanodes Starting secondary namenodes [slave1] Starting resourcemanager Starting nodemanagers #查看java相关进程 [hadoop@master ~]$ jps 633017 ResourceManager 632511 NameNode 634656 Jps 632674 DataNode 633157 NodeManager [hadoop@master ~]$

启动历史进程服务

[hadoop@master ~]$ mr-jobhistory-daemon.sh start historyserver WARNING: Use of this script to start the MR JobHistory daemon is deprecated. WARNING: Attempting to execute replacement "mapred --daemon start" instead. #查看java相关进程,会多出一个JobHistoryServer进程 [hadoop@master ~]$ jps 633017 ResourceManager 632511 NameNode 637329 Jps 635010 JobHistoryServer 632674 DataNode 633157 NodeManager [hadoop@master ~]$

在slave1上jps进程

[hadoop@slave1 ~]$ jps 12792 SecondaryNameNode 12893 NodeManager 12686 DataNode 13103 Jps [hadoop@slave1 ~]$ 9.3 脚本一键启动

启动HDFS

[hadoop@master ~]$ start-dfs.sh

启动Yarn

[hadoop@master ~]$ start-yarn.sh

启动历史任务服务进程

[hadoop@master ~]$ mr-jobhistory-daemon.sh start historyserver 9.4 停止集群

stop-dfs.sh

stop-yarn.sh

mr-jobhistory-daemon.sh stophistoryserver

或者

stop-all.sh

mr-jobhistory-daemon.sh stophistoryserver

9.5 日志分析

如果在启动之后,有些服务没有启动成功,则需要查看启动日志,Hadoop的启动日志在每台主机的/opt/hadoop/logs/目录,需要根据哪台主机的哪个服务启动情况去对应的主机上查看相应的日志,以下是master主机的日志目录

[hadoop@master ~]$ cd /opt/hadoop/logs [hadoop@master logs]$ ll

在这里插入图片描述

十. 集群页面访问 10.1 IP访问

一旦Hadoop集群启动并运行,可以通过web-ui进行集群查看,如下所述:

查看NameNode页面地址:

http://101.36.9.202:9870

在这里插入图片描述

在本页面中的Summary中可以看到 Live Nodes 信息

在这里插入图片描述

查看Yarn集群页面地址:

http://101.36.9.202:8088

在这里插入图片描述

查看MapReduce历史任务页面地址:

http://101.36.9.202:19888

在这里插入图片描述

10.2 主机名访问

在本地windows中配置hosts映射:

打开Windows的C:\Windows\System32\drivers\etc目录下hosts文件

在hosts文件中添加以下域名映射

101.36.9.202 master 39.136.77.212 slave1

配置完之后,可以将以上地址中的IP替换为主机名即可访问,如果还不能访问,则需要重启Windows电脑,比如访问NameNode,可以使用http://master:9870

十一. Hadoop使用体验 11.1 HDFS文件目录

HDFS文件系统的根目录是 /

[hadoop@master ~]$ hdfs dfs -ls / Found 1 items drwxrwx--- - hadoop supergroup 0 2021-07-16 10:54 /tmp

**/tmp **用于hadoop操作的临时存储。

用户主目录是/user/[hadoop用户名],一般在HDFS文件系统创建文件或文件夹时,若直接hadoop fs -mkdir [文件夹名],那么创建的目录在用户目录/user下,若想建立在其他地方,必须要写完整路径。

[hadoop@master ~]$ hadoop fs -mkdir hadoop_test mkdir: `hdfs://master:9000/user/hadoop': No such file or directory

先创建 用户主目录

[hadoop@master ~]$ hadoop fs -mkdir -p /user/hadoop

递归查看

[hadoop@master ~]$ hadoop fs -ls -R / drwxrwx--- - hadoop supergroup 0 2021-07-16 10:54 /tmp drwxrwx--- - hadoop supergroup 0 2021-07-16 10:54 /tmp/hadoop-yarn drwxrwx--- - hadoop supergroup 0 2021-07-16 10:54 /tmp/hadoop-yarn/staging drwxrwx--- - hadoop supergroup 0 2021-07-16 10:54 /tmp/hadoop-yarn/staging/history drwxrwx--- - hadoop supergroup 0 2021-07-16 10:54 /tmp/hadoop-yarn/staging/history/done drwxrwxrwt - hadoop supergroup 0 2021-07-16 10:54 /tmp/hadoop-yarn/staging/history/done_intermediate drwxr-xr-x - hadoop supergroup 0 2021-07-16 15:20 /user drwxr-xr-x - hadoop supergroup 0 2021-07-16 15:20 /user/hadoop

在web-ui上查看目录信息

在这里插入图片描述

在这里插入图片描述

11.2 运行mapreduce程序

创建测试文件

[hadoop@master hadoopDatas]$ touch test.input [hadoop@master hadoopDatas]$ vim test.input

在test.input中添加内容

just a test! hadoop mapreduce hive hbase spark storm sqoop hadoop spark

上传到hdfs

[hadoop@master hadoopDatas]$ hdfs dfs -put test.input # 不指定文件上传路径,默认在/usr/hadoop用户目录下

查看上传文件

[hadoop@master hadoopDatas]$ hadoop fs -ls /user/hadoop Found 1 items -rw-r--r-- 1 hadoop supergroup 72 2021-07-16 16:03 /user/hadoop/test.input

在web-ui中查看

在这里插入图片描述

运行hadoop自带的mapreduce Demo。

在Hadoop安装包的share/hadoop/mapreduce下有官方自带的mapreduce程序。我们可以使用如下的命令进行运行测试

统计test.input 中单词出现的个数

[hadoop@master etc]$ hadoop jar /opt/hadoop/share/hadoop/mapreduce/hadoop-mapreduce-examples-3.3.1.jar wordcount /user/hadoop/test.input /data/output 2021-07-18 15:24:09,503 INFO client.DefaultNoHARMFailoverProxyProvider: Connecting to ResourceManager at master/10.0.4.13:8032 2021-07-18 15:24:10,010 INFO mapreduce.JobResourceUploader: Disabling Erasure Coding for path: /tmp/hadoop-yarn/staging/hadoop/.staging/job_1626439825649_0004 2021-07-18 15:24:10,220 INFO input.FileInputFormat: Total input files to process : 1 2021-07-18 15:24:10,459 INFO mapreduce.JobSubmitter: number of splits:1 2021-07-18 15:24:11,037 INFO mapreduce.JobSubmitter: Submitting tokens for job: job_1626439825649_0004

执行成功结果

在这里插入图片描述

查看输出内容:

[hadoop@master mapreduce]$ hadoop fs -cat /user/hadoop/test.input just a test! hadoop mapreduce hive hbase spark storm sqoop hadoop spark [hadoop@master mapreduce]$ hadoop fs -cat /data/output/part-r-00000 a 1 hadoop 2 hbase 1 hive 1 just 1 mapreduce 1 spark 2 sqoop 1 storm 1 test! 1 [hadoop@master mapreduce]$

计算圆周率:

[hadoop@master hadoop]$ hadoop jar /opt/hadoop/share/hadoop/mapreduce/hadoop-mapreduce-examples-3.3.1.jar pi 2 10

蒙特卡洛方法来计算Pi值,计算命令中2表示计算的线程数,10表示投点数,该值越大,则计算的pi值越准确.

在这里插入图片描述

将投点数改成50

[hadoop@master hadoop]$ hadoop jar /opt/hadoop/share/hadoop/mapreduce/hadoop-mapreduce-examples-3.3.1.jar pi 2 50

在这里插入图片描述

在Yarn集群页面地址:http://101.36.9.202:8088 查看运行情况

在这里插入图片描述

十二. 注意事项总结

hosts文件配置,由于是云服务器,特别要注意内网地址及外网地址的配置,不然很多端口是无法访问的。比如本机无法在web上访问9000端口,slave1访问master:9000端口失败等。

用户,全程都是用hadoop用户进行操作,特别是服务器之间的免密登录配置。

hadoop配置文件,core-site.xml, hdfs-site.xml,yarn-site.xml, mapred-site.xml这四个主要文件,官网上的配置项很多,本文中列举的都是必须项。

通过jsp查看进程,然后去/opt/hadoop/logs中查看对应日志,这个在配置中十分重要,本教程也是一步一步通过排错完成的。

执行mapreduce报错 Error : Name node is in safe mode, 根据官方教程中需要执行***hdfs dfsadmin -safemode leave***。使safemode处于off模式。

关于datanode使用hostname的问题,需要在hdfs-site.xml中添加

dfs.client.use.datanode.hostname true Whether clients should use datanode hostnames when connecting to datanodes.

如果没有该配置会报错:

Caused by: org.apache.hadoop.hdfs.BlockMissingException: Could not obtain block: BP-467261466-127.0.0.1-1626247805201:blk_1073741832_1008 file=/tmp/hadoop-yarn/staging/hadoop/.staging/job_1626413822223_0002/job.splitmetainfo

安装中还配到很多问题,总之就是jps+logs查看问题原因,然后解决

至此,hadoop搭建完毕,从本地虚拟机到上云,从伪分布式到集群模式,前前后后折腾了两个星期时间,有些碰到的问题并未完整记录下来,如果有什么问题,欢迎大家留言,一起学习,共同进步!



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3