03-Hadoop安装

一、Hadoop 的安装有三种方式

  • 单机模式:直接解压,只支持MapReduce的测试,不支持HDFS,一般不用。

  • 伪分布式模式:单机通过多进程模拟集群方式安装,支持Hadoop所有功能。
    ​ 优点:功能完整。
    ​ 缺点:性能低下。学习测试用。

  • 完全分布式模式:集群方式安装,生产级别。

  • HA:高可用

二、伪分布式部署

1 初始环境:

JDK,JAVA_HOME,配置hosts,关闭防火墙,配置免密登录等。

注意:我们只将其安装在hadoop01节点上。

2 上传安装包并解压

安装包下载地址
链接:https://pan.baidu.com/s/1EffVCHanpJd-l6jKMi-lEw
提取码:xwzf

上传安装包到tar -xvzf hadoop-2.7.7 到/opt/softwares/ 目录下
并解压 tar -xvzf hadoop-2.7.7.tar.gz -C /opt/servers/

3 修改配置文件

3.1 修改hadoop-env.sh

vim /opt/servers/hadoop-2.7.7/etc/hadoop/hadoop-env.sh

修改

export JAVA_HOME=/opt/servers/jdk1.8.0_65
export HADOOP_CONF_DIR=/opt/servers/hadoop-2.7.7/etc/hadoop

3.2 修改 core-site.xml

核心配置文件:

  • namenode的所在位置
  • 数据的存储位置
vim /opt/servers/hadoop-2.7.7/etc/hadoop/core-site.xml

增加namenode配置、文件存储位置配置:粘贴代码部分到标签内

<property>
<!--用来指定hdfs的老大,namenode的地址-->
<name>fs.default.name</name>
<value>hdfs://hadoop01:8020</value>
</property> 

<property>
<!--用来指定hadoop运行时产生文件的存放目录-->  
<name>hadoop.tmp.dir</name>
<value>/opt/servers/hadoop-2.7.7/tmp</value>
</property>

3.3 修改 hdfs-site.xml

  • 设置副本数
  • 设置访问权限
vim /opt/servers/hadoop-2.7.7/etc/hadoop/hdfs-site.xml

配置包括自身在内的备份副本数量到标签内

<property>
<!--指定hdfs保存数据副本的数量,包括自己,默认为3-->
<!--伪分布式模式,此值必须为1-->
<name>dfs.replication</name>
<value>1</value>
</property>
 
<!--设置hdfs操作权限,false表示任何用户都可以在hdfs上操作文件-->
<property>
<name>dfs.permissions</name>
<value>false</value>
</property>

3.4 修改 mapred-site.xml

  • mapreduce执行环境,任务

说明:在/opt/servers/hadoop-2.7.7/etc/hadoop的目录下,只有一个mapred-site.xml.template文件,复制一个。

cp mapred-site.xml.template mapred-site.xml

vim /opt/servers/hadoop-2.7.7/etc/hadoop/mapred-site.xml

配置mapreduce运行在yarn上:粘贴高亮部分到标签内

<property> 
<!--指定mapreduce运行在yarn上-->
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>

3.5 修改 yarn-site.xml

  • resourcemanager所在节点位置
  • nodemanager获取数据的方式
vim /opt/servers/hadoop-2.7.7/etc/hadoop/yarn-site.xml

配置:粘贴高亮部分到标签内

<property>
<!--指定yarn的老大resourcemanager的地址-->
<name>yarn.resourcemanager.hostname</name>
<value>hadoop01</value>
</property>

<property>
<!--NodeManager获取数据的方式-->
<name>yarn.nodemanager.aux-services</name>
 <value>mapreduce_shuffle</value>
</property>

3.6 修改slaves

vim /opt/servers/hadoop-2.7.7/etc/hadoop/slaves

修改

hadoop01

3.7 配置hadoop的环境变量

vim /etc/profile
export HADOOP_HOME=/opt/servers/hadoop-2.7.7
export PATH=:$HADOOP_HOME/bin:$HADOOP_HOME/sbin:$PATH

配置完成之后生效 source /etc/profile

环境变量配置完成,测试环境变量是否生效 echo $HADOOP_HOME

执行 hadoophadoop version

4 启动

4.1 初始化

hdfs namenode -format

在这里插入图片描述

4.2 启动

start-all.sh  #启动所有服务

# jps查看启动的进程

单独启动一个服务

start-dfs.sh  #启动hdfs服务
start-yarn.sh #启动yarn服务
hadoop-daemon.sh start namenode

4.3 停止

stop-all.sh

4.4访问浏览器

windows的浏览器中访问 http://hadoop01:50070/
在这里插入图片描述
安装成功

4.5 安装失败

如果没有成功(进程数不够)
1.stop-all.sh 停掉hadoop所有进程
2.删掉hadoop2.7.7下的tmp文件
3.hdfs namenode -format 重新初始化(出现successfully证明成功),如果配置文件报错,安装报错信息修改相应位置后重新执行第二步。
4.start-all.sh 启动hadoop

三、完全分布式部署

安装环境服务部署规划

服务器IP192.168.65.101192.168.65.102192.168.65.103
NameNode
HDFS
DataNodeDataNodeDataNode
YARNResourceManager
NodeManagerNodeManagerNodeManager
MapReduceJobHistoryServer

先在第一台机器hadoop01进行部署

注意:如果已安装伪分布模式,先删除格式化后生成的数据文件,其他请略过。

执行命令停掉所有服务 stop-all.sh
删除tmp目录 rm -rf tmp

1进入目录

cd /opt/servers

2 上传安装包并解压

tar -xvzf hadoop-2.7.7.tar.gz -C ../servers/

3 修改配置文件

位置:/opt/servers/hadoop-2.7.7/etc/hadoop

3.1修改hadoop-env.sh

vim /opt/servers/hadoop-2.7.7/etc/hadoop/hadoop-env.sh

修改

export JAVA_HOME=/opt/servers/jdk1.8.0_65
export HADOOP_CONF_DIR=/opt/servers/hadoop-2.7.7/etc/hadoop

3.2 修改 core-site.xml

vim /opt/servers/hadoop-2.7.7/etc/hadoop/core-site.xml

增加namenode配置、文件存储位置配置:粘贴代码部分到标签内

<property>
<!--用来指定hdfs的老大,namenode的地址-->
<name>fs.default.name</name>
<value>hdfs://hadoop01:8020</value>
</property> 
<property>
<!--用来指定hadoop运行时产生文件的存放目录-->  
<name>hadoop.tmp.dir</name>
<value>/opt/servers/hadoop-2.7.7/tmp</value>
</property>

3.3 修改 hdfs-site.xml

vim /opt/servers/hadoop-2.7.7/etc/hadoop/hdfs-site.xml
  • 配置包括自身在内的备份副本数量到标签内
<property>
<!--指定hdfs保存数据副本的数量,包括自己,默认为3-->
<!--伪分布式模式,此值必须为1-->
<name>dfs.replication</name>
<value>2</value>
</property>
<!--设置hdfs操作权限,false表示任何用户都可以在hdfs上操作文件-->
 <property>
<name>dfs.permissions</name>
<value>false</value>
</property>

3.4 修改 mapred-site.xml

说明:在/opt/servers/hadoop-2.7.7/etc/hadoop的目录下,只有一个mapred-site.xml.template文件,复制一个。

cp mapred-site.xml.template mapred-site.xml
vim /opt/servers/hadoop-2.7.7/etc/hadoop/mapred-site.xml

配置mapreduce运行在yarn上:粘贴高亮部分到标签内

<property> 
<!--指定mapreduce运行在yarn上-->
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>

3.5 修改 yarn-site.xml

vim /opt/servers/hadoop-2.7.7/etc/hadoop/yarn-site.xml
  • 配置:粘贴高亮部分到标签内
<property>
<!--指定yarn的老大resourcemanager的地址-->
<name>yarn.resourcemanager.hostname</name>
<value>hadoop01</value>
</property>
<property>
<!--NodeManager获取数据的方式-->
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>

3.6 修改slaves

vim /opt/servers/hadoop-2.7.7/etc/hadoop/slaves

修改

hadoop01
hadoop02
hadoop03

3.7 配置hadoop的环境变量

vim /etc/profile
export HADOOP_HOME=/opt/servers/hadoop-2.7.7
export PATH=:$HADOOP_HOME/bin:$HADOOP_HOME/sbin:$PATH

配置完成之后生效

source /etc/profile

环境变量配置完成,测试环境变量是否生效

echo $HADOOP_HOME

3.8 分发文件到hadoop02、hadoop03服务器

cd /opt/servers/
scp -r hadoop-2.7.7/ hadoop02:$PWD
scp -r hadoop-2.7.7/ hadoop03:$PWD

3.9 hadoop02、hadoop03服务器配置hadoop的环境变量

vim /etc/profile
export HADOOP_HOME=/opt/servers/hadoop-2.7.7
export PATH=:$HADOOP_HOME/bin:$HADOOP_HOME/sbin:$PATH

配置完成之后生效

source /etc/profile

环境变量配置完成,测试环境变量是否生效

echo $HADOOP_HOME

4 启动

4.1 初始化

hdfs namenode -format

4. 2 启动

start-all.sh

4.3 停止

stop-all.sh

4.4 测试

jps

4.5 停止服务

stop-all.sh

4.6 补充:可以按照组件启动服务

start-dfs.sh
start-yarn.sh

也可以单独启动一个服务

在主节点上使用以下命令启动 HDFS NameNode:
hadoop-daemon.sh start namenode 
在每个从节点上使用以下命令启动 HDFS DataNode: 
hadoop-daemon.sh start datanode 
在主节点上使用以下命令启动 YARN ResourceManager: 
yarn-daemon.sh  start resourcemanager 
在每个从节点上使用以下命令启动 YARN nodemanager: 
yarn-daemon.sh start nodemanager 

5 访问浏览器

windows的浏览器中访问
hdfs集群访问地址
http://hadoop01:50070/
yarn集群访问地址
http://hadoop01:8088/
安装成功!

四、hadoop集群初体验

1 HDFS 使用初体验

从Linux 本地上传一个文本文件到 hdfs 的/test/input 目录下

hadoop fs -mkdir -p /test/input
hadoop fs -put README.txt /test/input

在这里插入图片描述

2 mapreduce程序初体验

在 Hadoop 安装包的

hadoop2.7.7/share/hadoop/mapreduce 下有官方自带的mapreduce 程序。我们可以使用如下的命令进行运行测试。

示例程序jar:

 hadoop-mapreduce-examples-2.7.7.jar

计算圆周率:

hadoop jar /opt/servers/hadoop-2.7.7/share/hadoop/mapreduce/hadoop-mapreduce-examples-2.7.7.jar pi 2 5

关于圆周率的估算,感兴趣的可以查询资料 Monte Carlo 方法来计算 Pi 值。

### 解决方案概述 Hadoop 的警告消息“Unable to load native-hadoop library for your platform”通常表示 Hadoop 尝试加载其本地库失败。这可能是由于缺少必要的依赖项、不兼容的操作系统版本或配置错误引起的。 以下是针对此问题的分析和解决方案: --- #### 1. **确认操作系统支持** Hadoop 的原生库可能需要特定的操作系统环境和支持的 GLIBC 版本。如果系统的 GLIBC 版本低于所需版本,则会触发 `java.lang.UnsatisfiedLinkError` 错误[^2]。 可以通过以下命令检查当前系统的 GLIBC 版本: ```bash ldd --version ``` 如果发现 GLIBC 版本较低(例如低于 2.14),则需要升级操作系统的 GLIBC 或考虑使用其他替代方法运行 Hadoop--- #### 2. **验证 libhadoop.so 文件是否存在** 确保 Hadoop 安装目录下的 `lib/native` 子目录存在并包含文件 `libhadoop.so.*`。如果没有该文件,可以从官方 Apache Hadoop 镜像站点下载对应平台的二进制包[^4],或者重新编译适合目标平台的 Hadoop 原生库。 --- #### 3. **设置 JAVA_LIBRARY_PATH 环境变量** 即使 `libhadoop.so` 文件存在于指定路径下,Java 进程仍可能找不到它。此时可以尝试通过设置 `JAVA_LIBRARY_PATH` 来显式指向本地库的位置。修改 Hadoop 启动脚本中的环境变量部分如下: ```bash export JAVA_LIBRARY_PATH=/path/to/hadoop/lib/native:$JAVA_LIBRARY_PATH export LD_LIBRARY_PATH=$JAVA_LIBRARY_PATH:$LD_LIBRARY_PATH ``` 上述更改应添加到 `$HADOOP_HOME/etc/hadoop/hadoop-env.sh` 文件中以持久化生效。 --- #### 4. **忽略 Native Library 警告** 如果不希望强制启用本地库功能,也可以禁用对它的加载需求。编辑核心配置文件 `core-site.xml` 并加入以下属性定义: ```xml <property> <name>hadoop.native.lib</name> <value>false</value> </property> ``` 这样虽然不会利用某些性能优化特性,但能有效避免因缺失而产生的日志干扰[^1]。 --- #### 5. **测试集群状态与 Web UI 访问** 完成以上调整之后重启整个 Hadoop 集群服务,并访问管理界面来检验修复效果。对于单机模式部署而言,默认情况下 NameNode 和 ResourceManager 应分别监听端口 50070 及 8088;然而实际地址可能会依据具体安装方式有所差异[^3]。因此建议先查阅文档再确定确切链接形式。 --- ### 总结 综上所述,“unable to load native-hadoop library”的根本原因多源于基础软件栈适配不当所致。按照前述指导逐一排查即可定位症结所在进而妥善处理之。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值