本地 Hadoop 开发环境搭建详解

ops/2024/11/14 7:43:57/

### 本地 Hadoop 开发环境搭建详解

Hadoop 是处理大规模数据的核心工具之一,在大数据分析、机器学习和数据仓库等场景中应用广泛。为了方便开发和调试,搭建一个本地 Hadoop 环境是一个很好的选择。本文将详细介绍如何在本地搭建一个单节点的 Hadoop 环境,适用于学习和开发。

---

### 前提条件

1. **操作系统**:建议使用 Linux 系统(例如 Ubuntu 或 CentOS),Windows 用户可以使用 WSL 或虚拟机来搭建。
2. **Java 环境**:Hadoop 依赖 Java 运行环境,推荐使用 JDK 8 版本。
3. **SSH**:Hadoop 在集群中使用 SSH 进行节点间通信,因此需要配置 SSH 免密登录。
4. **Hadoop 安装包**:从 Hadoop 官方网站下载二进制文件。

---

### 步骤详解

#### 1. 安装 Java
Hadoop 依赖于 Java 运行环境,请确保安装了合适的 JDK 版本。
```bash
# 安装 OpenJDK 8(Ubuntu)
sudo apt update
sudo apt install -y openjdk-8-jdk

# 检查安装
java -version
```

编辑 `~/.bashrc` 文件,添加 `JAVA_HOME` 路径:
```bash
export JAVA_HOME=/usr/lib/jvm/java-8-openjdk-amd64
export PATH=$PATH:$JAVA_HOME/bin
```

应用环境变量配置:
```bash
source ~/.bashrc
```

#### 2. 下载并安装 Hadoop

从 [Hadoop 官网](https://hadoop.apache.org/releases.html) 下载 Hadoop 二进制文件并解压到指定目录。

```bash
# 假设下载的文件为 hadoop-3.3.1.tar.gz
tar -xvzf hadoop-3.3.1.tar.gz
sudo mv hadoop-3.3.1 /usr/local/hadoop
```

#### 3. 设置 Hadoop 环境变量

编辑 `~/.bashrc`,添加以下 Hadoop 环境变量:

```bash
export HADOOP_HOME=/usr/local/hadoop
export PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin
```

更新环境变量:
```bash
source ~/.bashrc
```

#### 4. 配置 Hadoop

配置文件位于 `$HADOOP_HOME/etc/hadoop/` 目录中,主要需要编辑以下四个文件:

1. **core-site.xml**  
   配置 HDFS 的默认文件系统地址:
   ```xml
   <configuration>
       <property>
           <name>fs.defaultFS</name>
           <value>hdfs://localhost:9000</value>
       </property>
   </configuration>
   ```

2. **hdfs-site.xml**  
   设置副本数量为 1,以便在单节点模式下运行:
   ```xml
   <configuration>
       <property>
           <name>dfs.replication</name>
           <value>1</value>
       </property>
   </configuration>
   ```

3. **mapred-site.xml**  
   将 `mapred-site.xml.template` 文件复制并重命名为 `mapred-site.xml`,然后编辑该文件以启用 YARN:
   ```xml
   <configuration>
       <property>
           <name>mapreduce.framework.name</name>
           <value>yarn</value>
       </property>
   </configuration>
   ```

4. **yarn-site.xml**  
   配置 YARN 的 Shuffle 服务:
   ```xml
   <configuration>
       <property>
           <name>yarn.nodemanager.aux-services</name>
           <value>mapreduce_shuffle</value>
       </property>
   </configuration>
   ```

#### 5. 配置 SSH 免密登录

为了在 Hadoop 中顺利执行命令,您需要配置 SSH 免密登录。执行以下命令生成 SSH 密钥并配置:

```bash
# 生成 SSH 密钥
ssh-keygen -t rsa -P ""

# 将公钥添加到授权密钥列表
cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys

# 测试 SSH 连接
ssh localhost
```

#### 6. 格式化 Namenode

在首次启动 HDFS 前,需要格式化 Namenode。这只需要进行一次,执行命令如下:

```bash
hdfs namenode -format
```

#### 7. 启动 Hadoop 服务

1. 启动 HDFS 服务:
   ```bash
   start-dfs.sh
   ```

2. 启动 YARN 服务:
   ```bash
   start-yarn.sh
   ```

可以通过以下命令查看正在运行的 Hadoop 进程:
```bash
jps
```

应该看到以下进程:`NameNode`、`DataNode`、`ResourceManager` 和 `NodeManager`。

#### 8. 验证 Hadoop 配置

Hadoop 启动后,可以通过以下 URL 查看 Hadoop 状态:
- **NameNode 状态**:`http://localhost:9870`
- **ResourceManager 状态**:`http://localhost:8088`

#### 9. 测试 HDFS

测试 HDFS 的基本功能,创建文件夹并上传文件:

```bash
# 创建 HDFS 目录
hdfs dfs -mkdir /user
hdfs dfs -mkdir /user/your_username

# 上传文件
hdfs dfs -put $HADOOP_HOME/etc/hadoop/*.xml /user/your_username
```

查看文件是否成功上传:
```bash
hdfs dfs -ls /user/your_username
```

---

### 小结

通过以上步骤,您已在本地成功搭建一个 Hadoop 单节点开发环境。此环境可以用于学习 Hadoop 的基础概念、开发 MapReduce 程序和进行小规模数据测试。


http://www.ppmy.cn/ops/133504.html

相关文章

prompt资料收集

1. LANGgpt模板 # Role: 知识探索专家 ## Profile: - - 即刻App即刻App&#xff0c;享受探索、表达和创造https://m.okjike.com/originalPosts/649801f1ba47fe581a0da471?seyJ1IjoiNjQyM2IwMDE4NDg5Njk1NGJjYzhkNWU1IiwiZCI6MX0%3D2. 好的prompt的标准 主观的说&#xff1a;…

【深度解析】CSS工程化全攻略(1)

在现代前端开发中&#xff0c;随着项目的规模越来越大&#xff0c;CSS 代码的管理和维护变得越来越重要。传统的 CSS 编写方式在大型项目中存在诸多问题&#xff0c;如类名冲突、重复样式、文件细分等。为了解决这些问题&#xff0c;社区提出了多种解决方案&#xff0c;包括命名…

OpenGL ES 文字渲染方式有几种?

在音视频或 OpenGL 开发中,文字渲染是一个高频使用的功能,比如制作一些酷炫的字幕、为视频添加水印、设置特殊字体等等。 实际上 OpenGL 并没有定义渲染文字的方式,所以我们最能想到的办法是:将带有文字的图像上传到纹理,然后进行纹理贴图。 本文分别介绍下在应用层和 C+…

通俗易懂:什么是 Java 类加载?

文章目录 类加载过程的三个阶段一个简单的案例&#xff1a;类加载的工作原理使用这个类类加载的顺序类加载的特点类加载的好处总结推荐阅读文章 在 Java 中&#xff0c; 类加载是一种将我们写的 Java 类文件加载到内存中的过程&#xff0c;让 JVM&#xff08;Java 虚拟机&…

软件设计师 - 第2章 程序设计语言基础知识

语言分类 按照级别分类 低级语言&#xff1a;汇编语言高级语言&#xff1a;C&#xff0c;C&#xff0c;C#&#xff0c;Java&#xff0c;Python等 按照翻译形式分类 汇编&#xff1a;源代码经汇编程序翻译后执行解释&#xff1a;源代码经解释器解释后执行或者翻译成中间代码…

项目管理软件:帮你0门槛制作甘特图

甘特图是一种项目管理工具&#xff0c;能够通过条状图来显示项目进度的时间表&#xff0c;帮助团队或个人规划、安排和跟踪整个的项目进度。 甘特图&#xff0c;也叫横道图、条状图&#xff0c;是使用条状图来显示设计项目、进度和其他时间相关的系统进展的内在关系随着时间进…

python: postgreSQL using psycopg2 or psycopg

psycopg2 # encoding: utf-8 # 版权所有 2024 ©涂聚文有限公司 # 許可資訊查看&#xff1a;言語成了邀功的功臣&#xff0c;還需要行爲每日來值班嗎&#xff1f; # 描述&#xff1a; pip install --upgrade pip PostgreSQL database adapter for Python # pip install…

计算机23级数据结构上机实验(第3-4周)

A 二叉树删除子树 编写程序对给定二叉树执行若干次删除子树操作&#xff0c;输出每次删除子树后剩余二叉树的中根序列。二叉树结点的数据域值为不等于0的整数。每次删除操作是在上一次删除操作后剩下的二叉树上执行。 输入格式: 输入第1行为一组用空格间隔的整数&#xff0c;表…