Hadoop配置详情

--HDFS环境 hadoop-env.sh
export JAVA_HOME=/opt/apps/jdk1.8.0_141
--core-site.xml   配置程序操作的文件系统
<property>
<name>fs.defaultFS</name>
<value>hdfs://linux01:8020</value>
</property>
--hdfs-site.xml  HDFS常用参数
<!-- 集群的namenode的位置  datanode能通过这个地址注册-->
        <property>
             <name>dfs.namenode.rpc-address</name>
                 <value>linux01:8020</value>
        </property>
         <!-- namenode存储元数据的位置 -->
        <property>
             <name>dfs.namenode.name.dir</name>
                 <value>/opt/hdpdata/name</value>
        </property>
         <!-- datanode存储数据的位置 -->
        <property>
             <name>dfs.datanode.data.dir</name>
                 <value>/opt/hdpdata/data</value>
        </property>
         <!-- secondary namenode机器的位置-->
        <property>
                <name>dfs.namenode.secondary.http-address</name>
                <value>linux02:50090</value>
        </property>
--yarn常用参数  yarn-site.xml
<!--  resource,manager主节点所在机器 -->
<property>
<name>yarn.resourcemanager.hostname</name>
<value>linux01</value>
</property>

<!--  为mr程序提供shuffle服务 -->
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>

<!--  一台NodeManager的总可用内存资源 -->
<property>
<name>yarn.nodemanager.resource.memory-mb</name>
<value>4096</value>
</property>
<!--  一台NodeManager的总可用(逻辑)cpu核数 -->
<property>
<name>yarn.nodemanager.resource.cpu-vcores</name>
<value>4</value>
</property>

<!--  是否检查容器的虚拟内存使用超标情况 -->
<property>
  <name>yarn.nodemanager.vmem-check-enabled</name>
  <value>false</value>
</property>

<!--  容器的虚拟内存使用上限:与物理内存的比率  1G   600M --> 
<property>
  <name>yarn.nodemanager.vmem-pmem-ratio</name>
  <value>2.1</value>
</property>

--MR参数  mapred-site.xml
<--!MR程序默认运行在yarn上  -->
<property>
  <name>mapreduce.framework.name</name>
  <value>yarn</value>
</property>

<property>
  <description> 跨平台运行 If enabled, user can submit an application cross-platform
  i.e. submit an application from a Windows client to a Linux/Unix server or
  vice versa.
  </description>
  <name>mapreduce.app-submission.cross-platform</name>
  <value>false</value>
</property>



<--!提交程序的主机要设置-->
<property>
  <name>yarn.app.mapreduce.am.env</name>
  <value>HADOOP_MAPRED_HOME=/opt/apps/hadoop-3.1.1</value>
</property>
<property>
  <name>mapreduce.map.env</name>
  <value>HADOOP_MAPRED_HOME=/opt/apps/hadoop-3.1.1</value>
</property>
<property>
  <name>mapreduce.reduce.env</name>
  <value>HADOOP_MAPRED_HOME=/opt/apps/hadoop-3.1.1</value>
</property>
--HDFS HA 高可用模式  core-site.xml
<configuration>
<!-- HA模式 -->
<!-- 把两个NameNode)的地址组装成一个集群mycluster -->
    <property>
		<name>fs.defaultFS</name>
		<value>hdfs://mydfs</value>
    </property>

    <!-- 指定hadoop运行时产生文件的存储目录 -->
    <property>
       <name>hadoop.tmp.dir</name>
       <value>/ha/hadoop-3.1.1/data/tmp</value>
    </property>
	<property>
        <name>ha.zookeeper.quorum</name>
        <value>linux01:2181,linux02:2181,linux03:2181</value>
	</property>
</configuration>


--hdfs-site.xml
<configuration>
		<!-- HA模式 -->
		<!-- 完全分布式集群名称 -->
        <property>
                <name>dfs.nameservices</name>
                <value>mydfs</value>
        </property>

        <!-- 集群中NameNode节点都有哪些 -->
        <property>
                <name>dfs.ha.namenodes.mydfs</name>
                <value>nn1,nn2</value>
        </property>

        <!-- nn1的RPC通信地址 -->
        <property>
                <name>dfs.namenode.rpc-address.mydfs.nn1</name>
                <value>linux01:8020</value>
        </property>

        <!-- nn2的RPC通信地址 -->
        <property>
                <name>dfs.namenode.rpc-address.mydfs.nn2</name>
                <value>linux02:8020</value>
        </property>

        <!-- nn1的http通信地址 -->
        <property>
                <name>dfs.namenode.http-address.mydfs.nn1</name>
                <value>linux01:9870</value>
        </property>

        <!-- nn2的http通信地址 -->
        <property>
                <name>dfs.namenode.http-address.mydfs.nn2</name>
                <value>linux02:9870</value>
        </property>

        <!-- 指定NameNode元数据在JournalNode上的存放位置 -->
        <property>
                <name>dfs.namenode.shared.edits.dir</name>
        <value>qjournal://linux01:8485;linux02:8485;linux03:8485/mydfs</value>
        </property>

        <!-- 配置隔离机制,即同一时刻只能有一台服务器对外响应 -->
        <property>
                <name>dfs.ha.fencing.methods</name>
                <value>sshfence</value>
        </property>

        <!-- 使用隔离机制时需要ssh无秘钥登录-->
        <property>
                <name>dfs.ha.fencing.ssh.private-key-files</name>
                <value>/root/.ssh/id_rsa</value>
        </property>

        <!-- 声明journalnode服务器存储目录-->
        <property>
                <name>dfs.journalnode.edits.dir</name>
                <value>/ha/hadoop-3.1.1/data/jn</value>
        </property>

        <!-- 关闭权限检查-->
        <property>
                <name>dfs.permissions.enable</name>
                <value>false</value>
        </property>

        <!-- 访问代理类:client,mydfs,active配置失败自动切换实现方式-->
        <property>
                <name>dfs.client.failover.proxy.provider.mydfs</name>
        <value>org.apache.hadoop.hdfs.server.namenode.ha.ConfiguredFailoverProxyProvider</value>
        </property>
<property>
        <name>dfs.ha.automatic-failover.enabled</name>
        <value>true</value>
</property>
</configuration>

部署细节 

在设置了所有必要的配置选项之后,您必须在将运行它们的机器集上启动 JournalNode 守护程序。这可以通过运行命令“ hdfs --daemon start journalnode ”并等待守护程序在每台相关机器上启动来完成。

JournalNodes 启动后,必须首先同步两个 HA NameNodes 的磁盘元数据。

  • 如果要设置新的 HDFS 集群,则应首先在其中一个 NameNode 上运行格式命令 ( hdfs namenode -format )。

  • 如果您已经格式化了 NameNode,或者正在将未启用 HA 的集群转换为启用 HA,您现在应该通过运行命令将 NameNode 元数据目录的内容复制到其他未格式化的 NameNode hdfs namenode -bootstrapStandby ”在未格式化的 NameNode 上。运行此命令还将确保 JournalNode(由dfs.namenode.shared.edits.dir配置)包含足够的编辑事务,以便能够启动两个 NameNode。

  • 如果要将非 HA NameNode 转换为 HA,则应运行命令“ hdfs namenode -initializeSharedEdits ”,它将使用本地 NameNode 编辑目录中的编辑数据初始化 JournalNodes。

此时,您可以像通常启动 NameNode 一样启动所有 HA NameNode。

您可以通过浏览它们配置的 HTTP 地址来分别访问每个 NameNode 的网页。您应该注意到,配置地址旁边将是 NameNode 的 HA 状态(“备用”或“活动”)。每当 HA NameNode 启动时,它最初处于备用状态。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值