hdfsgo语言接口 hdfs教程( 二 )


为了保证Secondary节点能够随时顶替上去,Standby节点需要定时同步Active节点的事务日志来更新本地的文件系统目录树信息,同时DataNode需要配置所有NameNode的位置,并向所有状态的NameNode发送块列表信息和心跳 。
同步事务日志来更新目录树由JournalNode的守护进程来完成,简称为QJM,一个NameNode对应一个QJM进程 , 当Active节点执行任何命名空间文件目录树修改时,它会将修改记录持久化到大多数QJM中 , Standby节点从QJM中监听并读取编辑事务日志内容,并将编辑日志应用到自己的命名空间 。发生故障转移时,Standby节点将确保在将自身提升为Active状态之前,从QJM读取所有编辑内容 。
注意,QJM只是实现了数据的备份,当Active节点发送故障时,需要手工提升Standby节点为Active节点 。如果要实现NameNode故障自动转移,则需要配套ZKFC组件来实现,ZKFC也是独立运行的一个守护进程,基于zookeeper来实现选举和自动故障转移 。
虽然HDFS HA解决了“单点故障”问题 , 但是在系统扩展性、整体性能和隔离性方面仍然存在问题:
HDFS HA本质上还是单名称节点 。HDFS联邦可以解决以上三个方面问题 。
在HDFS联邦中,设计了多个相互独立的NN , 使得HDFS的命名服务能够水平扩展,这些NN分别进行各自命名空间和块的管理,不需要彼此协调 。每个DN要向集群中所有的NN注册,并周期性的发送心跳信息和块信息,报告自己的状态 。
HDFS联邦拥有多个独立的命名空间,其中,每一个命名空间管理属于自己的一组块,这些属于同一个命名空间的块组成一个“块池” 。每个DN会为多个块池提供块的存储,块池中的各个块实际上是存储在不同DN中的 。
组件分享之后端组件——基于Golang实现的高性能和弹性的流处理器benthos近期正在探索前端、后端、系统端各类常用组件与工具,对其一些常见的组件进行再次整理一下,形成标准化组件专题,后续该专题将包含各类语言中的一些常用组件 。欢迎大家进行持续关注 。
本节我们分享的是基于Golang实现的高性能和弹性的流处理器 benthos  , 它能够以各种代理模式连接各种 源 和 接收器,并对有效负载执行水合、浓缩、转换和过滤。
它带有 强大的映射语言 ,易于部署和监控,并且可以作为静态二进制文件、docker 映像或 无服务器函数 放入您的管道,使其成为云原生 。
Benthos 是完全声明性的,流管道在单个配置文件中定义,允许您指定连接器和处理阶段列表:
Apache Pulsar, AWS (DynamoDB, Kinesis, S3, SQS, SNS), Azure (Blob storage, Queue storage, Table storage), Cassandra, Elasticsearch, File, GCP (Pub/Sub, Cloud storage), HDFS, HTTP (server and client, including websockets), Kafka, Memcached, MQTT, Nanomsg, NATS, NATS JetStream, NATS Streaming, NSQ, AMQP 0.91 (RabbitMQ), AMQP 1, Redis (streams, list, pubsub, hashes), MongoDB, SQL (MySQL, PostgreSQL, Clickhouse, MSSQL), Stdin/Stdout, TCPUDP, sockets and ZMQ4.
1、docker安装
具体使用方式可以参见该 文档
有关如何配置更高级的流处理概念(例如流连接、扩充工作流等)的指导 , 请查看 说明书部分 。
有关在 Go 中构建您自己的自定义插件的指导,请查看 公共 API 。
Hadoop系列之HDFS架构本篇文章翻译了Hadoop系列下的 HDFS Architecture,原文最初经过笔者翻译后大概有6000字,之后笔者对内容进行了精简化压缩,从而使笔者自己和其他读者们阅读本文时能够更加高效快速的完成对Hadoop的学习或复习 。本文主要介绍了Hadoop的整体架构,包括但不限于节点概念、命名空间、数据容错机制、数据管理方式、简单的脚本命令和垃圾回收概念 。

推荐阅读