HDFS、YARN HA部署

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/likaiasddsa/article/details/89787828

三台机器安装软件 配置用户

创建新用户

useradd hadoop

设置用户密码

passwd hadoop

切换到hadoop用户

su - hadoop

创建目录

mkdir app
mkdir software

上传软件安装包到

rz
在这里插入图片描述

解压软件

配置ssh免密登陆

生成秘钥

ssh-keygen
在这里插入图片描述

查看秘钥目录

cd .ssh
在这里插入图片描述

把hadoop001的公钥放入认证的key中
在这里插入图片描述
把hadoop002、hadoop003上面的公钥复制到hadoop001上

scp id_rsa.pub 172.19.174.10:/home/hadoop/.ssh/id_rsa2
在这里插入图片描述

去hadoop001检查
在这里插入图片描述
把hadoop002、hadoop003 的公钥追加到authorized_keys。把authorized_keys文件复制到三台机器上。修改authorized_keys权限600。
在这里插入图片描述

配置 hosts 文件(三台都要配置)

vim /etc/hosts
在这里插入图片描述
测试ssh
相互测试sshl连接,第一次连接需要输入 yes.如果后面换秘钥,需要删除known_hosts 里面对应的信息。
在这里插入图片描述

JDK 部署

创建文件夹。( CDH找的默认的jdk路径)

mkdir /usr/java/

解压

tar -zxvf /home/hadoop/software/jdk-8u161-linux-x64.tar.gz -C /usr/java/

配置系统变量

关闭防火墙

service iptables status
stop service iptables

zookper部署

解压

tar -zxvf zookeeper-3.4.5-cdh5.15.0.tar.gz

配置/home/hadoop/app/zookeeper-3.4.5-cdh5.15.0/conf 下 zoo.cfg
修改

dataDir=/home/hadoop/app/zookeeper-3.4.5-cdh5.15.0/data

添加

server.1=hadoop001.2888.3888
server.2=hadoop002.2888.3888
server.3=hadoop003.2888.3888

在zookeeper 根目录下创建 data目录
创建myid 文件
在这里插入图片描述
把修改的配置文件分别传到 hadoop002、hadoop003上面去。分别修改 myid 。
在这里插入图片描述
启动zookper。输出日子就在 bin目录下。
在这里插入图片描述
查看状态
在这里插入图片描述

部署HDFS

解压

tar -zxvf hadoop-2.6.0-cdh5.15.0.tar.gz -C /home/hadoop/app/

修改配置文件
core-site.xml

    <property>
            <name>fs.defaultFS</name>
            <value>hdfs://ruozeclusterg6</value>
    </property>
    <!--==============================Trash机制======================================= -->
    <property>
            <!--多长时间创建CheckPoint NameNode截点上运行的CheckPointer 从Current文件夹创建CheckPoint;默认:0 由fs.trash.interval项指定 -->
            <name>fs.trash.checkpoint.interval</name>
            <value>0</value>
    </property>
    <property>
            <!--多少分钟.Trash下的CheckPoint目录会被删除,该配置服务器设置优先级大于客户端,默认:0 不删除 -->
            <name>fs.trash.interval</name>
            <value>1440</value>
    </property>

     <!--指定hadoop临时目录, hadoop.tmp.dir 是hadoop文件系统依赖的基础配置,很多路径都依赖它。如果hdfs-site.xml中不配 置namenode和datanode的存放位置,默认就放在这>个路径中 -->
    <property>   
            <name>hadoop.tmp.dir</name>
            <value>/home/hadoop/app/hadoop-2.6.0-cdh5.15.0/tmp</value>
    </property>

     <!-- 指定zookeeper地址 -->
    <property>
            <name>ha.zookeeper.quorum</name>
            <value>hadoop001:2181,hadoop002:2181,hadoop003:2181</value>
    </property>
     <!--指定ZooKeeper超时间隔,单位毫秒 -->
    <property>
            <name>ha.zookeeper.session-timeout.ms</name>
            <value>2000</value>
    </property>

    <property>
       <name>hadoop.proxyuser.hadoop.hosts</name>
       <value>*</value> 
    </property> 
    <property> 
        <name>hadoop.proxyuser.hadoop.groups</name> 
        <value>*</value> 
   </property> 
  <property>
	  <name>io.compression.codecs</name>
	  <value>org.apache.hadoop.io.compress.GzipCodec,
		org.apache.hadoop.io.compress.DefaultCodec,
		org.apache.hadoop.io.compress.BZip2Codec,
		org.apache.hadoop.io.compress.SnappyCodec
	  </value>
  </property>

hdfs.xml

<property>
	<name>dfs.permissions.superusergroup</name>
	<value>hadoop</value>
</property>
<!--开启web hdfs -->
<property>
	<name>dfs.webhdfs.enabled</name>
	<value>true</value>
</property>
<property>
	<name>dfs.namenode.name.dir</name>
	<value>/home/hadoop/app/hadoop-2.6.0-cdh5.15.0/data/dfs/name</value>
	<description> namenode 存放name table(fsimage)本地目录(需要修改)</description>
</property>
<property>
	<name>dfs.namenode.edits.dir</name>
	<value>${dfs.namenode.name.dir}</value>
	<description>namenode粗放 transaction file(edits)本地目录(需要修改)</description>
</property>
<property>
	<name>dfs.datanode.data.dir</name>
	<value>/home/hadoop/app/hadoop-2.6.0-cdh5.15.0/data/dfs/data</value>
	<description>datanode存放block本地目录(需要修改)</description>
</property>
<property>
	<name>dfs.replication</name>
	<value>3</value>
</property>
<!-- 块大小256M (默认128M) -->
<property>
	<name>dfs.blocksize</name>
	<value>268435456</value>
</property>
<!--======================================================================= -->
<!--HDFS高可用配置 -->
<!--指定hdfs的nameservice为ruozeclusterg6,需要和core-site.xml中的保持一致 -->
<property>
	<name>dfs.nameservices</name>
	<value>ruozeclusterg6</value>
</property>
<property>
	<!--设置NameNode IDs 此版本最大只支持两个NameNode -->
	<name>dfs.ha.namenodes.ruozeclusterg6</name>
	<value>nn1,nn2</value>
</property>

<!-- Hdfs HA: dfs.namenode.rpc-address.[nameservice ID] rpc 通信地址 -->
<property>
	<name>dfs.namenode.rpc-address.ruozeclusterg6.nn1</name>
	<value>hadoop001:8020</value>
</property>
<property>
	<name>dfs.namenode.rpc-address.ruozeclusterg6.nn2</name>
	<value>hadoop002:8020</value>
</property>

<!-- Hdfs HA: dfs.namenode.http-address.[nameservice ID] http 通信地址 -->
<property>
	<name>dfs.namenode.http-address.ruozeclusterg6.nn1</name>
	<value>hadoop001:50070</value>
</property>
<property>
	<name>dfs.namenode.http-address.ruozeclusterg6.nn2</name>
	<value>hadoop002:50070</value>
</property>

<!--==================Namenode editlog同步 ============================================ -->
<!--保证数据恢复 -->
<property>
	<name>dfs.journalnode.http-address</name>
	<value>0.0.0.0:8480</value>
</property>
<property>
	<name>dfs.journalnode.rpc-address</name>
	<value>0.0.0.0:8485</value>
</property>
<property>
	<!--设置JournalNode服务器地址,QuorumJournalManager 用于存储editlog -->
	<!--格式:qjournal://<host1:port1>;<host2:port2>;<host3:port3>/<journalId> 端口同journalnode.rpc-address -->
	<name>dfs.namenode.shared.edits.dir</name>
	<value>qjournal://hadoop001:8485;hadoop002:8485;hadoop003:8485/ruozeclusterg6</value>
</property>

<property>
	<!--JournalNode存放数据地址 -->
	<name>dfs.journalnode.edits.dir</name>
	<value>/home/hadoop/app/hadoop-2.6.0-cdh5.15.0/data/dfs/jn</value>
</property>
<!--==================DataNode editlog同步 ============================================ -->
<property>
	<!--DataNode,Client连接Namenode识别选择Active NameNode策略 -->
                         <!-- 配置失败自动切换实现方式 -->
	<name>dfs.client.failover.proxy.provider.ruozeclusterg6</name>
	<value>org.apache.hadoop.hdfs.server.namenode.ha.ConfiguredFailoverProxyProvider</value>
</property>
<!--==================Namenode fencing:=============================================== -->
<!--Failover后防止停掉的Namenode启动,造成两个服务 -->
<property>
	<name>dfs.ha.fencing.methods</name>
	<value>sshfence</value>
</property>
<property>
	<name>dfs.ha.fencing.ssh.private-key-files</name>
	<value>/home/hadoop/.ssh/id_rsa</value>
</property>
<property>
	<!--多少milliseconds 认为fencing失败 -->
	<name>dfs.ha.fencing.ssh.connect-timeout</name>
	<value>30000</value>
</property>

<!--==================NameNode auto failover base ZKFC and Zookeeper====================== -->
<!--开启基于Zookeeper  -->
<property>
	<name>dfs.ha.automatic-failover.enabled</name>
	<value>true</value>
</property>
<!--动态许可datanode连接namenode列表 -->
 <property>
   <name>dfs.hosts</name>
   <value>/home/hadoop/app/hadoop-2.6.0-cdh5.15.0/etc/hadoop/slaves</value>
 </property>

mapred-site.xml



mapreduce.framework.name
yarn




mapreduce.jobhistory.address
hadoop001:10020



mapreduce.jobhistory.webapp.address
hadoop001:19888

mapreduce.map.output.compress true mapreduce.map.output.compress.codec org.apache.hadoop.io.compress.SnappyCodec

启动日志节点(三个都要执行):

hadoop-daemon.sh start journalnode

格式化 namenode

hadoop namenode -format

Hadoop HA 启动过程

HA集群开启服务的过程---------------------------------------
step1:开启zookeeper服务:
$>zkServer.sh start
step2:开启journalnode守护进程(在qjournal协议指定的节点上执行):
$>hadoop-daemon.sh start journalnode
step3:开启hdfs:
$>start-dfs.sh
step4:开启 resourcemanager:
$>yarn-daemon.sh start resourcemanager

守护进程的说明:
5458 QuorumPeerMain 【zookeeper Server端】
7715 Jps 【java进程】
7626 DFSZKFailoverController 【ZKFC:zookeeper client客户端】
7324 JournalNode 【QJM:日志节点进程】
7405 NameNode 【名称节点】
6015 DataNode 【数据节点】
8762 ResourceManager 【资源管理器】

猜你喜欢

转载自blog.csdn.net/likaiasddsa/article/details/89787828