更新时间:2025-07-30 GMT+08:00
手工搭建Hadoop环境(Linux)
简介
本文介绍了如何在华为云上使用弹性云服务器的Linux实例手工搭建Hadoop环境。Hadoop是一款由Apache基金会用Java语言开发的分布式开源软件框架,用户可以在不了解分布式底层细节的情况下,开发分布式程序,充分利用集群的能力进行高速运算和存储。Hadoop的核心部件是HDFS(Hadoop Distributed File System)和MapReduce:
- HDFS:是一个分布式文件系统,可对应用程序数据进行分布式储存和读取。
- MapReduce:是一个分布式计算框架,MapReduce的核心思想是把计算任务分配给集群内的服务器执行。通过对计算任务的拆分(Map计算和Reduce计算),再根据任务调度器(JobTracker)对任务进行分布式计算。
更多信息,请参见Hadoop官网。
前提条件
- 已购买一台弹性云服务器,且已为其绑定弹性公网IP。
- 弹性云服务器所在安全组添加了如下表所示的安全组规则,具体步骤参见为安全组添加安全组规则。
表1 安全组规则 方向
优先级
策略
类型
协议端口
源地址
入方向
1
允许
IPv4
TCP: 8088
0.0.0.0/0
入方向
1
允许
IPv4
TCP: 9870
0.0.0.0/0
实施步骤
- 登录弹性云服务器。
- 安装JDK
- 执行以下命令,下载JDK 1.8安装包。
wget https://download.java.net/openjdk/jdk8u41/ri/openjdk-8u41-b04-linux-x64-14_jan_2020.tar.gz
- 执行以下命令,解压下载的JDK 1.8安装包。
tar -zxvf openjdk-8u41-b04-linux-x64-14_jan_2020.tar.gz
- 执行以下命令,移动并重命名JDK安装包。
本示例中将JDK安装包重命名为java8,您可以根据需要使用其他名称。
sudo mv java-se-8u41-ri/ /usr/java8
- 执行以下命令,配置Java环境变量。
如果您将JDK安装包重新命名为其他名称,需将以下命令中的java8替换为实际的名称。
sudo sh -c "echo 'export JAVA_HOME=/usr/java8' >> /etc/profile" sudo sh -c 'echo "export PATH=\$PATH:\$JAVA_HOME/bin" >> /etc/profile' source /etc/profile
- 验证安装。
java -version
回显信息如下表示jdk安装成功。
- 执行以下命令,下载JDK 1.8安装包。
- 配置SSH免密登录
- 执行以下命令,创建公钥和私钥。
ssh-keygen -t rsa
按三次回车后回显信息如下图所示,表示创建公钥和私钥成功。
- 执行以下命令,将公钥添加到authorized_keys文件中。
cd .ssh cat id_rsa.pub >> authorized_keys
- 执行以下命令,创建公钥和私钥。
- 安装Hadoop
- 执行以下命令,下载Hadoop软件包。
此处以3.2.4版本为例。
cd wget https://archive.apache.org/dist/hadoop/common/hadoop-3.2.4/hadoop-3.2.4.tar.gz
- 解压Hadoop安装包到opt目录下。
sudo tar -zxvf hadoop-3.2.4.tar.gz -C /opt/ sudo mv /opt/hadoop-3.2.4 /opt/hadoop
- 执行以下命令,配置环境变量。
sudo sh -c "echo 'export HADOOP_HOME=/opt/hadoop' >> /etc/profile" sudo sh -c "echo 'export PATH=\$PATH:/opt/hadoop/bin' >> /etc/profile" sudo sh -c "echo 'export PATH=\$PATH:/opt/hadoop/sbin' >> /etc/profile" source /etc/profile
- 执行以下命令,修改配置文件yarn-env.sh和hadoop-env.sh中JAVA_HOME的路径。
sudo sh -c 'echo "export JAVA_HOME=/usr/java8" >> /opt/hadoop/etc/hadoop/yarn-env.sh' sudo sh -c 'echo "export JAVA_HOME=/usr/java8" >> /opt/hadoop/etc/hadoop/hadoop-env.sh'
- 验证安装。
hadoop version
回显信息如下,表示Hadoop安装成功。
- 执行以下命令,下载Hadoop软件包。
- 配置Hadoop
- 修改Hadoop配置文件core-site.xml。
- 执行以下命令,进入编辑页面。
vim /opt/hadoop/etc/hadoop/core-site.xml
- 输入i,进入编辑模式。
- 在<configuration></configuration>节点内,插入如下内容。
<property> <name>hadoop.tmp.dir</name> <value>file:/opt/hadoop/tmp</value> <description>location to store temporary files</description> </property> <property> <name>fs.defaultFS</name> <value>hdfs://localhost:9000</value> </property>
- 按Esc键退出编辑模式。
- 执行以下命令保存并退出。
:wq
- 执行以下命令,进入编辑页面。
- 修改Hadoop配置文件hdfs-site.xml。
- 执行以下命令,进入编辑页面。
vim /opt/hadoop/etc/hadoop/hdfs-site.xml
- 输入i,进入编辑模式。
- 在<configuration></configuration>节点内,插入如下内容。
<property> <name>dfs.replication</name> <value>1</value> </property> <property> <name>dfs.namenode.name.dir</name> <value>file:/opt/hadoop/tmp/dfs/name</value> </property> <property> <name>dfs.datanode.data.dir</name> <value>file:/opt/hadoop/tmp/dfs/data</value> </property>
- 按Esc键退出编辑模式。
- 执行以下命令保存并退出。
:wq
- 执行以下命令,进入编辑页面。
- 修改Hadoop配置文件core-site.xml。
- 启动Hadoop
- 执行以下命令,初始化namenode。
hadoop namenode -format
- 依次执行以下命令,启动Hadoop。
- 出于系统安全和稳定性考虑,Hadoop官方不推荐使用root用户来启动Hadoop服务,直接使用root用户会因为权限问题无法启动Hadoop。您可以通过非root用户身份启动Hadoop服务,例如ecs-user用户等。
- 如果您一定要使用root用户启动Hadoop服务,请在了解Hadoop权限控制及相应风险之后,修改配置文件,具体步骤请参见相关操作。
- 使用root用户启动Hadoop服务会带来严重的安全风险,包括但不限于数据泄露、恶意软件更容易获得系统最高权限、意料之外的权限问题或行为。更多权限说明,请参见Hadoop官方文档。
start-dfs.sh
回显信息如下图所示。
start-yarn.sh
回显信息如下图所示。
- 执行以下命令,可查看成功启动的进程。
jps
成功启动的进程如下所示。
- 打开浏览器访问http://服务器弹性公网IP地址:8088和http://服务器弹性公网IP地址:9870。
- 执行以下命令,初始化namenode。
相关操作
修改配置文件,以便root用户可以启动Hadoop服务。
- 分别执行以下命令,编辑start-dfs.sh和stop-dfs.sh两个文件。
vim /opt/hadoop/sbin/start-dfs.sh vim /opt/hadoop/sbin/stop-dfs.sh
- 在文件中添加以下参数。
HDFS_DATANODE_USER=root HADOOP_SECURE_DN_USER=hdfs HDFS_NAMENODE_USER=root HDFS_SECONDARYNAMENODE_USER=root
- 分别执行以下命令,编辑start-yarn.sh和stop-yarn.sh两个文件中添加以下参数。
vim /opt/hadoop/sbin/start-yarn.sh vim /opt/hadoop/sbin/stop-yarn.sh
- 在文件中添加以下参数。
YARN_RESOURCEMANAGER_USER=root HADOOP_SECURE_DN_USER=yarn YARN_NODEMANAGER_USER=root
父主题: 搭建环境