Hadoop简介、安装与环境变量配置_hadoop环境变量

Hadoop作为大数据框架,更多的是作为集群面向服务器使用,所以本系列的内容以Linux服务器为主。为更好的学习使用Hadoop,在低成本的条件下,推荐可以通过docker、podman之类的容器手段启动容器开启集群的方式来更好的学习Hadoop(有条件的可以选择虚拟机或上云)。

Hadoop是一个用Java语言开发的大数据框架,Hadoop的使用依赖于Jre,所以在正式安装配置Hadoop前,我们需要先安装配置好Java环境。
目前最新版的Hadoop官方文档显示,Hadoop支持Java8和Java11(运行时)。为了更好的兼容Hadoop的使用,本系统采用OpenJDK SE 8版本。

OpenJDK SE 8下载

wget https://download.java.net/openjdk/jdk8u43/ri/openjdk-8u43-linux-x64.tar.gz

解压到指定目录

大数据的学习和使用都是集群化的,为更好的进行集群设置,请尽量保证相同的操作系统和应用层配置。如,将软件和配置文件写在指定路径下,不要随意修改。

mkdir -p ${Software}/jdk
tar -xzvf openjdk-8u43-linux-x64.tar.gz --strip-components 1 -C ${Software}/jdk

  • 直接解压会生成父目录,Java的版本不同会造成父目录的不同,所以在此处使用指定路径的方式,方便后期更好的升级环境
  • 在这里和之后中通过${}表明根据自己的环境自定义值
  • 指定路径解压前,通过mkdir -p命令确保指定路径存在
  • –strip-components Number:解压时清除Number个引导目录,一般情况下,Number为1表示不包含打包前原目录
  • -C:指定解压路径

Java安装与环境变量配置

Linux的环境变量设置一般为在相应的文件中添加环境变量信息。根据使用权限的不同,可以配置不同的环境变量。

  • 当前用户环境变量:~/.bash_profile
    • ~:当前用户的工作路径
  • 全局环境变量:/etc/profile

在这里我们以全局环境变量为例,配置Java环境变量。Java环境变量主要为配置JAVA_HOMEPATH。Java环境变量可以通过如vim手动打开写入方式,也可通过标准流输出追加文件内容方式写入,为更好的方便后期集群中环境脚本的开发,这里采用标准流输出追加文件内容方式配置环境变量。

echo "# >>> jdk initialize >>>" >> /etc/profile
echo "export JAVA\_HOME=${Software}/jdk" >> /etc/profile
echo "export PATH=${JAVA\_HOME}/bin:${PATH}" >> /etc/profile
echo "# <<< jdk initialize <<<" >> /etc/profile

  • 开头和结尾的主要是为了标识Java安装位置,为注释内容,不生效
  • Linux中>>表示为文档后追加文件内容
  • 若无法写入,检查是否是权限的问题,可以切换为root账号执行操作。或写入自己环境中的配置文件

重载环境变量配置文件

将环境变量写入配置文件后,环境变量不会立即生效,需要重新加载配置文件,Linux中使用source命令重新加载配置文件。

source /etc/profile

环境配置测试

执行java -versionjavac -version有正确的输出即表示Java环境配置成功。

$ java -version
openjdk version "1.8.0\_43"
OpenJDK Runtime Environment (build 1.8.0_43-b03)
OpenJDK 64-Bit Server VM (build 25.40-b25, mixed mode)

$ javac -version
javac 1.8.0_43

Hadoop安装与环境变量配置

固定IP

在集群中,最重要的就是主机与主机之间能够相互访问到。所以需要通过相应的标识来识别到对应的节点。在计算机中,可以通过域名和IP地址的方式识别到相应的服务器,在Hadoop集群的配置中也是如此。在同一网段下,进行IP设置,可以考虑采用静态IP的方式而不是DHCP动态IP,防止节点IP发生变化无法访问。

  • 在使用云系统的情况下,请先自己购买云服务器的平台先设置VPC(Virtual Private Cloud)云虚拟局域网,然后在购买主机,保证购买的主机在同一个局域网,能够相互访问
  • 本系统采用容器的方式组集群,借助容器的VIP虚拟IP的概念,可以不用考虑固定容器内部IP,而是通过容器名(类似于域名)的方式访问节点
  • 虚拟机组集群用户可网上自行搜索资料,固定自己的IP

为方便访问子节点(IP不好记),可以考虑为自己的集群节点配置一个本地的host,这样可以直接用类似域名的方式直接访问集群节点。
Linux中将host主机名映射配置写在/etc/hosts文件中,这样之后直接访问`

H

o

s

t

M

a

p

N

a

m

e

{HostMapName}

HostMapName就可以访问相应的节点。

sudo echo "${StaticIP} ${HostMapName}" >> /etc/hosts

设置SSH免密登录

Hadoop在启动时,只需要在主节点执行Hadoop执行脚本,Hadoop会自动根据配置启动主从节点的服务。但是Hadoop在启动服务时,主节点需要访问所有节点,然后从相应节点中启动守护进程,所以配置主节点到所有节点之间的免密登录(包括主节点到主节点自身之间的免密登录)。

生成SSH密钥
ssh-keygen -t rsa -b 4096 -f ~/.ssh/id_rsa -N "" -q

  • -t:指定生成密钥的算法参数
    • rsa:默认非对称加密算法,加解密速度慢,生成时间慢,安全性不如ed25519算法,但兼容性高,应用广泛
    • ed25519:带椭圆曲线的非对称加密算法,加解密速度快,生成速度快,安全性更高
    • ed25519-sk:-sk代表安全密钥
    • dsa:安全性不高,基本不在使用,在部分的场景中已被遗弃
    • ecdsa:带椭圆曲线的dsa算法
    • ecdsa-sk
  • -b:指定密钥长度
  • -f:保存密钥的文件路径
  • -N:提供一个新密码,""表示密码为空
  • -q:静默模式,直接输出密钥对,不输出实现过程中产生的信息
  • 通过设置-f-N-q参数,直接生成密钥,而不是交互式生成密钥,方便后期集群脚本的开发
设置免密登录
ssh-copy-id ${HostMapName}

使用ssh-copy-id可以将公钥传输到指定的主机上。但是在使用ssh-copy-id传输公钥时,需要输入相应的账户和密码,所以可以通过sshpass来执行免密操作。

sshpass -p ${USER\_PASSWORD} ssh-copy-id ${HostMapName}

Hadoop的下载

Hadoop 下载地址

这里选择写本文时的最新版3.3.6进行下载

wget https://dlcdn.apache.org/hadoop/common/hadoop-3.3.6/hadoop-3.3.6.tar.gz 

解压到指定位置

tar -xzvf hadoop-3.3.6.tar.gz --strip-components 1 -C ${Software}/hadoop

环境变量配置

系统环境变量
echo "# >>> hadoop initialize >>>" >> /etc/profile
echo "export HADOOP\_HOME=${Software}/hadoop" >> /etc/profile
echo "export HADOOP\_CONF\_DIR=${HADOOP\_CONF\_DIR}/etc/hadoop" >> /etc/profile
echo "export HADOOP\_LOG\_DIR=${HADOOP\_LOG\_DIR}" >> /etc/profile
echo "export HADOOP\_DATA\_HOME=${HADOOP\_DATA\_HOME}" >> /etc/profile
echo "export PATH=${HADOOP\_HOME}/bin:${PATH}" >> /etc/profile
echo "export PATH=${HADOOP\_HOME}/sbin:${PATH}" >> /etc/profile
echo "# <<< hadoop initialize <<<" >> /etc/profile

  • bin:一般存放着软件的相关执行文件
  • sbin:hadoop的super bin目录。是Hadoop管理脚本所在的目录,主要包含HDFS和YARN中各类服务的启动/关闭脚本。
${HADOOP_CONF_DIR}/workers工作节点配置

workers主要功能为记录所有的数据节点的主机名或IP地址。将集群的所有节点的主机名或者IP地址写入workers文件即可。

node1
node2
node3

${HADOOP_CONF_DIR}/hadoop-env.sh环境变量配置

在Hadoop中,一些环境变量无法读取系统的环境变量,所以需要配置在hadoop-env.sh文件中,理论上讲,只需要配置JAVA_HOME路径,其他的可以采用默认路径。

echo "export JAVA\_HOME=${JAVA\_HOME}" >> ${HADOOP\_CONF\_DIR}/hadoop-env.sh
<think>好的,用户现在问的是怎么设置Hadoop环境变量。之前他们遇到了找不到文件的问题,现在可能已经解决了路径或者权限的问题,现在想进一步配置环境变量。首先,我需要回想之前给出的回答中提到的环境变量相关的内容,比如在“路径配置错误”部分提到过检查HADOOP_HOME和JAVA_HOME的设置。用户现在可能想详细了解如何正确设置这些变量,避免之前的错误。 接下来,我需要考虑用户的使用场景。他们可能是在搭建Hadoop集群的过程中,或者在配置多节点环境,需要确保所有节点环境变量一致。用户的身份可能是刚开始学习Hadoop的开发者或者系统管理员,对Linux环境变量配置有一定了解,但可能不够熟悉Hadoop的具体要求。 用户的需求是设置环境变量,但可能更深层次的需求是确保Hadoop能够正常运行,避免因为环境变量配置错误导致的各种问题,比如命令找不到、启动失败等。因此,在回答时不仅要给出步骤,还需要强调关键点,比如路径的正确性、不同配置文件的作用、如何验证设置是否生效等。 需要分步骤讲解,首先设置HADOOP_HOME,然后设置PATH,接着配置Java环境,可能还要提到Hadoop自带的配置文件(如hadoop-env.sh),以及系统级和用户级的配置文件的区别。另外,考虑到用户可能在不同的操作系统或者不同的Shell(比如bash、zsh)环境下,需要给出通用的方法,同时提醒他们根据实际情况调整。 还要注意用户可能的误区,比如直接在命令行中临时设置变量导致重启后失效,或者修改了错误的配置文件。需要提醒他们将环境变量写入正确的启动文件,并说明测试方法,比如用echo命令检查变量是否正确加载。此外,可能还需要提到多节点环境下如何同步环境变量,或者权限问题,比如是否需要使用root权限修改系统级配置文件。 最后,总结关键点,强调验证步骤的重要性,确保用户按照步骤操作后能正确设置环境变量,避免后续出现问题。同时,可以建议用户在修改配置文件前备份,防止配置错误导致系统问题。</think>以下是设置Hadoop环境变量的完整指南,分步骤说明: --- ### 一、核心环境变量清单 必须配置的3个关键变量: 1. **HADOOP_HOME** Hadoop安装根目录 ```bash export HADOOP_HOME=/opt/hadoop-3.3.6 ``` 2. **PATH** 添加Hadoop可执行文件路径 ```bash export PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin ``` 3. **JAVA_HOME** Hadoop运行依赖的JDK路径 ```bash export JAVA_HOME=/usr/java/jdk1.8.0_381 ``` --- ### 二、配置方法(按优先级排序) #### 方法1:全局配置(推荐) **适用场景**:所有用户生效 **配置文件**:`/etc/profile` 或 `/etc/profile.d/hadoop.sh` ```bash sudo nano /etc/profile.d/hadoop.sh ``` ```bash # 添加以下内容 export HADOOP_HOME=/opt/hadoop-3.3.6 export PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin export JAVA_HOME=/usr/java/jdk1.8.0_381 ``` #### 方法2:用户级配置 **适用场景**:仅当前用户生效 **配置文件**:`~/.bashrc` 或 `~/.bash_profile` ```bash nano ~/.bashrc ``` ```bash # 添加相同内容 export HADOOP_HOME=/opt/hadoop-3.3.6 export PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin export JAVA_HOME=/usr/java/jdk1.8.0_381 ``` #### 方法3:Hadoop专用配置 **适用场景**:Hadoop进程运行时专用 **配置文件**:`$HADOOP_HOME/etc/hadoop/hadoop-env.sh` ```bash # 找到并修改以下参数 export JAVA_HOME=/usr/java/jdk1.8.0_381 export HADOOP_HOME=/opt/hadoop-3.3.6 ``` --- ### 三、生效验证 1. **立即生效** ```bash source /etc/profile # 全局配置生效 source ~/.bashrc # 用户级配置生效 ``` 2. **验证配置** ```bash echo $HADOOP_HOME # 应返回/opt/hadoop-3.3.6 hadoop version # 应显示Hadoop版本信息 which hdfs # 应显示$HADOOP_HOME/bin/hdfs ``` --- ### 四、关键注意事项 1. **路径一致性** - `JAVA_HOME`必须指向JDK安装目录,不是JRE目录 - Hadoop安装路径不要包含空格或中文 2. **配置文件优先级** ```text hadoop-env.sh > ~/.bashrc > /etc/profile ``` 3. **多节点集群** 所有工作节点需保持环境变量配置完全一致 4. **SSH连接问题** 如果使用SSH远程执行命令,需确保目标节点的环境变量已正确加载 --- ### 五、典型错误排查 1. **命令未找到** ```bash # 检查PATH是否包含$HADOOP_HOME/bin echo $PATH | tr ':' '\n' | grep hadoop ``` 2. **Java版本冲突** ```bash $JAVA_HOME/bin/java -version # 验证实际使用的JDK ``` 3. **权限问题** ```bash ls -ld $HADOOP_HOME # 确保执行用户有读取权限 ``` --- **推荐配置流程**: 1. 在`/etc/profile.d/`创建专用配置文件 2. 在`hadoop-env.sh`中补充Java路径 3. 通过`source`命令激活配置 4. 使用`hadoop checknative`验证环境完整性
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值