HDFS-RBF独立Router接管多集群部署配置详细步骤

1、安装jdk
2、安装Zookeeper
3、安装RBF
3.1 解压 tar -zxvf hadoop-3.3.6.tar.gz
3.2 复制集群配置文件:hdfs-site.xml、core-site.xml
3.3 Router配置:apache hdfs-rbf-site.xml hdp: hdfs-site.xml

	<!-- Router RPC服务器 -->
<property>
    <!-- 要监视的默认子群集的NS标识符 --> 
    <name>dfs.federation.router.default.nameserviceId</name>
    <value>ns1</value>
</property>

<property>
    <!-- 是否开启默认子群集的NS标识符 --> 
    <name>dfs.federation.router.default.nameservice.enable</name>
    <value>true</value>
</property>

<property>
    <!-- 是否开启路由处理客户端的RPC请求 --> 
    <name>dfs.federation.router.rpc.enable</name>
    <value>true</value>
</property>

<property>
    <!-- 处理客户端请求的RPC地址 --> 
    <name>dfs.federation.router.rpc-address</name>
    <value>0.0.0.0:8888</value>
</property>

<property>
    <!-- RPC 服务器将绑定到的实际地址 --> 
    <name>dfs.federation.router.rpc-bind-host</name>
    <value>0.0.0.0</value>
</property>

<property>
    <!-- 路由处理来自客户端的RPC请求的服务器线程数 --> 
    <name>dfs.federation.router.handler.count</name>
    <value>20</value>
</property>

<property>
    <!-- 用于处理RPC客户端请求的处理程序数的队列大小 --> 
    <name>dfs.federation.router.handler.queue.size</name>
    <value>200</value>
</property>

<property>
    <!-- 路由用于处理RPC客户端请求的读取器数。 --> 
    <name>dfs.federation.router.reader.count</name>
    <value>5</value>
</property>

<property>
    <!-- 路由处理RPC客户端请求的读取器数的队列大小 --> 
    <name>dfs.federation.router.reader.queue.size</name>
    <value>100</value>
</property>

	<!-- NN连接配置 -->
<property>
    <!-- 从路由到namenode的连接池的大小 --> 
    <name>dfs.federation.router.connection.pool-size</name>
    <value>6</value>
</property>

<property>
    <!-- 时间间隔(以毫秒为单位),用于检查连接池是否应删除未使用的连接 --> 
    <name>dfs.federation.router.connection.clean.ms</name>
    <value>10000</value>
</property>
   
<property>
    <!-- 时间间隔(以毫秒为单位),用于检查连接管理器是否应删除未使用的连接池 --> 
    <name>dfs.federation.router.connection.pool.clean.ms</name>
    <value>60000</value>
</property>

	<!-- 管理服务 -->        
<property>
    <!-- 是否启用路由的管理服务处理客户端请求的RPC请求 --> 
    <name>dfs.federation.router.admin.enable</name>
    <value>true</value>
</property>
    
<property>
    <!-- 处理管理员请求的RPC地址 --> 
    <name>dfs.federation.router.admin-address</name>
    <value>0.0.0.0:8111</value>
</property>
    
<property>
    <!-- RPC管理服务器将绑定到的实际地址 --> 
    <name>dfs.federation.router.admin-bind-host</name>
    <value>0.0.0.0</value>
</property>
    
<property>
    <!-- 路由器处理来自管理员的RPC请求的服务器线程数 --> 
    <name>dfs.federation.router.admin.handler.count</name>
    <value>1</value>
</property>

	<!-- HTTP服务 -->     
<property>
    <!-- 是否启用路由处理客户端的HTTP请求 --> 
    <name>dfs.federation.router.http.enable</name>
    <value>true</value>
</property>
    
<property>
    <!-- 处理对路由的Web请求的HTTP地址 --> 
    <name>dfs.federation.router.http-address</name>
    <value>0.0.0.0:50071</value>
</property>
    
<property>
    <!-- HTTP服务器将绑定到的实际地址 --> 
    <name>dfs.federation.router.http-bind-host</name>
    <value>0.0.0.0</value>
</property>

<property>
    <!-- 处理对路由的Web请求的HTTPS地址 --> 
    <name>dfs.federation.router.https-address</name>
    <value>0.0.0.0:50072</value>
</property>
    
<property>
    <!-- HTTPSS服务器将绑定到的实际地址 --> 
    <name>dfs.federation.router.https-bind-host</name>
    <value>0.0.0.0</value>
</property>

	<!-- StateStore存储 -->
<property>
    <!-- 是否启用路由连接statestore --> 
    <name>dfs.federation.router.store.enable</name>
    <value>true</value>
</property>
    
<property>
    <!-- 用于序列化状态存储记录的类 --> 
    <name>dfs.federation.router.store.serializer</name>
    <value>org.apache.hadoop.hdfs.server.federation.store.driver.impl.StateStoreSerializerPBImpl</value>
</property>
    
<property>
    <!-- 实现statestore的类 --> 
    <name>dfs.federation.router.store.driver.class</name>
    <value>org.apache.hadoop.hdfs.server.federation.store.driver.impl.StateStoreZooKeeperImpl</value>
</property>

<property>
    <!-- 检查与状态存储的连接的频率(以毫秒为单位) --> 
    <name>dfs.federation.router.store.connection.test</name>
    <value>60000</value>
</property>
    
<property>
    <!-- 刷新状态存储缓存的频率(以毫秒为单位) --> 
    <name>dfs.federation.router.cache.ttl</name>
    <value>60000</value>
</property>

<property>
    <!-- membership记录的过期时间(以毫秒为单位) --> 
    <name>dfs.federation.router.store.membership.expiration</name>
    <value>300000</value>
</property>
    
<property>
    <!-- 如果为true,则每当为所有路由器添加、修改或删除挂载表条目时,都会更新挂载表缓存 --> 
    <name>dfs.federation.router.mount-table.cache.update</name>
    <value>false</value>
</property>

<property>
    <!-- 等待所有路由器完成其挂载表缓存更新的最长时间 --> 
    <name>dfs.federation.router.mount-table.cache.update.timeout</name>
    <value>1m</value>
</property>
    
<property>
    <!-- 路由客户端可以缓存连接的最大时间 --> 
    <name>dfs.federation.router.mount-table.cache.update.client.max.time</name>
    <value>5m</value>
</property>

<!-- Routing路由 -->
<property>
    <!-- 用于将文件解析到对应子群集的类。默认org.apache.hadoop.hdfs.server.federation.resolver.MountTableResolver,如果要为一个挂载点启用多个子集群,请设置为org.apache.hadoop.hdfs.server.federation.resolver.MultipleDestinationMountTableResolver --> 
    <name>dfs.federation.router.file.resolver.client.class</name>
    <value>org.apache.hadoop.hdfs.server.federation.resolver.MultipleDestinationMountTableResolver</value>
</property>
    
<property>
    <!-- 用于解析到子集群的NameNode的类 --> 
    <name>dfs.federation.router.namenode.resolver.client.class</name>
    <value>org.apache.hadoop.hdfs.server.federation.resolver.MembershipNamenodeResolver</value>
</property>

<!-- NameNode监控 -->     
<property>
    <!-- 如果为true,路由会定期将其状态检测信号到statestore --> 
    <name>dfs.federation.router.heartbeat.enable</name>
    <value>true</value>
</property>
    
<property>
    <!-- 如果true,路由将获取NameNode检测信号并发送到StateStore。如果未显式指定,则取与相同的dfs.federation.router.heartbeat.enable值 --> 
    <name>dfs.federation.router.namenode.heartbeat.enable</name>
    <value>true</value>
</property>  

<property>
    <!-- 路由器应检测信号进入状态存储的频率(以毫秒为单位) --> 
    <name>dfs.federation.router.heartbeat.interval</name>
    <value>5000</value>
</property>
    
<property>
    <!-- 要监视的NameNode的标识符,Router安装在非namenode结点需要配置! --> 
    <name>dfs.federation.router.monitor.namenode</name>
    <value>ns1.nn1,ns1.nn2,ns2.nn3,ns2.nn4</value>
</property> 
    
<property>
    <!-- 如果为true,路由器应监视本地计算机中的NameNode,Router安装在非namenode结点需要设置为false --> 
    <name>dfs.federation.router.monitor.localnamenode.enable</name>
    <value>false</value>
</property>

<!-- localnamenode.enable设置true,需要配置子集群允许路由直接查找本地节点 -->
<property>
    <name>dfs.nameservice.id</name>
    <value>ns1</value>
</property>
       
	<!-- Quota配额 -->     
<property>
    <!-- 如果为true,在路由中启用配额系统。在这种情况下,不建议直接设置或清除子集群的配额,因为路由管理服务器将使用全局配额覆盖子集群的配额 --> 
    <name>dfs.federation.router.quota.enable</name>
    <value>false</value>
</property>
    
<property>
    <!-- 路由更新配额缓存的频率。此设置支持多个时间单位后缀。如果未指定后缀,则假定为毫秒 --> 
    <name>dfs.federation.router.quota-cache.update.interval</name>
    <value>60s</value>
</property>   
    
	<!-- Kerberos安全 -->  
	<!-- 应该给router单独创建principal,keytab,nn节点部署使用nn的keytab和principal -->   
<property>
    <!-- 路由用于作为其服务主体登录的密钥表文件 --> 
    <name>dfs.federation.router.keytab.file</name>
    <value>/etc/security/keytabs/nn.service.keytab</value>
</property>

<property>
    <!-- 路由服务主体的principal。这通常设置为路由/_HOST@REALM。_HOST占位符允许在HA设置中的所有路由器上使用相同的配置设置 --> 
    <name>dfs.federation.router.kerberos.principal</name>
    <value>nn/_HOST@OCDP.COM</value>
</property>

<!-- <property>
    <!-- 包含此配置文件的路由器的主机名。每台计算机都不同。默认为当前主机名 --> 
    <name>dfs.federation.router.kerberos.principal.hostname</name>
    <value></value>
</property> -->

<property>
    <!-- 启用Kerberos安全性时路由器用于WebUI SPNEGO身份验证的服务器主体。这通常设置为HTTP/_HOST@REALM --> 
    <name>dfs.federation.router.kerberos.internal.spnego.principal</name>
    <value>HTTP/_HOST@OCDP.COM</value>
</property>

<property>
    <!-- 用于实现statestore到委托令牌的类。默认实现使用zookeeper作为后端来存储委派令牌 --> 
    <name>dfs.federation.router.secret.manager.class</name>
    <value>org.apache.hadoop.hdfs.server.federation.router.security.token.ZKDelegationTokenSecretManagerImpl</value>
</property>

<!-- statestore配置 -->
<property>
    <!-- state store 采用zk时需要配置 -->
    <name>hadoop.zk.address</name>
    <value>host-@@@-236-144:2181,host-@@@-241-65:2181,host-@@@-241-68:2181</value>
</property>

<!-- zookeeper to persists TokenIdentifiers and DelegationKeys  -->
<property>
    <name>zk-dt-secret-manager.kerberos.keytab</name>
    <value>/etc/security/keytabs/nn.service.keytab</value>
</property>

<property>
    <name>zk-dt-secret-manager.kerberos.principal</name>
    <value>nn/_HOST@OCDP.COM</value>
</property>

<property>
    <!-- 单独部署zk不开kerberos 配置为none -->
    <name>zk-dt-secret-manager.zkAuthType</name>
    <value>sasl</value>
</property>

<property>
    <name>zk-dt-secret-manager.zkConnectionString</name>
    <value>host-@@@-241-65:2181,host-@@@-241-68:2181,host-@@@-236-144:2181</value>
</property>

<!-- NameNode配置,配置所有router主机允许访问namenode  -->
<property>
    <name>hadoop.proxyuser.ocdp.hosts</name>
    <value>host-@@@-236-144,host-@@@-241-68,host-@@@-234-85</value>
    <final>false</final>
</property>

3.4 客户端配置:
客户端使用联合命名空间,它们需要创建一个指向路由器的新命名空间,并配置高可用模式。例如:
具有4个命名空间 ns0、ns1、ns2、ns3 的集群可以向hdfs-site.xml添加一个名为ns-fed的新命名空间,
它指向其中两个路由器,配置的是router对应的服务端口。

dfs.nameservices ns0,ns1,ns2,ns3,ns-fed dfs.ha.namenodes.ns-fed r1,r2 dfs.namenode.rpc-address.ns-fed.r1 router1:rpc-port dfs.namenode.rpc-address.ns-fed.r2 router2:rpc-port dfs.client.failover.proxy.provider.ns-fed org.apache.hadoop.hdfs.server.namenode.ha.ConfiguredFailoverProxyProvider dfs.client.failover.random.order true hadoop.zk.address host-@@@-37-109:2181,host-@@@-37-110:2181,host-@@@-37-148:2181 dfs.nameservice.id ns1

注意:两个独立子集群开联邦,子集群需要配置所有子集群namenode和HA相关配置,hdfs读取配置时加载conf目录下所有配置,
yarn-site.xml会覆盖hdfs-site.xml 中hadoop.zk.address, 启动router的时候需要注意这个参数,单独配置。

4、启动router进程
Router的启动/停止方式和启动DN/NN类似, 作为一个独立进程, 也有自己单独的日志。

执行:hdfs --daemon start dfsrouter 命令启动联邦服务,默认端口8888。
#停止router: hdfs --daemon stop dfsrouter

独立部署需要指定配置目录:–config confdir 覆盖缺省配置目录,缺省是${HADOOP_HOME}/conf。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值