core-site.xml
<!-- 指定HDFS中NameNode的地址 -->
<property>
<name>fs.defaultFS</name>
<value>hdfs://hadoop101:9000</value>
</property>
<!-- 指定Hadoop运行时产生文件的存储目录 -->
<property>
<name>hadoop.tmp.dir</name>
<value>/opt/module/hadoop-2.7.2/data/tmp</value>
</property>
<!-- 启用回收站 -->
<property>
<name>fs.trash.interval</name>
<value>1</value>
</property>
<!-- 修改访问垃圾回收站用户名称,默认是dr.who,修改为testuser用户 -->
<property>
<name>hadoop.http.staticuser.user</name>
<value>testuser</value>
</property>
hdfs-site.xml
<!-- 指定HDFS副本的数量 -->
<property>
<name>dfs.replication</name>
<value>3</value>
</property>
<!-- 指定Hadoop辅助名称节点主机配置 -->
<property>
<name>dfs.namenode.secondary.http-address</name>
<value>hadoop104:50090</value>
</property>
<!-- Namenode多目录配置(看自己需要) -->
<property>
<name>dfs.namenode.name.dir</name>
<value>file:///${hadoop.tmp.dir}/dfs/name1,file:///${hadoop.tmp.dir}/dfs/name2</value>
</property>
<!-- Datanode多目录配置(看自己需要) -->
<property>
<name>dfs.datanode.data.dir</name>
<value>file:///${hadoop.tmp.dir}/dfs/data1,file:///${hadoop.tmp.dir}/dfs/data2</value>
</property>
<!-- 以下两个跟Datanode超时相关 -->
<!-- 单位是 毫秒 -->
<property>
<name>dfs.namenode.heartbeat.recheck-interval</name>
<value>300000</value>
</property>
<!-- 单位是 秒 -->
<property>
<name>dfs.heartbeat.interval</name>
<value>3</value>
</property>
<!-- 白名单配置 -->
<property>
<name>dfs.hosts</name>
<value>/opt/module/hadoop-2.7.2/etc/hadoop/dfs.hosts</value>
</property>
<!-- 黑名单配置 -->
<property>
<name>dfs.hosts.exclude</name>
<value>/opt/module/hadoop-2.7.2/etc/hadoop/dfs.hosts.exclude</value>
</property>
yarn-site.xml
<!-- Reducer获取数据的方式 -->
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
<!-- 指定YARN的ResourceManager的地址 -->
<property>
<name>yarn.resourcemanager.hostname</name>
<value>hadoop101</value>
</property>
<!-- 日志聚集功能使能 -->
<property>
<name>yarn.log-aggregation-enable</name>
<value>true</value>
</property>
<!-- 日志保留时间设置7天 -->
<property>
<name>yarn.log-aggregation.retain-seconds</name>
<value>604800</value>
</property>
mapred-site.xml
(对mapred-site.xml.template重新命名为) mapred-site.xml
<!-- 指定MR运行在YARN上 -->
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
mapred-site.xml
<!-- 历史服务器端地址 -->
<property>
<name>mapreduce.jobhistory.address</name>
<value>hadoop101:10020</value>
</property>
<!-- 历史服务器web端地址 -->
<property>
<name>mapreduce.jobhistory.webapp.address</name>
<value>hadoop101:19888</value>
</property>
hdfs-default.xml
<!-- Checkpoint时间设置 -->
<property>
<name>dfs.namenode.checkpoint.period</name>
<value>3600</value>
</property>
<property>
<name>dfs.namenode.checkpoint.txns</name>
<value>1000000</value>
<description>操作动作次数</description>
</property>
<property>
<name>dfs.namenode.checkpoint.check.period</name>
<value>60</value>
<description> 1分钟检查一次操作次数</description>
</property >
配置JAVA_HOME
hadoop-env.sh
yarn-env.sh
mapred-env.sh
一般xxxxx-env.sh只需要配置JAVA_HOME环境变量
Hadoop常用命令和注意事项
格式化Namenode
bin/hdfs namenode -format
启动Namenode
sbin/hadoop-daemon.sh start namenode
启动Datanode
sbin/hadoop-daemon.sh start datanode
web端查看HDFS文件系统
http://hadoop101:50070/dfshealth.html#tab-overview
查看产生的Log日志
/opt/module/hadoop-2.7.2/logs
为什么不能一直格式化NameNode,格式化NameNode,要注意什么?
注意:格式化NameNode,会产生新的集群id,导致NameNode和DataNode的集群id不一致,集群找不到已往数据。所以,格式NameNode时,一定要停止相关进程,删除data数据和log日志,然后再格式化NameNode。
启动Yarn集群
(a)启动前必须保证NameNode和DataNode已经启动
(b)启动ResourceManager
sbin/yarn-daemon.sh start resourcemanager
(c)启动NodeManager
sbin/yarn-daemon.sh start nodemanager
YARN的浏览器页面查看
http://hadoop101:8088/cluster
启动历史服务器
sbin/mr-jobhistory-daemon.sh start historyserver
查看JobHistory
http://hadoop101:19888/jobhistory
注意:开启日志聚集功能,需要重新启动NodeManager 、ResourceManager和HistoryManager。
关闭NodeManager 、ResourceManager和HistoryManager
sbin/yarn-daemon.sh stop resourcemanager
sbin/yarn-daemon.sh stop nodemanager
sbin/mr-jobhistory-daemon.sh stop historyserver
启动NodeManager 、ResourceManager和HistoryManager
sbin/yarn-daemon.sh start resourcemanager
sbin/yarn-daemon.sh start nodemanager
sbin/mr-jobhistory-daemon.sh start historyserver
集群间互传文件脚本
#!/bin/bash
#1 获取输入参数个数,如果没有参数,直接退出
pcount=$#
if((pcount==0)); then
echo no args;
exit;
fi
#2 获取文件名称
p1=$1
fname=`basename $p1`
echo fname=$fname
#3 获取上级目录到绝对路径 –P指向实际物理地址,防止软连接
pdir=`cd -P $(dirname $p1); pwd`
echo pdir=$pdir
#4 获取当前用户名称
user=`whoami`
#5 循环
for((host=103; host<105; host++)); do
echo ------------------- hadoop$host --------------
rsync -rvl $pdir/$fname $user@hadoop$host:$pdir
done
各个服务组件逐一启动/停止
(1)分别启动/停止HDFS组件
hadoop-daemon.sh start / stop namenode / datanode / secondarynamenode
(2)启动/停止YARN
yarn-daemon.sh start / stop resourcemanager / nodemanager
这种方式的使用场景,一般集群已经启动完毕了,单独添加或者删除节点的时候使用
各个模块分开启动/停止(配置ssh是前提)常用
(1)整体启动/停止HDFS
start-dfs.sh / stop-dfs.sh
如果配置了主从,那么start-dfs.sh会启动集群中的namenode,所有datanode,secondarynamenode
(2)整体启动/停止YARN
start-yarn.sh / stop-yarn.sh
如果配置了主从,那么start-yarn.sh会启动集群中的ResourceManager,所有NodeManager