您的位置:

Hadoop环境变量配置文件——hadoop-env.sh

Apache Hadoop是一个分布式系统基础架构,能够处理大数据集。分布式计算是 Hadoop 的核心,它支持在大型计算机集群上快速并行运算。 Hadoop 项目包含一系列能够处理大型数据的工具和库。Hadoop-env.sh 是 Hadoop 全局环境变量配置文件,可以对 Hadoop 的运行环境做出补充配置,本文就从多个方面对 hadoop-env.sh 做详细的阐述。

一、配置JAVA_HOME

在运行 Hadoop 前需要配置好 Java 运行环境,Hadoop-env.sh 中默认情况下会去 $JAVA_HOME 下查找 Java 运行环境。可以通过设置一个固定的绝对路径来规范 Java 环境的查找路径,示例如下:

# 确定jdk安装位置
export JAVA_HOME=/usr/local/jdk1.8.0_191
export CLASSPATH=$JAVA_HOME/lib/:$CLASSPATH
export PATH=$JAVA_HOME/bin/:$PATH

二、配置HADOOP_HOME

Hadoop 程序在启动时需要指定Hadoop安装目录,为了方便在hadoop-env.sh中,可以定义好 Hadoop 安装目录。示例如下:

#指定hadoop安装目录
export HADOOP_HOME=/usr/local/hadoop-2.7.2

三、配置HADOOP_LOG_DIR

在运行 Hadoop 时需要日志记录,可以通过HADOOP_LOG_DIR指定日志输出目录。示例如下:

#指定hadoop日志文件目录
export HADOOP_LOG_DIR=/var/hadoop/logs

四、配置HDFS相关参数

在 Hadoop 的 hdfs-site.xml 文件中配置各种参数,对应的环境变量配置须在 hadoop-env.sh 中设置,下面介绍几个HDFS相关的参数:

1、hadoop.tmp.dir

默认情况下,HDFS数据块存储在/tmp目录中,可以通过hadoop.tmp.dir配置项自定义 Hadoop 中暂存数据的目录,示例如下:

#指定hadoop的临时目录
export HADOOP_OPTS='$HADOOP_OPTS -Djava.io.tmpdir=/usr/local/hadoop/tmp'

2、dfs.namenode.name.dir 和 dfs.datanode.data.dir

HDFS中两个最重要的目录是 NameNode namespace 目录 和 DataNode 数据块目录。以下是将目录指定为“/name”和“/data”的示例:

#指定名字节点数据元文件存放目录
export HADOOP_NAMENODE_OPTS="-Dhadoop.tmp.dir=/export/hadoop/tmp/dfs/namenode -Ddfs.namenode.name.dir=file:/var/hadoop/hdfs/namenode"

#指定数据节点block存放目录
export HADOOP_DATANODE_OPTS="-Dhadoop.tmp.dir=/export/hadoop/tmp/dfs/datanode -Ddfs.datanode.data.dir=file:/var/hadoop/hdfs/datanode"

五、HADOOP_USER_CLASSPATH_FIRST

在启动 Hadoop 的时候,可以从环境中预定义的位置中加载类;如果设置了环境变量 HADOOP_USER_CLASS_PATH ,则需要将用户类路径放到Hadoop默认类路径前面。示例如下:

#优先使用用户指定的classPath
export HADOOP_USER_CLASSPATH_FIRST=true

六、总结

Hadoop-env.sh 文件除了有这些我们讲到的常用环境变量外,还有一些我们并没有涉及到的其他环境变量。在使用 Hadoop 前,通过 hadoop-env.sh 预设好相应的系统环境,有利于 Hadoop 的运行。配置文件的好坏直接决定了Hadoop的稳定性,因此有必要在使用Hadoop时认真对待Hadoop-env.sh文件的配置项,以保证Hadoop系统的正常运行。