背景
背景
最近由于工作需要,转入大数据开发,由于之前只是片面的了解,近期开始系统的学习。
从Hadoop开始,之后会继续学习Hive、HBase、Storm、Spark、Flink、CarbonData等知识。
目的
本篇文章介绍了如何设置和配置单节点Hadoop3安装,以便您可以使用Hadoop MapReduce和Hadoop分布式文件系统(HDFS)快速执行简单的操作。
前期准备
操作系统
Linux,CentOS7.4,关闭防火墙,或者打开对应端口
| 1
2
 | systemctl stop firewalld
systemctl disable firewalld
 | 
必要软件
在Linux操作系统中必须包含的软件:
- 必须安装Java,推荐的Java版本描述位置在 HadoopJavaVersions
。
- 如果要使用启动和停止脚本,则必须安装ssh并且必须运行sshd才能使用管理远程Hadoop守护程序的脚本。
安装软件
如果你的环境没有安装必要的软件,则需要安装。
- 安装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
 | 
第一次验证的时候会提示输入yes或no,直接输入yes即可。
如果输入了yes之后回车,可以进入,就表示配置成功。
- 安装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
- 解压下载的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
 | 
- 配置JAVA_HOME进入到Hadoop的根目录下,编辑环境变量配置文件/etc/hadoop/hadoop-env.sh
| 1
 | export JAVA_HOME=/usr/local/java/default
 | 
伪分布式运行(单节点运行)
配置
进入到/usr/local/hadoop/default目录下
- 编辑etc/hadoop/core-site.xml文件
| 1
2
3
4
5
6
 | <configuration> 
	<property>
		<name>fs.defaultFS</name>
		<value>hdfs://localhost:9000</value>
	</property>
</configuration>
 | 
- 编辑etc/hadoop/hdfs-site.xml文件
| 1
2
3
4
5
6
 | <configuration>
	<property>
		<name>dfs.replication</name>
		<value>1</value>
	</property>
</configuration>
 | 
运行HDFS
- 格式化
| 1
 | bin/hdfs namenode -format
 | 
- 开启NameNode进程和DataNode进程
运行此命令后,在Hadoop2时直接成功,在Hadoop3时报错。
HDFS_NAMENODE_USER和HDFS_DATANODE_USER和HDFS_SECONDARYNAMENODE_USER没有被定义,所以需要再去配置。
编辑$HADOOP_HOME/libexec/hadoop-config.sh,在文件的上方插入如下配置
| 1
2
3
 | HDFS_DATANODE_USER=root
HDFS_NAMENODE_USER=root
HDFS_SECONDARYNAMENODE_USER=root
 | 
重新执行启动dfs命令。
启动后,可以通过Java的jps命令,查看当前运行的Java进程,会看到
| 1
2
3
4
 | 19056 DataNode
20466 Jps
18920 NameNode
19304 SecondaryNameNode
 | 
表示启动成功(进程ID不一定相同)。
3. 在浏览器上访问NameNode
http://localhost:9870/
⚠️ 在Hadoop2中,访问地址是 http://localhost:50070
- 在HDFS中创建目录
| 1
 | bin/hdfs dfs -mkdir /user
 | 
- 停止HDFS进程
运行YARN
- 编辑配置文件
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>
 | 
- 启动ResourceManager和NodeManager
运行此命令后,在Hadoop2时直接成功,在Hadoop3时报错。
YARN_RESOURCEMANAGER_USER和YARN_NODEMANAGER_USER没有被定义,所以需要再去配置。
编辑$HADOOP_HOME/libexec/yarn-config.sh,在文件的上方插入如下配置
| 1
2
 | YARN_RESOURCEMANAGER_USER=root
YARN_NODEMANAGER_USER=root
 | 
重新执行启动yarn命令。
启动后,可以通过Java的jps命令,查看当前运行的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/
- 停止YARN进程
TIPS
如果每次启动或者关闭都要执行两个脚本,太麻烦了,所以Hadoop自带了执行全部的脚本。
启动
停止