微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Hadoop-全分布模式

准备工作

操作系统:Linux(以CentOS为例,一台master,三台slvae)
JDK版本:jdk-1.8.1_212
Hadoop版本:hadoop-2.8.3

步骤(使用hadoop用户,各节点同时进行)

1.修改hadoop-env.sh配置文件

参考 hadoop-单机模式

2.设置Hadoop环境变量

sudo vim /etc/profile

添加如下配置

export HADOOP_HOME=/usr/local/hadoop-2.8.3
export HADOOP_MAPRED_HOME=$HADOOP_HOME
export HADOOP_COMMON_HOME=$HADOOP_HOME
export HADOOP_HDFS_HOME=$HADOOP_HOME
export YARN_HOME=$HADOOP_HOME
export JAVA_LIBRARY_PATH=$HADOOP_HOME/lib/native
export HADOOP_CONF_DIR=$HADOOP_HOME/etc/hadoop
export YARN_CONF_DIR=$HADOOP_HOME/etc/hadoop
export HADOOP_PREFIX=$HADOOP_HOME
export CLAsspATH=$CLAsspATH:.:$HADOOP_HOME/bin

在这里插入图片描述


使配置生效

source /etc/profile

在这里插入图片描述

2.指定slave节点(该步骤只在master节点操作)

vim /usr/local/hadoop-2.8.3/etc/hadoop/slaves

删除localhost添加

slave1
slave2
slave3

在这里插入代码片

3.修改/etc/hadoop/core-site.xml配置文件

vim /usr/local/hadoop-2.8.3/etc/hadoop/core-site.xml

标签添加如下配置

<configuration>
	<property>
		<name>hadoop.tmp.dir</name>
		<value>/usr/local/hadoop/tmp</value>
		<description>Abase for other temporary directories.</description>
	</property>
	<property>
		<name>fs.defaultFS</name>
		<!--master:/etc/hosts 配置的域名 master -->
		<value>hdfs://master:9000/</value>
	</property>
</configuration>

在这里插入图片描述

4.修改/etc/hadoop/hdfs-site.xml配置文件

vim /usr/local/hadoop-2.8.3/etc/hadoop/hdfs-site.xml

标签添加如下配置

<configuration>
	<!--指定hdfs中namenode的存储位置-->
	<property>
		<name>dfs.namenode.name.dir</name>
		<!-- value 设置为/usr/local/hadoop/dfs/namenode,启动时会有warn信息-->
		<value>file:///usr/local/hadoop-2.8.3/dfs/namenode</value>
	</property>
	<!--指定hdfs中datanode的存储位置-->
	<property>
		<name>dfs.datanode.data.dir</name>
		<value>file:///usr/local/hadoop-2.8.3/dfs/datanode</value>
	</property>
	<!--指定hdfs保存数据的副本数量-->
	<property>
		<name>dfs.replication</name>
		<value>3</value>
	</property>
	<!--配置namenode.secondary地址,如认的50070被占用,可以换成50071-->
	<property>
		<name>dfs.namenode.secondary.http-address</name>
		<value>master:50071</value>
	</property>
</configuration>

在这里插入图片描述

5.添加/etc/hadoop/mapraduce-site.xml配置文件

hadoop-2.8.3/etc/hadoop文件夹中没有mapraduce-site.xml文件,需要将mapraduce-site.xml.template文件复制并更名为mapraduce-site.xml,再进行修改,用于指定MapReduce使用的框架。

cp etc/hadoop/mapred-site.xml.template etc/hadoop/mapred-site.xml
vim etc/hadoop/mapred-site.xml

标签添加如下配置

<configuration>
	<!--告诉hadoop以后MR(Map/Reduce)运行在YARN上-->
	<property>
		<name>mapreduce.framework.name</name>
		<value>yarn</value>
	</property>
	<!-- 以下两项为启动jobhistory服务设置项,后面用到map reduce 时需要 -->
	<property>
		<name>mapreduce.jobhistory.address</name>
		<value>master:10020</value>
	</property>
	<property>
		<name>mapreduce.jobhistory.webapp.address</name>
		<value>master:19888</value>
	</property>
</configuration>

在这里插入图片描述

6.指定HDFS文件存储位置(认/tmp)

创建临时目录和文件目录

mkdir -p /usr/local/hadoop-2.8.3/tmp

master节点(只在master节点上操作):

mkdir -p /usr/local/hadoop-2.8.3/tmp/name

slvae节点(只在slave节点上操作):

mkdir -p /usr/local/hadoop-2.8.3/tmp/data

(-p:确认该目录是否存在,如果不存在则创建)

给/tmp文件夹授权

sudo chmod -R 777 /usr/local/hadoop-2.8.3/tmp

在这里插入图片描述

7.修改/etc/hadoop/yarn-site.xml配置文件

vim /usr/local/hadoop-2.8.3/etc/hadoop/yarn-site.xml

标签添加如下配置

<configuration>
	<!-- Site specific YARN configuration properties -->
	<!--nomenodeManager获取数据的方式是shuffle-->
	<property>
		<name>yarn.nodemanager.aux-services</name>
		<value>mapreduce_shuffle</value>
	</property>
	<!--配置shuffle,因为map和reduce之间有个shuffle过程,-->
	<property>
		<name>yarn.nademanager.aux-services.mapreduce.shuffle.class</name>
		<value>org.apache.hadoop.mapred.ShuffleHandler</value>
	</property>
	<!--为每个rm-id设置主机:端口用来提交作业。-->
	<property>
		<name>yarn.resourcemaneger.address</name>
		<value>master:8032</value>
	</property>
	<!--调度器接口的地址。-->
	<property>
		<name>yarn.resourcemanager.scheduler.address</name>
		<value>master:8030</value>
	</property>
	<!--对每个rm-id设置NodeManager连接的host-->
	<property>
		<name>yarn.resourcemanager.resource-tracker.address</name>
		<value>master:8031</value>
	</property>
	<!--对每个rm-id指定管理命令的host-->
	<property>
		<name>yarn.resourcemanager.admin.address</name>
		<value>master:8033</value>
	</property>
	<!--对每个rm-id,指定RM webapp对应的host-->
	<property>
		<name>yarn.resourcemanager.webapp.address</name>
		<value>master:8088</value>
	</property>
	<!-- 关闭虚拟内存检查-->
	<property>
		<name>yarn.nodemanager.vmem-check-enabled</name>
		<value>false</value>
	</property>
</configuration>

在这里插入图片描述

8.修改env环境变量文件

在hadoop-env.sh、mapred-env.sh、yarn-env.sh文件(hadoop-2.8.3/etc/hadoop目录下)添加JAVA_HOME:

export JAVA_HOME=/usr/local/jdk

9.格式化HDFS

在hadoop-2.8.3目录下:

bin/hadoop namenode -format

在这里插入图片描述


格式化成功

10.开启服务(该步骤只在master节点操作)

hadoop-2.8.3目录下:
启动HDFS:

sbin/start-dfs.sh

在这里插入图片描述


启动YARN:

sbin/start-yarn.sh

在这里插入图片描述


启动job history server:

sbin/mr-jobhistory-daemon.sh start historyserver

在这里插入图片描述

11.查看进程

jps

在这里插入图片描述

12.访问NameNode的Web页面,端口号:50070

http:// NameNode IP:50070
例:http://192.168.1.190:50070

在这里插入图片描述

13.访问Resourcemanger的Web页面,端口号:8088

http:// NameNode IP:8088
例:http://192.168.1.190:8088

在这里插入图片描述

14.测试(该步骤只在master节点操作)

Hadoop-2.8.3目录下:
创建 HFDS

bin/hdfs dfs -mkdir /user
bin/hdfs dfs -mkdir /user/test
bin/hdfs dfs -mkdir /user/test/input

将input文件拷贝到HFDS目录下

bin/hdfs dfs -put /usr/local/hadoop-2.8.3/etc/hadoop/*.xml /user/test/input

在这里插入图片描述


执行hadoop job

bin/hadoop jar share/hadoop/mapreduce/hadoop-mapreduce-examples-2.8.3.jar grep /user/test/input output 'dfs[a-z.]+'

在这里插入图片描述


查看执行结果

bin/hdfs dfs -cat output/*

在这里插入图片描述

15.停止服务(该步骤只在master节点操作)

在hadoop-2.8.3目录下:
停止HDFS

sbin/stop-dfs.sh


停止YARN

sbin/stop-yarn.sh

在这里插入图片描述

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐