背景
背景
最近由于工作需要,转入大数据开发,由于之前只是片面的了解,近期开始系统的学习。
从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自带了执行全部的脚本。
启动
停止