hadoop集群安装指南-hadoop3.2.4版本

hadoop3.2.4集群安装指南

下载地址:https://archive.apache.org/dist/hadoop/common/

前置准备

     三台服务器
     10.243.80.42 
     10.243.80.43 
     10.243.80.44 

1:安装jdk1.8

2:修改主机名方便集群间的访问

 hostname hadoop42
 hostname hadoop43
 hostname hadoop44
 同步修改/etc/hosts文件
 10.243.80.42 hadoop42
 10.243.80.43 hadoop43
 10.243.80.44 hadoop44

3:配置SSH免密码远程登录

     一、创建公钥/私钥
        ssh-keygen -t rsa 然后yes加一路回车
    二、将公钥拷贝到要免密登录的目标机器上
       ssh-copy-id hadoop42
       ssh-copy-id hadoop43
       ssh-copy-id hadoop44

4:创建hadoop用户

1:增加hadoop用户和密码
adduser hadoop
passwd hadoop
2:把hadoop加入hadoop用户组
usermod -a -G hadoop hadoop
3:然后用cat /etc/group |grep hadoop 查看结果
4:增加hadoop的权限
vi  /etc/sudores
hadoop ALL=(ALL)       ALL
5:将hadoop文件夹的所有者指定为hadoop用户
chown -R hadoop:hadoop /data01/bigdata/hadoop-3.2.4

hadoop安装

1.下载解压hadoop包

下载地址:http://archive.apache.org/dist/hadoop/core/
tar -no-same-owner -zxvf hadoop-3.2.4.tar.gz
创建软连接---方便版本升级
ln -s hadoop-3.2.4 hadoop
chown -R hadoop:hadoop /data01/bigdata/hadoop

2.修改环境变量

vim /etc/profile 添加
export HADOOP_HOME=/data01/bigdata/hadoop
export PATH=$HADOOP_HOME/bin:$HADOOP_HOME/sbin:$PATH

3:Hadoop集群配置=HDFS集群配置 + MapReduce集群配置 + Yarn集群配置

### Flink SQL 执行时因缺少 Hadoop 相关类导致的 `ExceptionInInitializerError` 和 `NoClassDefFoundError` 当在执行 Flink SQL 作业时遇到 `ExceptionInInitializerError` 并伴随 `NoClassDefFoundError: org/apache/hadoop/fs/FSDataOutputStream` 的问题,通常是因为某些必要的 Hadoop 类未被正确加载到 Flink 的运行环境中。以下是可能的原因以及解决方案: #### 原因分析 1. **缺失必要 JAR 包** 如果 `hadoop-common`, `hadoop-hdfs`, 或 `hadoop-mapreduce-client-core` 等核心依赖未被引入,则可能导致此类异常[^4]。 2. **JAR 包版本不匹配** 使用的不同组件(如 Flink, Hadoop)可能存在版本兼容性问题。如果使用的 Hadoop 版本与 Flink 不一致,可能会引发类加载失败的情况[^3]。 3. **classpath 配置不当** 即使所需的 JAR 已存在,但如果它们未被正确添加到 Flink 的 classpath 中,仍然会触发此错误[^1]。 --- #### 解决方案 ##### 方法一:手动添加 Hadoop 依赖至 Flink 可以通过修改 Flink 的配置文件或将所需 JAR 添加到指定目录来解决问题。 - **将 Hadoop JAR 放入 Flink lib 目录** 将 `hadoop-common`, `hadoop-hdfs`, 及 `hadoop-mapreduce-client-core` 等 JAR 文件复制到 Flink 安装路径下的 `lib` 目录中。 ```bash cp /path/to/hadoop-mapreduce-client-core-*.jar $FLINK_HOME/lib/ ``` - **验证是否存在冲突** 检查是否有重复或不同版本的 JAR 存在于 `$FLINK_HOME/lib` 下,若有则移除旧版或冗余项[^4]。 ##### 方法二:通过环境变量设置 Classpath 可以在启动脚本中显式声明 Hadoop 的 CLASSPATH 路径。 ```bash export HADOOP_CLASSPATH=$(hadoop classpath) ``` 随后重新启动 YARN session 或提交任务即可生效[^1]。 ##### 方法三:调整 Maven 构建文件 (适用于开发阶段) 对于基于 Maven 开发的应用项目,在项目的 `pom.xml` 中加入以下依赖项可确保编译期间包含所有必需库: ```xml <dependencies> <!-- Hadoop Common --> <dependency> <groupId>org.apache.hadoop</groupId> <artifactId>hadoop-common</artifactId> <version>3.2.4</version> </dependency> <!-- HDFS Client --> <dependency> <groupId>org.apache.hadoop</groupId> <artifactId>hadoop-hdfs-client</artifactId> <version>3.2.4</version> </dependency> <!-- MapReduce Core --> <dependency> <groupId>org.apache.hadoop</groupId> <artifactId>hadoop-mapreduce-client-core</artifactId> <version>3.2.4</version> </dependency> </dependencies> ``` 注意保持所选 Hadoop 版本号 (`3.2.4`) 与实际集群部署的一致性。 --- ### 示例代码片段 假设需要编写一段简单的 Java 程序测试连接远程 HDFS 是否正常工作,可以参考下面的例子: ```java import org.apache.hadoop.conf.Configuration; import org.apache.hadoop.fs.FileSystem; public class TestHDFSSetup { public static void main(String[] args) throws Exception { Configuration conf = new Configuration(); conf.set("fs.defaultFS", "hdfs://namenode-host:8020"); FileSystem fs = FileSystem.get(conf); System.out.println(fs.exists(new Path("/"))); } } ``` 确保该程序能够成功运行后再尝试复杂场景下的集成操作。 --- ### 总结 针对当前描述的现象——即由于缺乏特定 Hadoop 组件而导致初始化失败的问题,推荐优先采用方法一所述方式快速定位并修复;同时建议长期维护过程中建立统一管理机制以减少类似隐患的发生频率。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值