博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
大数据学习第8天
阅读量:5010 次
发布时间:2019-06-12

本文共 5403 字,大约阅读时间需要 18 分钟。

hadoop高可用配置

hadoop配置官方文档:http://hadoop.apache.org/docs/stable/hadoop-project-dist/hadoop-hdfs/HDFSHighAvailabilityWithQJM.html

hdfs-site.xml配置明细

dfs.nameservices - 此新名称服务的逻辑名称

为此名称服务选择一个逻辑名称,例如“mycluster”,并使用此逻辑名称作为此config选项的值。

您选择的名称是任意的。它既可用于配置,也可用作群集中绝对HDFS路径的权限组件。

注意:如果您还在使用HDFS Federation,则此配置设置还应包括其他名称服务列表,HA或其他,

以逗号分隔列表。
<property>
<name>dfs.nameservices</name>
<value>mycluster</value>
</property>

dfs.ha.namenodes。[nameservice ID] - nameservice中每个NameNode的唯一标识符

配置逗号分隔的NameNode ID列表。DataNodes将使用它来确定集群中的所有NameNode。

例如,如果您之前使用“mycluster”作为名称服务ID,并且您希望使用“nn1”和“nn2”作为NameNodes的各个ID,则可以将其配置为:
<property>
<name>dfs.ha.namenodes.mycluster</name>
<value>nn1,nn2</value>
</property>
注意:目前,每个名称服务最多只能配置两个NameNode。

dfs.namenode.rpc-address。[nameservice ID]。[name node ID] - 要监听的每个NameNode的完全限定的RPC地址

对于两个先前配置的NameNode ID,请设置NameNode进程的完整地址和IPC端口。请注意,这会产生两个单独的配置选项。例如:

<property>
<name>dfs.namenode.rpc-address.mycluster.nn1</name>
<value>node01:8020</value>
</property>
<property>
<name>dfs.namenode.rpc-address.mycluster.nn2</name>
<value>node02:8020</value>
</property>
注意:如果您愿意,可以类似地配置“ servicerpc-address ”设置。

dfs.namenode.http-address。[nameservice ID]。[name node ID] - 要监听的每个NameNode的完全限定HTTP地址

与上面的rpc-address类似,设置两个NameNodes的HTTP服务器的地址以进行侦听。例如:

<property>
<name>dfs.namenode.http-address.mycluster.nn1</name>
<value>node01:50070</value>
</property>
<property>
<name>dfs.namenode.http-address.mycluster.nn2</name>
<value>node02:50070</value>
</property>
注意:如果启用了Hadoop的安全功能,则还应为每个NameNode 设置https-address。

dfs.namenode.shared.edits.dir - 标识NameNodes将写入/读取编辑的JN组的URI

这是一个配置JournalNodes的地址的地方,它提供共享编辑存储,由Active nameNode写入并由Standby NameNode读取,以保持Active NameNode所做的所有文件系统更改的最新状态。虽然您必须指定多个JournalNode地址,但您应该只配置其中一个URI。URI应该是以下形式:qjournal:// * host1:port1 *; * host2:port2 *; * host3:port3 * / * journalId *。Journal ID是此nameservice的唯一标识符,它允许一组JournalNodes为多个联合名称系统提供存储。虽然不是必需的,但最好重用日志标识符的名称服务ID。

例如,如果此群集的JournalNodes在计算机“node1.example.com”,“node2.example.com”和“node3.example.com”上运行,并且名称服务ID是“mycluster”,则您将使用以下为此设置的值(JournalNode的默认端口为8485):

<property>
<name>dfs.namenode.shared.edits.dir</name>
<value>qjournal://node01:8485;node02:8485;node03:8485/mycluster</value>
</property>

dfs.client.failover.proxy.provider。[nameservice ID] - HDFS客户端用于联系Active NameNode的Java类

配置Java类的名称,DFS客户端将使用该名称来确定哪个NameNode是当前的Active,以及哪个NameNode当前正在为客户端请求提供服务。目前Hadoop附带的两个实现是ConfiguredFailoverProxyProvider和RequestHedgingProxyProvider(对于第一次调用,它同时调用所有名称节点以确定活动的名称,并在后续请求中调用活动的名称节点直到发生故障转移),所以除非您使用自定义代理提供程序,否则请使用其中一个。例如:

<property>
<name>dfs.client.failover.proxy.provider.mycluster</name>
<value>org.apache.hadoop.hdfs.server.namenode.ha.ConfiguredFailoverProxyProvider</value>
</property>

dfs.journalnode.edits.dir - JournalNode守护程序将存储其本地状态的路径

这是JournalNode计算机上的绝对路径,其中将存储JN使用的编辑和其他本地状态。您只能使用单个路径进行此配置。通过运行多个单独的JournalNode或在本地连接的RAID阵列上配置此目录,可以提供此数据的冗余。例如:

<property>
<name>dfs.journalnode.edits.dir</name>
<value>/var/sxt/hadoop/ha/jn</value>
</property>

dfs.ha.fencing.methods - 脚本或Java类的列表,用于在故障转移期间屏蔽 Active NameNode

对于系统的正确性,期望在任何给定时间只有一个NameNode处于活动状态。重要的是,在使用Quorum Journal Manager时,只允许一个NameNode写入JournalNodes,因此不存在从裂脑情况中破坏文件系统元数据的可能性。但是,当发生故障转移时,以前的Active NameNode仍可能向客户端提供读取请求,这可能已过期,直到NameNode在尝试写入JournalNode时关闭。因此,即使使用Quorum Journal Manager,仍然需要配置一些防护方法。但是,为了在防护机制失败的情况下提高系统的可用性,建议配置防护方法,该方法可保证作为列表中的最后一个防护方法返回成功。请注意,如果您选择不使用实际的防护方法,则仍必须为此设置配置某些内容,例如“ shell(/ bin / true) ”。

故障转移期间使用的防护方法配置为回车分隔列表,将按顺序尝试,直到指示防护成功为止。Hadoop有两种方法:shell和sshfence。有关实现自定义防护方法的信息,请参阅org.apache.hadoop.ha.NodeFencer类。

sshfence - SSH到Active NameNode并终止进程

该sshfence选项SSHes到目标节点,并使用定影杀死进程监听服务的TCP端口上。为了使此防护选项起作用,它必须能够在不提供密码的情况下SSH到目标节点。因此,还必须配置dfs.ha.fencing.ssh.private-key-files选项,该选项是以逗号分隔的SSH私钥文件列表。例如:

<property>
<name>dfs.ha.fencing.methods</name>
<value>sshfence</value>
</property>
<property>
<name>dfs.ha.fencing.ssh.private-key-files</name>
<value>/root/.ssh/id_dsa</value>
</property>
在典型部署中,ZooKeeper守护程序配置为在三个或五个节点上运行。由于ZooKeeper本身具有轻量级资源要求,因此可以在与HDFS NameNode和备用节点相同的硬件上并置ZooKeeper节点。许多运营商选择在与YARN ResourceManager相同的节点上部署第三个ZooKeeper进程。建议将ZooKeeper节点配置为将数据存储在与HDFS元数据不同的磁盘驱动器上,以获得最佳性能和隔离。

ZooKeeper的设置超出了本文档的范围。我们假设您已经设置了在三个或更多节点上运行的ZooKeeper集群,并通过使用ZK CLI进行连接来验证其正确的操作。

在开始配置自动故障转移之前,应关闭群集。当群集运行时,目前无法从手动故障转移设置转换为自动故障转移设置。
自动故障转移的配置需要在配置中添加两个新参数。在hdfs-site.xml文件中,添加:
<property>
<name>dfs.ha.automatic-failover.enabled</name>
<value>true</value>
</property>

core-site.xml配置明细

默认文件系统的名称。一个URI,其方案和权限决定了FileSystem的实现。uri的方案确定命名FileSystem实现类的config属性(fs.SCHEME.impl)。uri的权限用于确定文件系统的主机,端口等。
注意:hadoop.tmp.dir的配置要变更:/var/sxt/hadoop-2.6/ha
<property>
<name>fs.defaultFS</name>
<value>hdfs://mycluster</value>
</property>

由逗号分隔的ZooKeeper服务器地址列表,由ZKFailoverController在自动故障转移中使用。

<property>
<name>ha.zookeeper.quorum</name>
<value>node02:2181,node03:2181,node04:2181</value>
</property>

zookeeper(配置)

conf/zoo.cfg
dataDir=/var/sxt/zk
server.1=node02:2888:3888
server.2=node03:2888:3888
server.3=node04:2888:3888

/var/sxt/zk

echo 1 > myid //数字根据节点规划
需搭配完全分步式配置

系统环境:jdk , ssh免秘钥

Hadoop:jdk
(在hadoop安装目录下etc/hadoop下的env.sh文件JAVA_HOME路径重写)

配置文件:集群中要同步!!!

zookeepr配置
启动zookeeper集群
zkServer.sh start || zkServer.sh status
hadoop-daemon.sh start journalnode
第一台NN:
hdfs namenode –format
hadoop-deamon.sh start namenode
另一台NN:
hdfs namenode -bootstrapStandby
start-dfs.sh
$ZOOKEEPER/bin/zkCli.sh
ls /
hdfs zkfc -formatZK
stop-dfs.sh && start-dfs.sh || hadoop-daemon.sh start zkfc

 

转载于:https://www.cnblogs.com/lkoooox/p/11014312.html

你可能感兴趣的文章
关于idea优化的博客(分享)
查看>>
BZOJ1015[JSOI2008]星球大战starwar[并查集]
查看>>
BZOJ 1415: [Noi2005]聪聪和可可 [DP 概率]
查看>>
信息资源管理第一章知识结构
查看>>
LeetCode Bitwise AND of Numbers Range
查看>>
python 的with用途(清理资源和异常处理,同时代码精简)
查看>>
dns server 域名解析总结
查看>>
getHibernateTemplate用法
查看>>
Reactive Cocoa Tutorial [3] = "RACSignal的巧克力工厂“;
查看>>
delete master error(git push origin :master)
查看>>
Faster RCNN代码解析
查看>>
RobotFramework+Selenium视频教程
查看>>
十天精通CSS3(9)
查看>>
一套超棒的免费迷你OS图标
查看>>
windows mysql服务器
查看>>
暑假第七周总结
查看>>
使用Django实现分页器功能
查看>>
scss常规用法
查看>>
css定位position属性深究
查看>>
android中不同版本兼容包的区别
查看>>