hadoop hdfs ha 模式
这是我自己在公司一个搭建公司大数据框架是自己的选项,在配置yarn ha 出现了nodemanager起不来的问题
于是我把yarn搭建为普通yarn 如果有人解决 高yarn的nodemanager问题,请能留下留言,希望我的这个小日志能
初学者有所帮助。
在此例中采用的是 hadoop 2.6.5 版本
由于在建助hadoop 普通模式将基于hadoop的搭建都基本搭建起来,因而这里采用的是 on tez 模式
如果您不需要on tez 模式,你可以选择 将 yarn-tez 改成 yarn既可以了,这里也提供结合tez的方式。
在这里就不是介绍zookeeper 集群搭建,因为太简单了,只要注意
server.1 server.2 server.3 和 data 下面的myid 数字 123对应起来不要乱了就可以。
core-site.xml
<configuration> <property> <name>fs.defaultFS</name> <value>hdfs://ft-hadoop-dev-01-d:9000</value> </property> <property> <name>io.file.buffer.size</name> <value>131072</value> </property> <property> <name>fs.trash.interval</name> <value>1440</value> <description>删除文件表一天时间默认分钟</description> </property> <property> <name>hadoop.tmp.dir</name> <value>/home/workspace/hadoop/tmp</value> </property> <property> <name>hadoop.proxyuser.u0.hosts</name> <value>*</value> </property> <property> <name>hadoop.proxyuser.u0.groups</name> <value>*</value> </property> <property> <name>ha.zookeeper.quorum</name> <value>ft-hadoop-dev-01-d:2181,ft-hadoop-dev-02-d:2181,ft-hadoop-dev-03-d:2181</value> <description>hadoop 高配集群制定zookeeper集群</description> </property> </configuration>
hdfs-site.xml
<configuration> <property> <name>dfs.replication</name> <value>3</value> </property> <property> <name>dfs.permissions.enabled</name> <value>false</value> </property> <property> <name>dfs.blocksize</name> <value>134217728</value> </property> <property> <name>dfs.nameservices</name> <value>mycluster</value> <description>指定hdfs的nameservices名称为mycluster</description> </property> <property> <name>dfs.ha.namenodes.mycluster</name> <value>nn1,nn2</value> </property> <property> <name>dfs.namenode.rpc-address.mycluster.nn1</name> <value>ft-hadoop-dev-01-d:8020</value> <description>配置nn1,nn2的rpc通信端口</description> </property> <property> <name>dfs.namenode.rpc-address.mycluster.nn2</name> <value>ft-hadoop-dev-02-d:8020</value> <description>配置nn1,nn2的rpc通信端口</description> </property> <property> <name>dfs.namenode.http-address.mycluster.nn1</name> <value>ft-hadoop-dev-01-d:50070</value> <description>web端口</description> </property> <property> <name>dfs.namenode.http-address.mycluster.nn2</name> <value>ft-hadoop-dev-02-d:50070</value> <description>web端口</description> </property> <property> <name>dfs.namenode.shared.edits.dir</name> <value>qjournal://ft-hadoop-dev-02-d:8485;ft-hadoop-dev-02-d:8485;ft-hadoop-dev-02-d:8485/mycluster</value> <description>指定namenode元数据存储在journalnode中的路径</description> </property> <property> <name>dfs.journalnode.edits.dir</name> <value>/home/bigdata/hadoop/journal-metastore</value> <description>指定journalnode日志文件存储的路径</description> </property>> <property> <name>dfs.client.failover.proxy.provider.mycluster</name> <value>org.apache.hadoop.hdfs.server.namenode.ha.ConfiguredFailoverProxyProvider</value> <description>指定HDFS客户端连接active namenode的java类</description> </property> <property> <name>dfs.ha.fencing.methods</name> <value>sshfence shell(/bin/true)</value> <description>使HA模式下不会同时出现两个master,不允许出现两个activity状态下的Namenodeh</description> </property> <property> <name>dfs.ha.fencing.ssh.private-key-files</name> <value>/root/.ssh/id_rsa</value> <description>指定秘钥的位置</description> </property> <property> <name>dfs.ha.automatic-failover.enabled</name> <value>true</value> <description>这个是开启自动故障转移</description> </property> </configuration>
mapred-site.xml
<property> <name>mapreduce.framework.name</name> <value>yarn-tez</value> </property> <property> <name>mapreduce.jobhistory.address</name> <value>ft-hadoop-dev-01-d:10020</value> </property> <property> <name>mapreduce.jobhistory.webapp.address</name> <value>ft-hadoop-dev-01-d:19888</value> </property> </configuration>
yarn-site.xml
<configuration>
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
<property>
<name>yarn.resourcemanager.hostname</name>
<value>ft-hadoop-dev-01-d</value>
</property>
<property>
<name>yarn.log-aggregation-enable</name>
<value>true</value>
</property>
<property>
<name>yarn.log-aggregation.retain-seconds</name>
<value>106800</value>
</property>
<property>
<name>yarn.nodemanager.resource.memory-mb</name>
<value>4056</value>
<description>配置nodemanager可用的资源内存</description>
</property>
<property>
<name>yarn.nodemanager.resource.cpu-vcores</name>
<value>4</value>
<description>配置nodemanager可用的资源CPU</description>
</property>
</configuration>
将tez 和 hadoop结合,tez可以减少hadoop初始化的时间,从而在大量数据面前提高是hadoop处理数据的速度
大幅度压缩初始化时间.
1 <?xml version="1.0" encoding="UTF-8"?> 2 <?xml-stylesheet type="text/xsl" href="configuration.xsl"?> 3 <configuration> 4 <property> 5 <name>tez.lib.uris</name> 6 <value>${fs.defaultFS}/tez/tez.tar.gz</value> 7 </property> 8 <property> 9 <name>tez.use.cluster.hadoop-libs</name> 10 <value>false</value> 11 </property> 12 </configuration>
在hadoop-env.sh最下面加入如下内容
这里主要是引入tez的配置文件和jar包
#tez 环境变量 TEZ_CONF_DIR=/home/bigdata/hadoop/etc/hadoop/tez-site.xml TEZ_JARS=/opt/software/tez export HADOOP_CLASSPATH=${HADOOP_CLASSPATH}:${TEZ_CONF_DIR}:${TEZ_JARS}/*:${TEZ_JARS}/lib/*