# 在这里设置特定于hadoop的环境变量.
# 惟一需要的环境变量是JAVA_HOME。其他所有选项都是可选的。在运行分布式配置时,最好在这个文件中设置JAVA_HOME,以便正确地在上面定义它远程节点
# 要使用的java实现。要求
export JAVA_HOME=/home/hadoop/software/jdk1.8.0_171
export HADOOP_HOME_WARN_SUPPRESS=1
# Hadoop主目录
export HADOOP_HOME=${HADOOP_HOME:-/usr/hdp/2.6.5.0-292/hadoop}
# Hadoop配置目录
# 安全HDP 2.0 datanode所需的jsvc路径
export JSVC_HOME=/usr/lib/bigtop-utils
# 要使用的堆的最大数量(单位为MB)。默认值为1000。
export HADOOP_HEAPSIZE="1024"
export HADOOP_NAMENODE_INIT_HEAPSIZE="-Xms1024m"
# 额外的Java运行时选项。默认空.
export HADOOP_OPTS="-Djava.net.preferIPv4Stack=true ${HADOOP_OPTS}"
USER="$(whoami)"
# 指定时附加到HADOOP_OPTS的命令特定选项
HADOOP_JOBTRACKER_OPTS="-server -XX:ParallelGCThreads=8 -XX:+UseConcMarkSweepGC -XX:ErrorFile=/data/var/log/hadoop/$USER/hs_err_pid%p.log -XX:NewSize=200m -XX:MaxNewSize=200m -Xloggc:/data/var/log/hadoop/$USER/gc.log-`date +'%Y%m%d%H%M'` -verbose:gc -XX:+PrintGCDetails -XX:+PrintGCTimeStamps -XX:+PrintGCDateStamps -Xmx1024m -Dhadoop.security.logger=INFO,DRFAS -Dmapred.audit.logger=INFO,MRAUDIT -Dhadoop.mapreduce.jobsummary.logger=INFO,JSA ${HADOOP_JOBTRACKER_OPTS}"
HADOOP_TASKTRACKER_OPTS="-server -Xmx1024m -Dhadoop.security.logger=ERROR,console -Dmapred.audit.logger=ERROR,console ${HADOOP_TASKTRACKER_OPTS}"
SHARED_HADOOP_NAMENODE_OPTS="-server -XX:ParallelGCThreads=8 -XX:+UseConcMarkSweepGC -XX:ErrorFile=/data/var/log/hadoop/$USER/hs_err_pid%p.log -XX:NewSize=128m -XX:MaxNewSize=128m -Xloggc:/data/var/log/hadoop/$USER/gc.log-`date +'%Y%m%d%H%M'` -verbose:gc -XX:+PrintGCDetails -XX:+PrintGCTimeStamps -XX:+PrintGCDateStamps -XX:CMSInitiatingOccupancyFraction=70 -XX:+UseCMSInitiatingOccupancyOnly -Xms1024m -Xmx1024m -Dhadoop.security.logger=INFO,DRFAS -Dhdfs.audit.logger=INFO,DRFAAUDIT"
export HADOOP_NAMENODE_OPTS="${SHARED_HADOOP_NAMENODE_OPTS} -XX:OnOutOfMemoryError=\"/usr/hdp/current/hadoop-hdfs-namenode/bin/kill-name-node\" -Dorg.mortbay.jetty.Request.maxFormContentSize=-1 ${HADOOP_NAMENODE_OPTS}"
export HADOOP_DATANODE_OPTS="-server -XX:ParallelGCThreads=4 -XX:+UseConcMarkSweepGC -XX:ErrorFile=/data/var/log/hadoop/$USER/hs_err_pid%p.log -XX:NewSize=200m -XX:MaxNewSize=200m -Xloggc:/data/var/log/hadoop/$USER/gc.log-`date +'%Y%m%d%H%M'` -verbose:gc -XX:+PrintGCDetails -XX:+PrintGCTimeStamps -XX:+PrintGCDateStamps -Xms1024m -Xmx1024m -Dhadoop.security.logger=INFO,DRFAS -Dhdfs.audit.logger=INFO,DRFAAUDIT ${HADOOP_DATANODE_OPTS} -XX:CMSInitiatingOccupancyFraction=70 -XX:+UseCMSInitiatingOccupancyOnly"
export HADOOP_SECONDARYNAMENODE_OPTS="${SHARED_HADOOP_NAMENODE_OPTS} -XX:OnOutOfMemoryError=\"/usr/hdp/current/hadoop-hdfs-secondarynamenode/bin/kill-secondary-name-node\" ${HADOOP_SECONDARYNAMENODE_OPTS}"
# 下面的命令适用于多个命令(fs、dfs、fsck、distcp等)
export HADOOP_CLIENT_OPTS="-Xmx${HADOOP_HEAPSIZE}m $HADOOP_CLIENT_OPTS"
HADOOP_NFS3_OPTS="-Xmx1024m -Dhadoop.security.logger=ERROR,DRFAS ${HADOOP_NFS3_OPTS}"
HADOOP_BALANCER_OPTS="-server -Xmx1024m ${HADOOP_BALANCER_OPTS}"
# 在安全的数据阳极上,用户可以在删除特权后运行数据阳极
export HADOOP_SECURE_DN_USER=${HADOOP_SECURE_DN_USER:-""}
#额外的ssh选项。默认空
export HADOOP_SSH_OPTS="-o ConnectTimeout=5 -o SendEnv=HADOOP_CONF_DIR"
# 日志文件存储的地方。$ HADOOP_HOME /默认日志。
export HADOOP_LOG_DIR=/data/var/log/hadoop/$USER
# 历史服务器日志
export HADOOP_MAPRED_LOG_DIR=/data/var/log/hadoop-mapreduce/$USER
# 日志文件存储在安全数据环境中的何处.
export HADOOP_SECURE_DN_LOG_DIR=/data/var/log/hadoop/$HADOOP_SECURE_DN_USER
# 文件命名远程从主机。$ HADOOP_HOME / conf /默认的奴隶.
# export HADOOP_SLAVES=${HADOOP_HOME}/conf/slaves
# host:path 应该从哪里同步hadoop代码。默认设置.
# export HADOOP_MASTER=master:/home/$USER/src/hadoop
# 从命令之间的睡眠时间。默认设置。这在大型集群中非常有用,例如,在大型集群中,从rsync可能比主rsync到达得更快。
# export HADOOP_SLAVE_SLEEP=0.1
# pid文件存储的目录。默认/ tmp。
export HADOOP_PID_DIR=/var/run/hadoop/$USER
export HADOOP_SECURE_DN_PID_DIR=/var/run/hadoop/$HADOOP_SECURE_DN_USER
# 历史服务PID
export HADOOP_MAPRED_PID_DIR=/var/run/hadoop-mapreduce/$USER
YARN_RESOURCEMANAGER_OPTS="-Dyarn.server.resourcemanager.appsummary.logger=INFO,RMSUMMARY"
# 表示hadoop实例的字符串。$ USER默认情况下.
export HADOOP_IDENT_STRING=$USER
# 守护进程的调度优先级。见“人好”.
# export HADOOP_NICENESS=10
# 添加数据库库
JAVA_JDBC_LIBS=""
if [ -d "/usr/share/java" ]; then
for jarFile in `ls /usr/share/java | grep -E "(mysql|ojdbc|postgresql|sqljdbc)" 2>/dev/null`
do
JAVA_JDBC_LIBS=${JAVA_JDBC_LIBS}:$jarFile
done
fi
# 向hadoop类路径添加库——有些可能不需要冒号,因为它们已经包含冒号了
export HADOOP_CLASSPATH=${HADOOP_CLASSPATH}${JAVA_JDBC_LIBS}
# 设置hdfs命令行路径
export HADOOP_LIBEXEC_DIR=/usr/hdp/2.6.5.0-292/hadoop/libexec
# 主要是hadoop 2.0所需要的
export JAVA_LIBRARY_PATH=${JAVA_LIBRARY_PATH}:/usr/hdp/2.6.5.0-292/hadoop/lib/native/Linux-amd64-64
export HADOOP_OPTS="-Dhdp.version=$HDP_VERSION $HADOOP_OPTS"
# 修正临时的错误,当ulimit从conf文件没有拾起,没有完全重新登录。只有在将DN作为根运行时才需要修复
if [ "$command" == "datanode" ] && [ "$EUID" -eq 0 ] && [ -n "$HADOOP_SECURE_DN_USER" ]; then
ulimit -n 128000
fi
# 如果需要,在zookeper znodes上启用acl