目录

Hadoop3单机伪分布式部署

CentOS7.4系统单机部署Hadoop3伪集群

背景

背景
最近由于工作需要,转入大数据开发,由于之前只是片面的了解,近期开始系统的学习。 从Hadoop开始,之后会继续学习Hive、HBase、Storm、Spark、Flink、CarbonData等知识。

目的

本篇文章介绍了如何设置和配置单节点Hadoop3安装,以便您可以使用Hadoop MapReduce和Hadoop分布式文件系统(HDFS)快速执行简单的操作。

前期准备

操作系统

Linux,CentOS7.4,关闭防火墙,或者打开对应端口

1
2
systemctl stop firewalld
systemctl disable firewalld

必要软件

在Linux操作系统中必须包含的软件:

  1. 必须安装Java,推荐的Java版本描述位置在 HadoopJavaVersions
  2. 如果要使用启动和停止脚本,则必须安装ssh并且必须运行sshd才能使用管理远程Hadoop守护程序的脚本。

安装软件

如果你的环境没有安装必要的软件,则需要安装。

  1. 安装ssh
1
2
yum install -y sshd
systemctl start sshd
  • 配置ssh密钥,免密码登陆本服务器。 执行如下命令生成密钥:
1
ssh-keygen -t rsa -P '' -f ~/.ssh/id_rsa

命令完成后会在~/.ssh/路径下生成两个文件,id_rsa密钥文件,id_rsa.pub对应的公钥文件。 将公钥文件的信息追加到~/.ssh/authorized_keys文件中,如果没有则新建。

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

之后要修改权限属性

1
chmod 0600 ~/.ssh/authorized_keys
  • 验证是否配置成功
1
ssh localhost

第一次验证的时候会提示输入yesno,直接输入yes即可。 如果输入了yes之后回车,可以进入,就表示配置成功。

  1. 安装Java

在此我们安装Java8,下载地址使用清华大学开源软件镜像站

1
wget https://mirrors.tuna.tsinghua.edu.cn/AdoptOpenJDK/8/jdk/x64/linux/OpenJDK8U-jdk_x64_linux_hotspot_8u282b08.tar.gz

安装Java并配置JAVA_HOME

1
2
3
4
5
6
mkdir -p /usr/local/java
tar -xzvf OpenJDK8U-jdk_x64_linux_hotspot_8u282b08.tar.gz -C /usr/local/java/
ln -sf /usr/local/java/jdk8u282-b08/ /usr/local/java/default
echo 'export JAVA_HOME=/usr/local/java/default' >> /etc/profile
echo 'export PATH=$PATH:$JAVA_HOME/bin' >> /etc/profile
source /etc/profile

下载Hadoop3

1
wget https://mirrors.bfsu.edu.cn/apache/hadoop/common/stable/hadoop-3.3.0.tar.gz

准备启动Hadoop

  1. 解压下载的Hadoop压缩包到指定位置
1
2
3
mkdir -p /usr/local/hadoop
tar -xzvf hadoop-3.3.0.tar.gz -C /usr/local/hadoop
ln -sf /usr/local/hadoop/hadoop-3.3.0 /usr/local/hadoop/default
  1. 配置JAVA_HOME 进入到Hadoop的根目录下,编辑环境变量配置文件/etc/hadoop/hadoop-env.sh
1
export JAVA_HOME=/usr/local/java/default

伪分布式运行(单节点运行)

配置

进入到/usr/local/hadoop/default目录下

  1. 编辑etc/hadoop/core-site.xml文件
1
2
3
4
5
6
<configuration> 
	<property>
		<name>fs.defaultFS</name>
		<value>hdfs://localhost:9000</value>
	</property>
</configuration>
  1. 编辑etc/hadoop/hdfs-site.xml文件
1
2
3
4
5
6
<configuration>
	<property>
		<name>dfs.replication</name>
		<value>1</value>
	</property>
</configuration>

运行HDFS

  1. 格式化
1
bin/hdfs namenode -format
  1. 开启NameNode进程和DataNode进程
1
sbin/start-dfs.sh

运行此命令后,在Hadoop2时直接成功,在Hadoop3时报错。 HDFS_NAMENODE_USERHDFS_DATANODE_USERHDFS_SECONDARYNAMENODE_USER没有被定义,所以需要再去配置。 编辑$HADOOP_HOME/libexec/hadoop-config.sh,在文件的上方插入如下配置

1
2
3
HDFS_DATANODE_USER=root
HDFS_NAMENODE_USER=root
HDFS_SECONDARYNAMENODE_USER=root

重新执行启动dfs命令。 启动后,可以通过Javajps命令,查看当前运行的Java进程,会看到

1
2
3
4
19056 DataNode
20466 Jps
18920 NameNode
19304 SecondaryNameNode

表示启动成功(进程ID不一定相同)。 3. 在浏览器上访问NameNode

http://localhost:9870/

⚠️ 在Hadoop2中,访问地址是 http://localhost:50070

  1. 在HDFS中创建目录
1
bin/hdfs dfs -mkdir /user
  1. 停止HDFS进程
1
sbin/stop-dfs.sh

运行YARN

  1. 编辑配置文件 etc/hadoop/mapred-site.xml
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
<configuration> 
	<property>
		<name>mapreduce.framework.name</name>
		<value>yarn</value> 
	</property>
	<property>
        <name>mapreduce.application.classpath</name>
        <value>$HADOOP_MAPRED_HOME/share/hadoop/mapreduce/*:$HADOOP_MAPRED_HOME/share/hadoop/mapreduce/lib/*</value>
    </property>
</configuration>

etc/hadoop/yarn-site.xml

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
<configuration> 
	<property>
		<name>yarn.nodemanager.aux-services</name>
		<value>mapreduce_shuffle</value> 
	</property>
	<property>
        <name>yarn.nodemanager.env-whitelist</name>
	<value>JAVA_HOME,HADOOP_COMMON_HOME,HADOOP_HDFS_HOME,HADOOP_CONF_DIR,CLASSPATH_PREPEND_DISTCACHE,HADOOP_YARN_HOME,HADOOP_MAPRED_HOME</value>
    </property>
</configuration>
  1. 启动ResourceManagerNodeManager
1
sbin/start-yarn.sh

运行此命令后,在Hadoop2时直接成功,在Hadoop3时报错。 YARN_RESOURCEMANAGER_USERYARN_NODEMANAGER_USER没有被定义,所以需要再去配置。 编辑$HADOOP_HOME/libexec/yarn-config.sh,在文件的上方插入如下配置

1
2
YARN_RESOURCEMANAGER_USER=root
YARN_NODEMANAGER_USER=root

重新执行启动yarn命令。 启动后,可以通过Javajps命令,查看当前运行的Java进程,会看到

1
2
3
4
5
6
19056 DataNode
20466 Jps
18920 NameNode
19304 SecondaryNameNode
19999 ResourceManager
20143 NodeManager

表示启动成功(进程ID不一定相同)。 3. 在浏览器上访问ResourceManager

http://localhost:8088/

  1. 停止YARN进程
1
sbin/stop-yarn.sh

TIPS

如果每次启动或者关闭都要执行两个脚本,太麻烦了,所以Hadoop自带了执行全部的脚本。 启动

1
sbin/start-all.sh

停止

1
sbin/stop-all.sh