前提:jdk,ssh免密登录以配置
集群部署规划
hadoop101: NameNode DataNode NodeManager
hadoop102: DataNode ResourceManager NodeManager
hadoop103: SecondaryNameNode DataNode NodeManager
文件配置
core-site.xml
<!-- 指定HDFS中NameNode的地址 -->
<property>
<name>fs.defaultFS</name>
<value>hdfs://主机名:9000</value>
</property>
<!-- 指定Hadoop运行时产生文件的存储目录 -->
<property>
<name>hadoop.tmp.dir</name>
<value>存储路径</value>
</property>
hadoop-env.sh
export JAVA_HOME=jdk路径
hdfs-site.xml
<!--指定副本数-->
<property>
<name>dfs.replication</name>
<value>3</value>
</property>
<!-- 指定Hadoop辅助名称节点主机配置 -->
<property>
<name>dfs.namenode.secondary.http-address</name>
<value>主机名:50090</value>
</property>
yarn-env.sh
export JAVA_HOME=jdk路径
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>主机名</value>
</property>
mapred-env.sh
export JAVA_HOME=jdk路径
mapred-site.xml
<!-- 指定MR运行在Yarn上 -->
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
配置slaves
将所有节点名写入该文件,一个节点名称一行
将hadoop分发到其他集群
格式化NameNode
hadoop namenode -format
hadoop参数调优
hdfs-site.xml文件中配置多目录
<!-- 设置NameNode的存储路径 多目录配置!!<OK> -->
<property>
<name> dfs.namenode.name.dir</name>
<value>file:///${hadoop.tmp.dir}/dfs/nn/name1,file:///${hadoop.tmp.dir}/dfs/nn/name2</value>
</property>
<!-- 设置DataNode的存储路径 多目录配置!!!<OK> -->
<property>
<name>dfs.datanode.data.dir</name>
<value>file:///${hadoop.tmp.dir}/dfs/dn/dn1,file:///${hadoop.tmp.dir}/dfs/dn/dn2,file:///${hadoop.tmp.dir}/dfs/dn/dn3</value>
</property>
配置NameNode中工作线程池处理DataNode的并发心跳数
dfs.namenode.handler.cont=20*log2N N为集群数
日志存储路径与镜像文件存储路径分开存放
dfs.namenode.edits.dir
namenode.name.dir
配置yarn可使用物理内存总量
yarn.nodemanager.resource.memory-mb
配置单个任务可最多申请的物理内存
yarn.scheduler.maximum-allocation-mb