Hadoop - 单节点安装部署教程
Hadoop 作为一个开源的分布式存储和计算框架,广泛应用于处理大规模数据场合。通常来说,生产环境下 Hadoop 都是采用集群方式部署,而日常我们也可以在单台机器上搭建一个基本的 Hadoop 环境,以便于学习和开发。下面我将演示如何实现 Hadoop 的单机部署。
(2)为方便后续 Hadoop 配置和使用,我们执行如下命令编辑的 host 文件,使得可以通过主机名访问:
(3)同时还要配置该节点对自己的免密码登录,具体可以参考我之前写的文章:
(4)最后需要安装配置 JDK,建议使用企业中常用的 JDK 1.8 版本,版本太高可能会有问题(比如 ResourceManager、NodeManager 无法启动)。关于 JDK 的安装可以参考我之前写的文章:
(2)接着执行如下命令解压下载下来的压缩:
(3)最后将解压出来的文件夹移动到合适的位置,这个可以根据个人习惯修改:
(2)在文件尾部添加如下内容:
(3)最后执行如下命令使配置生效:
(5)然后编辑 hdfs-site.xml 文件:
(6)接着编辑 mapred-site.xml 文件:
(7)然后编辑 yarn-site.xml 文件:
(2)如果在日志信息中能看到以下内容,则说明 NameNode 格式化成功了。
(2)然后执行如下命令运行一个内置的计算PI样例程序:
(3)等待程序执行完毕后即可输出计算得到的PI值:
(2)然后将该目录下的 NOTICE.txt 文件上传到 Hadoop 的 HDFD 存储根目录下:
(3)然后执行如下命令运行一个内置的 MapReduce 单词统计程序,统计该文件中各个单词出现的次数,并将结果输出至 /output 目录:
(4)待程序执行完毕后,查看 hdfs 的 /output 目录产生的内容:
(5)其中 part-r-00000 即为统计结果,我们查看该文件数据:
1,架构说明
下面这张图显示了使用单节点安装 Hadoop 的架构图,最上面的是 Hadoop 集群会启动的进程:
- NameNode、SecondaryNameNode、DataNode 是 HDFS 服务的进程
- ResourceManager、NodeManager 是 YARN 服务的进程
- MapRedcue 在这里没有进程,因为它是一个计算框架,等 Hadoop 集群安装好了以后 MapReduce 程序可以在上面执行。
2,准备工作
(1)假设我们准备一台 linux 服务器,具体信息如下:
主机名 | 内网IP | 外网IP |
node1 | 172.16.8.49 | 118.31.251.29 |
(2)为方便后续 Hadoop 配置和使用,我们执行如下命令编辑的 host 文件,使得可以通过主机名访问:
echo ' 172.16.8.49 node1' >> /etc/hosts
(3)同时还要配置该节点对自己的免密码登录,具体可以参考我之前写的文章:
注意:主节点在启动自身节点上的进程时也是通过 SSH 远程登录的,所以主节点也需要免密码登录自己。
(4)最后需要安装配置 JDK,建议使用企业中常用的 JDK 1.8 版本,版本太高可能会有问题(比如 ResourceManager、NodeManager 无法启动)。关于 JDK 的安装可以参考我之前写的文章:
3,下载并解压 Hadoop 安装包
(1)我们访问 Hadoop 的官网获取需要的版本安装包(点击访问),然后将其下载到服务器上:
wget https://dlcdn.apache.org/hadoop/common/hadoop-3.3.6/hadoop-3.3.6.tar.gz
(2)接着执行如下命令解压下载下来的压缩:
tar -zxvf hadoop-3.3.6.tar.gz
(3)最后将解压出来的文件夹移动到合适的位置,这个可以根据个人习惯修改:
mv hadoop-3.3.6 /usr/local/hadoop
4,配置 HADOOP_HOME 环境变量
提示:Hadoop 目录下面有两个重要的目录:bin 目录和 sbin 目录。要操作 Hadoop,则需要用到这两个目录下的一些脚本。为了后期使用方便,建议配置 HADOOP_HOME 环境变量,并将 bin 目录和 sbin 目录添加到 PATH 环境变量中。
(1)首先执行如下命令编辑系统 profile 文件:
vi /etc/profile
(2)在文件尾部添加如下内容:
export HADOOP_HOME=/usr/local/hadoop export PATH=$HADOOP_HOME/sbin:$HADOOP_HOME/bin:$PATH
(3)最后执行如下命令使配置生效:
source /etc/profile
5,修改 Hadoop 的配置文件
(1)Hadoop 的相关配置文件都在 Hadoop 安装目录下的“etc/hadoop”目录下,主要修改以下配置文件。
- hadoop-env.sh:Hadoop 的环境变量配置文件。
- core-site.xml:Hadoop 的扩展配置文件。
- hdfs-site.xml:HDFS 的扩展配置文件。
- mapred-site.xml:MapReduce 的扩展配置文件。
- yarn-site.xml:YARN 的扩展配置文件。
(2)我们进入该目录:
cd /usr/local/hadoop/etc/hadoop
(3)首先编辑 hadoop-env.sh 文件:
vi hadoop-env.sh
- 增加 JAVA_HOME 和 HADOOP_LOG_DIR 环境变量以及相关参数,添加到 hadoop-env.sh 文件的末尾。
export JAVA_HOME=/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.392.b08-3.el9.x86_64 export HADOOP_LOG_DIR=/data/hadoop_repo/logs/hadoop export HDFS_NAMENODE_USER=root export HDFS_DATANODE_USER=root export HDFS_SECONDARYNAMENODE_USER=root export HADOOP_SHELL_EXECNAME=root export YARN_RESOURCEMANAGER_USER=root export YARN_NODEMANAGER_USER=root
(4)接着编辑 core-site.xml 文件:
vi core-site.xml
- 添加如下高亮内容,注意节点名称根据实际情况修改:
<configuration> <property> <name>fs.defaultFS</name> <value>hdfs://node1:9000</value> </property> <property> <name>hadoop.tmp.dir</name> <value>/data/hadoop_repo</value> </property> </configuration>
(5)然后编辑 hdfs-site.xml 文件:
vi hdfs-site.xml
- 添加如下高亮内容:
<configuration> <property> <name>dfs.replication</name> <value>1</value> </property> </configuration>
(6)接着编辑 mapred-site.xml 文件:
vi mapred-site.xml
- 添加如下高亮内容:
<configuration> <property> <name>mapreduce.framework.name</name> <value>yarn</value> </property> </configuration>
(7)然后编辑 yarn-site.xml 文件:
vi yarn-site.xml
- 添加如下高亮内容,注意节点名称根据实际情况修改:
<configuration> <property> <name>yarn.nodemanager.aux-services</name> <value>mapreduce_shuffle</value> </property> <property> <name>yarn.resourcemanager.hostname</name> <value>node1</value> </property> </configuration>
6,格式化 NameNode
(1)我们在 node1 上执行如下命令格式化 NameNode:
cd /usr/local/hadoop bin/hdfs namenode -format
(2)如果在日志信息中能看到以下内容,则说明 NameNode 格式化成功了。
7,启动 Hadoop
(1)我们在 hadoop 目录下执行如下命令启动:
sbin/start-all.sh(2)启动后控制台输出如下信息:
8,查看是否启动成功
(1)在 node1 节点执行 jps 命令,可以看到如下进程信息。可以看到相关组件均已启动成功。
(2)使用浏览器访问 yarn 任务监控 web 页面,地址为 http://主节点IP:8088,显示如下内容也可以说明启动成功。
9,停止 Hadoop
如果要停止 Hadoop,则需要在 node1 上执行 stop-all.sh 文件即可。
cd /usr/local/hadoop sbin/stop-all.sh
附:内置 mapreduce 样例使用测试
1,计算 PI
(1)首先进入 hadoop 目录:
cd /usr/local/hadoop
(2)然后执行如下命令运行一个内置的计算PI样例程序:
./bin/hadoop jar ./share/hadoop/mapreduce/hadoop-mapreduce-examples-3.3.6.jar pi 10 10
(3)等待程序执行完毕后即可输出计算得到的PI值:
2,单词统计
(1)首先进入 hadoop 目录:
cd /usr/local/hadoop
(2)然后将该目录下的 NOTICE.txt 文件上传到 Hadoop 的 HDFD 存储根目录下:
hdfs dfs -put NOTICE.txt /
(3)然后执行如下命令运行一个内置的 MapReduce 单词统计程序,统计该文件中各个单词出现的次数,并将结果输出至 /output 目录:
bin/hadoop jar share/hadoop/mapreduce/hadoop-mapreduce-examples-3.3.6.jar wordcount /NOTICE.txt /output
(4)待程序执行完毕后,查看 hdfs 的 /output 目录产生的内容:
hdfs dfs -ls /output
hdfs dfs -cat /output/part-r-00000