配置伪分布式hadoop集群(附常见配置问题)

本文详细介绍了如何在本地或阿里云服务器上配置Hadoop伪分布式环境,包括Java和Hadoop的安装、配置环境变量、SSH免密登录、配置Hadoop相关XML文件、启动Hadoop和YARN服务。接着,通过运行自带的WordCount程序验证配置,并展示了程序运行的Web界面和输出结果。过程中遇到的多个问题及其解决方案也被记录下来,如端口开放、内存不足等。
摘要由CSDN通过智能技术生成

配置伪分布式hadoop并运行wordcount程序

ps:本教程在虚拟机和阿里云服务器上都配置成功,建议使用虚拟机(容易成功)。本实验最后将运行hadoop自带的wordcount程序用以检验配置是否成功。

实验目的

安装单机伪分布式Hadoop并运行程序,熟悉hadoop集群的部署操作。

目录见右边

实验内容

  1. 每人在自己本地电脑上正确安装和运行伪分布式Hadoop系统。

  2. 安装完成后,自己寻找一组英文网页数据,在本机上
    运行Hadoop系统自带的WordCount可执行程序文件 ,并产生输出结果

  3. 实验结果提交:要求书写一个实验报告,其中包括:

  • 系统安装运行的情况

  • 实验数据说明(下载的什么网页数据,多少个HTML或text文件)

  • 程序运行后在Hadoop Web作业状态,查看界面上的作业运行状态屏幕拷贝

  • 实验输出结果开头部分的屏幕拷贝

  • 实验体会

实验环境

硬件环境

x86笔记本电脑,Intel Core i5,NVIDIA GeForce MX150,50GB RAM

网络环境

校园网WiFi环境

软件环境

hdoop版本2.10.1

jdk版本1.8

阿里云服务器Ubuntu20.04 server ESC服务器

Ubuntu20.04 Desktop 虚拟机

VMware

XShell XFTP Xmanager等远程ssh工具\

实验方案

总体方案设计

实验结果

一共尝试以下实验

实验名称 实验 平台 结果


部署并运行haoop伪分布式配置 阿里云ESC服务器 成功
部署并运行haoop伪分布式配置 虚拟机部署成功 成功
在这里插入图片描述

系统安装运行的情况

见6.1-6.8

实验数据说明

名称 数据类型 运行情况 统计结果


实验数据一 XML 成功 见5.3
实验数据二 TXT 成功 见5.3

数据一

数据二

程序运行后在HadoopWeb作业界面查看作业运行状态截图

程序运行后在8088端口,启用yarn后的web截图

查看其具体信息

image-20220404124442482

image-20220404124442482

img

img

image-20220404234244840

image-20220403215244521

实验输出结果开头部分的屏幕拷贝

wordcount运行界面截图(开头部分)

image-20220404232629721

image-20220404232629721

Wordcount运行界面(长截图)

image-20220404232441056

image-20220404232441056

wordcount的结果(开头部分)

image-20220404233632769

image-20220404233632769

实验收获

见7.1-8.1

wordcount的结果(长截图)

image-20220404232411987

image-20220404232411987

实验过程

环境准备:配置虚拟机

可以选择在VMware中的虚拟机中安装,也可以选择阿里云服务器安装,两种安装方式笔者都尝试过,

但是值得注意以下几点:

  • 由于hadoop消耗较多内存和CPU资源,,阿里云虚拟机请选择较多资源的虚拟机,笔者选择的ESC虚拟机(双核
    2G-40G)运行hadoop时经常崩溃,建议选择内存较多CPU性能较强的云服务器

  • 运行阿里云ESC虚拟机请在防火墙处请开放如下端口

  • image-20220405191434409

  • image-20220405191434409

<!-- -->
  • 开放上述端口后,才可以通过本机浏览器远程访问hadoop webUI地址为

    http://阿里云IP:50070/

    http://阿里云IP:8088/

    http://阿里云IP:特定端口/

<!-- -->

环境准备:配置ssh免密登录

集群、单节点模式都需要用到 SSH 登陆(类似于远程登陆,你可以登录某台
Linux 主机,并且在上面运行命令),Ubuntu 默认已安装了 SSH
client,此外还需要安装 SSH server:

sudo apt-get install openssh-server

Shell 命令

安装后,可以使用如下命令登陆本机:

ssh localhost

Shell
命令,如果登陆时需要每次输入密码,我们需要配置成SSH无密码登陆比较方便,便于hapoop操作。

首先退出刚才的 ssh,就回到了我们原先的终端窗口,然后利用 ssh-keygen
生成密钥,并将密钥加入到授权中:

exit                           # 
ssh localhostssh-keygen -t rsa              # 都按回车
cat ./id_rsa.pub >> ./authorized_keys       # 加入授权
ssh localhost #如果不需要密码就算成功

ssh localhost免密登录成功界面

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-9pBGIPa5-1649387444127)(http://ckqqqq.gitee.io/csdn/csdn_hadoop_install/image13.png)]

image-20220325133444614

步骤一:安装java环境

下载jdk1.8安装包

https://mirrors.tuna.tsinghua.edu.cn/AdoptOpenJDK/8/jdk/arm/linux/

wget https://mirrors.tuna.tsinghua.edu.cn/AdoptOpenJDK/8/jdk/arm/linux/OpenJDK8U-jdk_arm_linux_hotspot_8u322b06.tar.gz

image-20220325124049087

image-20220325124049087

解压

tar -zxvf 安装包名

image-20220325124102287

image-20220325124102287

移动并重命名JDK包。

下载java1.8 可以选择ARM或者X64

wget XXX .tar.gz
tar -zxvf hadoop-2.10.1.tar.gz -C /java-se-8u41-ri/
mv java-se-8u41-ri/ /usr/java8

image-20220325124140202

image-20220325124140202

配置Java环境变量。

echo 'export JAVA_HOME=/usr/java8' >> /etc/profile
echo 'export PATH=$PATH:$JAVA_HOME/bin' >> /etc/profile
source /etc/profile

image-20220325124201558

image-20220325124201558

5.执行以下命令,查看Java是否成功安装。

java -version #注意不是java --version (离大谱了)

此处碰到问题

步骤二:下载hadoop

下载Hadoop安装包(2.10.1)

wget https://mirrors.tuna.tsinghua.edu.cn/apache/hadoop/common/hadoop-2.10.1/hadoop-2.10.1.tar.gz

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-NYr0bH9L-1649387444131)(http://ckqqqq.gitee.io/csdn/csdn_hadoop_install/image18.png)]

image-20220325125509168

解压Hadoop安装包

解压Hadoop安装包至/opt/hadoop (记住该地址)

https://mirrors.tuna.tsinghua.edu.cn/apache/hadoop/common/current2/

tar -zxvf hadoop-2.10.1.tar.gz -C /opt/
mv /opt/hadoop-2.10.1 /opt/hadoop

配置Hadoop环境变量。

echo 'export HADOOP_HOME=/opt/hadoop/' >> /etc/profile
echo 'export PATH=$PATH:$HADOOP_HOME/bin' >> /etc/profile
echo 'export PATH=$PATH:$HADOOP_HOME/sbin' >> /etc/profile
source /etc/profile    

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-OgaHAtzY-1649387444132)(http://ckqqqq.gitee.io/csdn/csdn_hadoop_install/image19.png)]

image-20220325130209802

添加Java路径

(如果已将java加入环境变量可以跳过这一步)

执行以下命令,修改配置文件yarn-env.sh和hadoop-env.sh。

echo "export JAVA_HOME=/usr/java8" >> /opt/hadoop/etc/hadoop/yarn-env.sh
echo "export JAVA_HOME=/usr/java8" >> /opt/hadoop/etc/hadoop/hadoop-env.sh

image-20220325132726184

image-20220325132726184

测试Hadoop是否安装成功。

hadoop version

如果返回以下信息,则表示安装成功。

image-20220325132750229

image-20220325132750229

各xml配置文件含义

一般来说配置文件夹路径为

所安装的路径/etc/hadoop/

下文中操作的所有xml文件皆是在该文件夹中的,下文主要有以下几个配置文件要修改:
hadoop-env.sh:Hadoop环境变量设置
core-site.Xml:主要完成NameNode的iP和端口设置
hdfs-site.Xml:主要完成HDFS的数据块副本等参数 设置
mapred-site.Xml:主要完成JobTracker IP和端口设置,能够设置yarn的WebUI
conf/slaves:完成Slaves节点IP设置
注:这个过程仅需在主节点上进行,然后将随着主机上安装
好的Hadoop目录一起复制到所有从节点

可以通过下列命令查看XML配置文件

cd  所安装的路径/etc/hadoop/
#本例中为 /opt/hadoop/etc/hadoop/
ls #可查看xml配置文件

步骤三:运行伪分布式hadoop

.修改Hadoop配置文件core-site.xml。

  • 执行以下命令开始进入编辑页面。
<!-- -->
sudo apt-get install vim
vim /opt/hadoop/etc/hadoop/core-site.xml
  • 节点内插入如下内容。

  • 分别指定临时文件路径和core-site端口

  • Core-site.xml

<!-- -->
<configuration>
    <property>
        <name>hadoop.tmp.dir</name>
        <value>file:/usr/local/hadoop/tmp</value>
        <description>Abase for other temporary directories.</description>
    </property>
    <property>
        <name>fs.defaultFS</name>
        <value>hdfs://localhost:9000</value>
    </property>
</configuration>
  • 按i进入编辑模式,按Esc键退出编辑模式,输入:wq保存退出。
<!-- -->
  • image-20220325133219759

    image-20220325133219759

    修改Hadoop配置文件hdfs-site.xml

<!-- -->
  • 修改Hadoop配置文件hdfs-site.xml,执行以下命令开始进入编辑页面。
<!-- -->
vim /opt/hadoop/etc/hadoop/hdfs-site.xml
  • hdfs-site.xml
<!-- -->
<configuration>
    <property>
        <name>dfs.replication</name>
        <value>1</value>
    </property>
    <property>
        <name>dfs.namenode.name.dir</name>
        <value>file:/usr/local/hadoop/tmp/dfs/name</value>
    </property>
    <property>
        <name>dfs.datanode.data.dir</name>
        <value>file:/usr/local/hadoop/tmp/dfs/data</value>
    </property>
</configuration>
  • 常见端口介绍

端口 作用


9000 fs.defaultFS,如:hdfs://172.25.40.171:9000
9001 dfs.namenode.rpc-address,DataNode会连接这个端口
50070 dfs.namenode.http-address
50090 dfs.namenode.secondary.http-address,如:172.25.39.166:50090
50020 dfs.datanode.ipc.address
50475 dfs.datanode.https.address
50010 dfs.datanode.address,DataNode的数据传输端口
8088 yarn.resourcemanager.webapp.address,YARN的http端口

步骤四:启动Hadoop伪分布式

格式化HDFS文件系统

警告:该命令不可重复执行,否则执行后可能导致出现start-yarn卡死问题

hadoop namenode -format

image-20220325141140357

image-20220325141140357

启动Hadoop

遇到问题 上面的命令执行得特别慢,环境:阿里云

解决方法:重启阿里云系统,阿里云ESC服务器空间太小导致

碰到两个问题一是要输入密码

依次执行以下命令,启动Hadoop。
start-dfs.sh

image-20220326194537142

image-20220326194537142

正常运行截图如上

如果此处出现错误请看文末的错误与调试模块

查看已启动进程

启动成功后,执行以下命令,查看已成功启动的进程。

启动完成后,可以通过命令 jps
来判断是否成功启动,若成功启动则会列出如下进程:

  • NameNode

  • DataNode

  • SecondaryNameNode`

  • jps

<!-- -->
jps

image-20220404123340592

image-20220404123340592

问题:为什么启动 Hadoop 后,见不到书上所说的 JobTracker 和 TaskTracker。

答案:这是因为新版的 Hadoop 使用了新的 MapReduce 框架( YARN,Yet
Another Resource Negotiator)。

问题:如果未出现上述进程怎么办?

答案:见后文错误与调试模块

浏览器访问(50070)

https://阿里云公网IP:50070 #如果用阿里云服务器,请确保内存足够&防火墙开放
https://localhost:50070 #如果在 本机访问

显示如下界面则表示Hadoop伪分布式环境搭建完成。
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-cPv6NR2A-1649387444136)(http://ckqqqq.gitee.io/csdn/csdn_hadoop_install/image26.png)]

步骤五:配置并且启动Yarn

这里是mapreduce的yarn配置

什么是yarn

YARN 是从 MapReduce 中分离出来的,负责资源管理与任务调度。YARN 运行于
MapReduce 之上,提供了高可用性、高扩展性,YARN
的更多介绍在此不展开,有兴趣的可查阅相关资料。

上述通过 start-dfs.sh 启动 Hadoop,仅仅是启动了 MapReduce
环境,我们可以启动 YARN ,让 YARN 来负责资源管理与任务调度。

修改mapred-site.xml

首先修改配置文件 mapred-site.xml,这边需要先进行重命名:

cd /opt/hadoop/etc/hadoop/
mv mapreduce.xml.template mapreduce.xml
vim mapreduce.xml
  • mapreduce.xml

  • 指定yarn为mapreduce的框架

<!-- -->
<configuration>
    <property>
        <name>mapreduce.framework.name</name>
        <value>yarn</value>
    </property>
</configuration>

修改yarn-site.xml

进入配置文件夹

vim yarn-site.xml
<configuration>
    <property>
        <name>yarn.nodemanager.aux-services</name>
        <value>mapreduce_shuffle</value>
        </property>
</configuration>

启动yarn

start-yarn.sh      # 启动YARN
mr-jobhistory-daemon.sh start historyserver  # 开启历史服务器,才能在Web中查看任务运行情况

查看已成功启动的进程

上面是出现的错误一3.启动成功后,执行以下命令,查看已成功启动的进程。

jps

image-20220326194654626

image-20220326194654626

服务器访问(8088)

https://阿里云公网IP:8088 #如果用阿里云服务器,请确保内存足够&防火墙开放
https://localhost:8088 #如果在 本机访问

image-20220404124442482

image-20220404124442482

成功界面如上(没有Wordcount任务)

停止hadoop运行

 stop-all.sh

或者

 stop-dfs.sh
 stop-yarn.sh

步骤六:运行wordcount程序

问题:hadoop fs 和hdfs dfs区别

(41条消息) hadoop fs、hadoop dfs与hdfs dfs命令的区别及hadoop
fs命令说明_Shyllin的博客-CSDN博客_fs是什么意思

#在hadoop中建立input文件夹

hdfs dfs -mkdir input 

将hadoop本地文件夹放入input文件夹中

hdfs dfs -ls input

查看input文件夹

hdfs dfs -put ./etc/hadoop/*.xml input #此时结果应该是一堆xml文件

image-20220326203641933

image-20220326203641933

寻找example文件

如果版本为hadoop2.X,则一般来说该路径下会存在
hadoop-mapreduce-examples-2.10.1.jar 文件,如下图

安装文件夹/share/hadoop/mapreduce
我的如下 /usr/local/hadoop/share/hadoop/mapreduce/hadoop-mapreduce-examples-2.10.1.jar

image-20220405200345628

image-20220405200345628

运行wordcount

命令为

hadoop jar /usr/local/hadoop/share/hadoop/mapreduce/hadoop-mapreduce-examples-2.10.1.jar wordcount input /xml_output/

解释

hadoop jar example所在路径/hadoop-mapreduce-examples-2.10.1.jar workcount  输入文件名 输出文件夹位置

image-20220404232441056

image-20220404232441056

查看wordcount的结果

web端可看运行状态

image-20220404124442482

image-20220404124442482

hdfs dfs -get xml_output ./xml_output 
#解释hdfs dfs -get HDFS上输出文件夹 ./本地文件夹
cat ./xml_output/* 
#查看结果

image-20220404232411987

image-20220404232411987

实验收获

问题与调试

本次大数据实验笔者遇到了无数是问题T_T,下面是笔者遇到的问题与解决方法,可供大家参考

问题一:启动伪分布式时缺少 datanode/namenode/secondary/

image-20220403155931602

image-20220403155931602

启动完成后,可以通过命令 jps
来判断是否成功启动,若成功启动则会列出如下进程:

  • NameNode
  • 如果不存在请检查xml文件配置
  • DataNode
  • 如果不存在可
  • [https://www.cnblogs.com/zephyr-1/p/6414081.html]
  • SecondaryNameNode
  • 如果不存在请重启
stop-all.sh
start-dfs.sh

image-20220404123340592

image-20220404123340592

问题二:报错如下

There are 0 datanode(s) running and no node(s) are excluded in this
operation.、

解决方法:https://blog.csdn.net/weixin_41374755/article/details/107146445

问题三:启动yarn时卡死(这个卡了我半天)

start-yarn.sh

image-20220326194619108

image-20220326194619108

解决方法:

出现上述问题可能是格式化两次hadoop,导致没有datanode
解决方法1:重启linux,再使用start-dfs.sh和start-yarn.sh 重启一下hadoop
解决办法2:找到hadoop安装目录下
hadoop-2.4.1/data/dfs/data里面的current文件夹删除

问题四:启动dfs时出现以下错误

image-20220325134233714

image-20220325134233714

解决方法:hdfs-site.xml配置错误,检查配置

问题五:connect错误

image-20220403211453780

image-20220403211453780

解决方式:.

检查ssh

启动yarn

image-20220403211536586

image-20220403211536586

问题六:hdfs dfs -mkdir错误

解决方法:

image-20220403210304944

image-20220403210304944

问题七:Connect Refuse

bug

mkdir: Call From iZ8vbhsfhga8yj95cx1410Z/172.19.51.155 to localhost:9000
failed on connection exception: java.net.ConnectException: Connection
refused; For more details see:
http://wiki.apache.org/hadoop/ConnectionRefused

image-20220403160727744

image-20220403160727744

解决方法:检查yarn配置,

问题八 :服务器卡死

原因:阿里云内存和CPU资源不足,阿里云差评!

解决方法:

使用top命令kill掉占用大量资源的进程,重新启动阿里云服务器&服务器升级扩容,换服务器。

image-20220403212457291

问题九

mkdir: Call From iZ8vbhsfhga8yj95cx1410Z/172.19.51.155 to localhost:9000
failed on connection exception: java.net.ConnectException: Connection
refused; For more details see:
http://wiki.apache.org/hadoop/ConnectionRefused

解决方法:检查yarn配置,

实验心得

本次实验过程将在4月10日前上传到我的CSDN 博客上(用户名:
ckqqqqq)
。连接还没有出来,因为博客图床还在审核中。

本次大数据实验中我大约碰到了10个问题,这些问题的原因和解决方法我总结如上(见问题与调试模块),在解决问题的过程中我加深了对linux和hadoop的理解,提升了我的实践能力。

此外除了在阿里云上配置hadoop伪分布式外,我还在自己的**虚拟机上尝试过配置hadoop伪分布式。**总的来说,后者比前者容易,因为前者要考虑防火墙和服务器资源等问题。

~~~ 如果觉得有用的话,点个赞吧[( ̄▽ ̄)*]

  • 4
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值