返回 导航

大数据

hangge.com

Hadoop - 单节点安装部署教程

作者:hangge | 2024-06-25 08:55
    Hadoop 作为一个开源的分布式存储和计算框架,广泛应用于处理大规模数据场合。通常来说,生产环境下 Hadoop 都是采用集群方式部署,而日常我们也可以在单台机器上搭建一个基本的 Hadoop 环境,以便于学习和开发。下面我将演示如何实现 Hadoop 的单机部署。

1,架构说明

下面这张图显示了使用单节点安装 Hadoop 的架构图,最上面的是 Hadoop 集群会启动的进程:
  • NameNodeSecondaryNameNodeDataNode HDFS 服务的进程
  • ResourceManagerNodeManager 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 版本,版本太高可能会有问题(比如 ResourceManagerNodeManager 无法启动)。关于 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.shHadoop 的环境变量配置文件。
  • core-site.xmlHadoop 的扩展配置文件。
  • hdfs-site.xmlHDFS 的扩展配置文件。
  • mapred-site.xmlMapReduce 的扩展配置文件。
  • yarn-site.xmlYARN 的扩展配置文件。

(2)我们进入该目录:
cd /usr/local/hadoop/etc/hadoop

(3)首先编辑 hadoop-env.sh 文件: 
vi 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>
  <property>
    <name>yarn.app.mapreduce.am.env</name>
    <value>HADOOP_MAPRED_HOME=${HADOOP_HOME}</value>
  </property>
  <property>
    <name>mapreduce.map.env</name>
    <value>HADOOP_MAPRED_HOME=${HADOOP_HOME}</value>
  </property>
  <property>
    <name>mapreduce.reduce.env</name>
    <value>HADOOP_MAPRED_HOME=${HADOOP_HOME}</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

(5)其中 part-r-00000 即为统计结果,我们查看该文件数据:
hdfs dfs -cat /output/part-r-00000
评论

全部评论(0)

回到顶部