HDFS Federation(HDFS 联邦)(Hadoop2.3)

简介: 最早接触Federation这个词还是第一家公司用的DB2联邦数据库。 第一代Hadoop HDFS:   结构上由一个namenode和众多datanode组成。

最早接触Federation这个词还是第一家公司用的DB2联邦数据库。

第一代Hadoop HDFS:


 

结构上由一个namenode和众多datanode组成。

功能上划分为namespace和block storage service 两部分。

 

所谓的HDFS Federation就是有多个namenode(或者说namespace)。

如图:


 

这里有block pool的概念,每一个namespace都有一个pool,datanodes会存储集群中所有的pool,block pool之间的管理是独立的,一个namespace生成一个block id时不需要跟其它namespace协调,一个namenode的失败也不会影响到datanode对其它namenodes的服务。

一个namespace和它的blockpool作为一个管理单元,删除后,对应于datanodes中的pool也会被删除。集群升级时,这个管理单元也独立升级。

这里引入clusterID来标示集群所有节点。当一个namenode format之后,这个id生成,集群中其它namenode的format也用这个id。

多namenode的好处:

1、namespace可扩展性。原来只有hdfs存储可以水平扩展,现在namenode也可以做到了,减轻单namenode的内存和服务压力。

2、性能方面。多个namenode可以提高读写时的吞吐量。

3、隔离性。隔离不同类型的程序,一定程度上控制资源的分配。

联邦的配置:

联邦的配置是向后兼容的,允许在不改变任何配置的情况下让当前运行的单节点环境转换成联邦环境。新的配置方案确保了在集群环境中的所有节点的配置文件都是相同的。

这里引入了NameServiceID概念,作为namenodes们的后缀。

第一步:配置属性dfs.nameservices,用于datanodes们识别namenodes。

第二步:为每个namenode加入这个后缀。

例子:

 

<configuration>
  <property>
    <name>dfs.nameservices</name>
    <value>ns1,ns2</value>
  </property>
  <property>
    <name>dfs.namenode.rpc-address.ns1</name>
    <value>nn-host1:rpc-port</value>
  </property>
  <property>
    <name>dfs.namenode.http-address.ns1</name>
    <value>nn-host1:http-port</value>
  </property>
  <property>
    <name>dfs.namenode.secondaryhttp-address.ns1</name>
    <value>snn-host1:http-port</value>
  </property>
  <property>
    <name>dfs.namenode.rpc-address.ns2</name>
    <value>nn-host2:rpc-port</value>
  </property>
  <property>
    <name>dfs.namenode.http-address.ns2</name>
    <value>nn-host2:http-port</value>
  </property>
  <property>
    <name>dfs.namenode.secondaryhttp-address.ns2</name>
    <value>snn-host2:http-port</value>
  </property>

  .... Other common configuration ...
</configuration>

 

 

管理集群:

启动和停止用start-dfs.sh和stop-dfs.sh

跟第一代hadoop不同的是:这里允许集群中任何一台有效节点运行这两个命令,根据配置启动namenode和datanode,而第一代hadoop则是以运行启动脚本的节点为单一namenode。

均衡器:

由于多namenode了,均衡器也做了改变,运行命令:

 

"$HADOOP_PREFIX"/bin/hadoop-daemon.sh --config $HADOOP_CONF_DIR --script "$bin"/hdfs start balancer [-policy <policy>]

策略可以是node,之前也有的,增加了block pool,既在datanode级别又在block pool级别均衡。

下线节点:

跟之前版本的类似,把需要下线的节点添加到每台namenode的exclude文件中。

第一步:

"$HADOOP_PREFIX"/bin/distributed-exclude.sh <exclude_file>
第二步:
"$HADOOP_PREFIX"/bin/refresh-namenodes.sh
 
集群控制台:
 
http://<any_nn_host:port>/dfsclusterhealth.jsp
相关文章
|
1月前
|
分布式计算 Kubernetes Hadoop
大数据-82 Spark 集群模式启动、集群架构、集群管理器 Spark的HelloWorld + Hadoop + HDFS
大数据-82 Spark 集群模式启动、集群架构、集群管理器 Spark的HelloWorld + Hadoop + HDFS
152 6
|
1月前
|
SQL 分布式计算 监控
Hadoop-20 Flume 采集数据双写至本地+HDFS中 监控目录变化 3个Agent MemoryChannel Source对比
Hadoop-20 Flume 采集数据双写至本地+HDFS中 监控目录变化 3个Agent MemoryChannel Source对比
61 3
|
1月前
|
SQL 分布式计算 Hadoop
Hadoop-14-Hive HQL学习与测试 表连接查询 HDFS数据导入导出等操作 逻辑运算 函数查询 全表查询 WHERE GROUP BY ORDER BY(一)
Hadoop-14-Hive HQL学习与测试 表连接查询 HDFS数据导入导出等操作 逻辑运算 函数查询 全表查询 WHERE GROUP BY ORDER BY(一)
42 4
|
1月前
|
分布式计算 资源调度 Hadoop
Hadoop-10-HDFS集群 Java实现MapReduce WordCount计算 Hadoop序列化 编写Mapper和Reducer和Driver 附带POM 详细代码 图文等内容
Hadoop-10-HDFS集群 Java实现MapReduce WordCount计算 Hadoop序列化 编写Mapper和Reducer和Driver 附带POM 详细代码 图文等内容
96 3
|
1月前
|
SQL 分布式计算 Hadoop
Hadoop-19 Flume Agent批量采集数据到HDFS集群 监听Hive的日志 操作则把记录写入到HDFS 方便后续分析
Hadoop-19 Flume Agent批量采集数据到HDFS集群 监听Hive的日志 操作则把记录写入到HDFS 方便后续分析
45 2
|
1月前
|
SQL
Hadoop-14-Hive HQL学习与测试 表连接查询 HDFS数据导入导出等操作 逻辑运算 函数查询 全表查询 WHERE GROUP BY ORDER BY(二)
Hadoop-14-Hive HQL学习与测试 表连接查询 HDFS数据导入导出等操作 逻辑运算 函数查询 全表查询 WHERE GROUP BY ORDER BY(二)
36 2
|
1月前
|
分布式计算 Hadoop 网络安全
Hadoop-08-HDFS集群 基础知识 命令行上机实操 hadoop fs 分布式文件系统 读写原理 读流程与写流程 基本语法上传下载拷贝移动文件
Hadoop-08-HDFS集群 基础知识 命令行上机实操 hadoop fs 分布式文件系统 读写原理 读流程与写流程 基本语法上传下载拷贝移动文件
35 1
|
1月前
|
SQL 分布式计算 关系型数据库
Hadoop-24 Sqoop迁移 MySQL到Hive 与 Hive到MySQL SQL生成数据 HDFS集群 Sqoop import jdbc ETL MapReduce
Hadoop-24 Sqoop迁移 MySQL到Hive 与 Hive到MySQL SQL生成数据 HDFS集群 Sqoop import jdbc ETL MapReduce
86 0
|
1月前
|
SQL 分布式计算 关系型数据库
Hadoop-23 Sqoop 数据MySQL到HDFS(部分) SQL生成数据 HDFS集群 Sqoop import jdbc ETL MapReduce
Hadoop-23 Sqoop 数据MySQL到HDFS(部分) SQL生成数据 HDFS集群 Sqoop import jdbc ETL MapReduce
37 0
|
1月前
|
SQL 分布式计算 关系型数据库
Hadoop-22 Sqoop 数据MySQL到HDFS(全量) SQL生成数据 HDFS集群 Sqoop import jdbc ETL MapReduce
Hadoop-22 Sqoop 数据MySQL到HDFS(全量) SQL生成数据 HDFS集群 Sqoop import jdbc ETL MapReduce
47 0