CentOS下Hadoop伪分布式集群的搭建(超详细)

1、环境准备

​ jdk1.8 下载地址:https://www.oracle.com/java/technologies/downloads/#java8

​ 进入官网如下图所示,选择自己合适的安装包下载即可
在这里插入图片描述

​ hadoop安装包 下载地址:https://hadoop.apache.org/releases.html

​ 进入官网如下图所示,选择自己合适的版本下载即可
在这里插入图片描述

​ 安装ssh服务

​ 进入服务器中,输入如下命令,查看是否已经安装好ssh服务,若没有,则使用如下命令进行安装:

sudo apt-get install ssh openssh-server

​ 创建ssh-key,这里采用rsa方式,使用如下命令:

ssh-keygen -t rsa -P ""

​ 出现的图形就是密码,接着执行以下命令

cat ~/.ssh/id_rsa.pub >> authorized_keys

最后执行ssh localhost进行测试,成功显示如下
在这里插入图片描述

2、环境变量配置

在java和hadoop安装完成之后,接着配置环境变量。首先执行

vim /etc/profile

接着在文件下方配置环境变量即可

export JAVA_HOME=/usr/java/jdk1.8.0_221-amd64
export JRE_HOME=${JAVA_HOME}/jre
export CLASSPATH=.:${JAVA_HOME}/lib:${JRE_HOME}/lib
export HADOOP_HOME=/usr/local/hadoop-2.10.1
export PATH=$PATH:${JAVA_HOME}/bin:$HADOOP_HOME/bin:$HADOOP_HOME/sbin

将JAVA_HOME和HADOOP_HOME替换为自己的安装路径即可,接着运行

source /etc/profile

配置文件生效后,分别运行java -versionhadoop version查看jdk和hadoop是否安装配置成功,如下图所示
在这里插入图片描述

3、配置集群

配置详情可参考https://hadoop.apache.org/docs/stable/hadoop-project-dist/hadoop-common/SingleCluster.html

首先进入hadoop安装目录下,然后进入bin/hadoop文件夹下,所有的配置文件都在该文件夹中

配置hadoop.env.sh,将其中的JAVA_HOME修改为自己的。
在这里插入图片描述

配置core-site.xml,将如下代码复制进去即可。hadoop.tmp.dir的目录可根据自己的喜好来配置

<!-- 指定HDFS中NameNode的地址 -->
<property>
    <name>fs.defaultFS</name>
    <value>hdfs://localhost:9000</value>
</property>

<!-- 指定Hadoop运行时产生文件的存储目录 -->
<property>
	<name>hadoop.tmp.dir</name>
	<value>/usr/local/hadoop-2.10.1/data/tmp</value>
</property>

在这里插入图片描述

配置hdfs-site.xml,添加如下代码即可

<!-- 指定HDFS副本的数量 -->
<property>
	<name>dfs.replication</name>
	<value>1</value>
</property>

在这里插入图片描述

4、启动集群

​ 在hadoop安装目录下执行以下命令。

​ 格式化NameNode(第一次启动格式化就行了,如果没有特殊情况以后都不要再格式化了)

bin/hdfs namenode -format

执行成功,如图所示
在这里插入图片描述

​ 启动NameNode

sbin/hadoop-daemon.sh start namenode

启动成功如下所示
在这里插入图片描述

启动DataNode

sbin/hadoop-daemon.sh start datanode

启动成功如下所示
在这里插入图片描述

5、查看集群是否启动成功

​ 在hadoop安装目录下执行jps命令查看进程,如果NameNode和DataNode启动成功如下图所示
在这里插入图片描述

接着在浏览器中可以查看web页面,端口为50070
在这里插入图片描述

5、操作集群

​ (1)在HDFS上创建一个input文件夹

bin/hdfs dfs -p /user/myfile/input

​ (2)查看文件夹是否创建成功,执行命令bin/hdfs dfs -ls -R /,结果如下图所示,可以看到已经创建成功
在这里插入图片描述

​ (3)在本地创建一个文件,我这边的文件在/usr/local/hadooptest文件夹下创建了一个名为test的文件,文件内容如下
在这里插入图片描述

​ (4)运行下面的命令将这个文件上传到上方创建的input文件夹中

bin/hdfs dfs -put /usr/local/hadooptest/test /user/myfile/input

​ (5)运行下面的命令查看文件是否上传成功

bin/hdfs dfs -ls /user/myfile/input

​ 可以看到已经上传成功
在这里插入图片描述

​ (6)运行MapReduce程序

bin/hadoop jar share/hadoop/mapreduce/hadoop-mapreduce-examples-2.7.2.jar wordcount /user/myfile/input/test  /user/myfile/output

​ 运行完成后,执行bin/hdfs dfs -ls /user/myfile查看在/user/myfile文件夹下生成的output文件夹,如图所示
在这里插入图片描述

​ 接下来执行bin/hdfs dfs -ls /user/myfile/output查看output文件夹中有什么东西,如图所示
在这里插入图片描述

​ 最后运行bin/hdfs dfs -cat /user/myfile/output/part-r-00000查看执行结果
在这里插入图片描述

至此,简单的伪分布式集群搭建完成了。接下来配置yarn

首先配置yarn-env.sh,修改其中的JAVA_HOME,进入hadoop安装目录下执行vim etc/hadoop/yarn-env.sh
在这里插入图片描述

接着配置yarn-site.xml,执行vim etc/hadoop/yarn-site.xml,添加如下代码

<!-- Reducer获取数据的方式 -->
<property>
 		<name>yarn.nodemanager.aux-services</name>
 		<value>mapreduce_shuffle</value>
</property>

<!-- 指定YARN的ResourceManager的地址 value的值为自己的主机名-->
<property>
        <name>yarn.resourcemanager.hostname</name>
        <value>HackerSM</value>
</property>

在这里插入图片描述

配置mapred-env.sh,修改JAVA_HOME,执行vim etc/hadoop/mapred-env.sh
在这里插入图片描述

配置mapred-site.xml.template,执行mv etc/hadoop/mapred-site.xml.template etc/hadoop/mapred-site.xml重命名为mapred-site.xml,接着执行vim etc/mapred-site.xml,添加如下代码

<!-- 指定MR运行在YARN上 -->
<property>
		<name>mapreduce.framework.name</name>
		<value>yarn</value>
</property>

在这里插入图片描述

启动集群(必须保证NameNode和DataNode已经启动)

执行sbin/yarn-daemon.sh start resourcemanager启动ResourceManeger

执行sbin/yarn-daemon.sh start nodemaneger启动NodeManager
在这里插入图片描述

执行jps命令查看进程,ResourceManager和NodeManager已经启动
在这里插入图片描述

查看yarn的web页面,端口号为8088
在这里插入图片描述

测试yarn

首先删除HDFS中的output文件夹,如果没有就不需要删除,这边是因为上面测试wordcount建了一个output文件夹

bin/hdfs dfs -rm -r /user/myfile/output(如果没有output文件夹则不须执行)

执行bin/hdfs dfs -ls -R /查看hdfs中所有的文件夹,结果如下
在这里插入图片描述

执行MapReduce程序

bin/hadoop jar share/hadoop/mapreduce/hadoop-mapreduce-examples-2.10.1.jar wordcount /user/myfile/input /user/myfile/output

可以在yarn的web页面看到已经执行成功
在这里插入图片描述

再执行bin/hdfs dfs -cat /user/myfile/output/part-r-00000,可以看到执行结果
在这里插入图片描述

至此,yarn配置完成,接下来配置历史服务器

首先配置mapred-site.xml,在该文件中添加如下代码

<!-- value的值为主机名:端口号 -->
<!-- 历史服务器端地址 -->
<property>
    <name>mapreduce.jobhistory.address</name>
    <value>HackerSM:10020</value>
</property>
<!-- 历史服务器web端地址 -->
<property>
    <name>mapreduce.jobhistory.webapp.address</name>
    <value>HackerSM:19888</value>
</property>

在这里插入图片描述

启动历史服务器

sbin/mr-jobhistory-daemon.sh start historyserver

使用jps查看进程
在这里插入图片描述

访问历史服务器web页面,端口号为19888
在这里插入图片描述

最后配置日志聚集

首先执行vim etc/hadoop/yarn-site.xml,然后添加如下代码

<!-- 日志聚集功能使能 -->
<property>
<name>yarn.log-aggregation-enable</name>
<value>true</value>
</property>

<!-- 日志保留时间设置7天 -->
<property>
<name>yarn.log-aggregation.retain-seconds</name>
<value>604800</value>
</property>

在这里插入图片描述

开启日志聚集功能需要重新启动ResourceManager、NodeManager和HistoryServer

关闭ResourceManager、NodeManager和HistoryServer,执行如下命令

sbin/yarn-daemon.sh stop resourcemanager
sbin/yarn-daemon.sh stop nodemanager
sbin/mr-jobhistory-daemon.sh stop historyserver

再一次启动ResourceManager、NodeManager和HistoryServer,执行如下命令

sbin/yarn-daemon.sh start resourcemanager
sbin/yarn-daemon.sh start nodemanager
sbin/mr-jobhistory-daemon.sh start historyserver

删除HDFS上的output文件夹,如果在HDFS中没有output文件夹,可跳过

bin/hdfs dfs -rm -r /user/myfile/output

最后在执行一遍wordcount程序

bin/hadoop jar share/hadoop/mapreduce/hadoop-mapreduce-examples-2.10.1.jar wordcount /user/myfile/input /user/myfile/output

可以看到刚刚执行的wordcount程序
在这里插入图片描述

点击上图中的Job ID查看运行情况
在这里插入图片描述

点击上图中的logs即可查看日志
在这里插入图片描述

至此,伪分布式集群已经完全搭建完毕!

  • 4
    点赞
  • 31
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值