gpt4 book ai didi

Hadoop NameNode 和 DataNode 插件

转载 作者:可可西里 更新时间:2023-11-01 15:10:52 26 4
gpt4 key购买 nike

我目前对 Hadoop 生态系统和 HDFS 架构有一些初学者的理解。

我想了解有关 HDFS 的以下一些更深层次的方面:

  • 有没有一种方法可以连接到 NameNode 执行以识别正在从 HDFS 添加/修改/删除的文件 - 类似于 Windows 中的文件系统事件?
  • 我可以编写插件来通过执行 NameNode 和 DataNode 中存在的自定义处理来扩展功能吗?
  • 数据节点通常会发回所有已在它们之间复制的 block 的 block 报告。有没有办法扩展此数据 block 报告以添加自定义字段或属性?

任何针对上述问题的指示都会很棒。

在此先感谢您的帮助

最佳答案

Is there a way I can hook into the NameNode execution to identify files being added/modified/deleted from HDFS - Something similar to File system events in Windows?

是的! HDFS 的最新版本包含类似于 Linux inotify 的功能,它允许 HDFS 客户端监听 NameNode 发布的各种文件系统事件。不幸的是,我们目前在 Apache Hadoop 站点上没有关于该功能的明确文档。如果您想了解有关此功能的更多信息,那么我建议您查看 Apache JIRA HDFS-6634 ,这是跟踪该功能开发的主要问题。随附的设计文档和补丁会让您了解它的工作原理。此外,如果您在网络上搜索“HDFS inotify”,我希望您会找到一些有用的演示文稿和示例。

或者,如果您只需要记录客户端对 HDFS 执行的所有操作,那么解析 HDFS 审计日志可能就足够了。这是一个与一般 HDFS 日志保存在同一目录中的文件,该文件记录了针对 NameNode 执行的大多数操作的一行。 log4j.properties sample来自 Hadoop 代码库的 展示了如何启用它。典型的商业发行版默认启用它。

Can I write plug-ins that can extend the functionality by performing custom processing present within NameNode and DataNode.

不,没有通用的插件机制。这是一个有意的设计选择,以避免将可能较慢的自定义代码注入(inject)关键的 HDFS 守护进程的风险,这些守护进程有望很好地扩展。有一些特定的点可以通过实现特定的 Java 类来定制,例如权限检查,但它并不是用于 Hook 任何可能事件的通用插件机制。

上面提到的 inotify 特性涉及到一个客户端连接到 NameNode 并接收事件,然后客户端可以以它认为合适的方式响应这些事件。但是,这不涉及在 NameNode 进程中执行的自定义客户端代码。

Data Nodes normally send back a block report for all the blocks that have been replicated across them. Is there a way to extend this data block report to add custom fields or attributes?

实现此目标的唯一方法是更改​​ HDFS 的代码并自行构建和部署,本质上是创建自己的分支。这将冒创建不兼容版本的风险,该版本不能与 Hadoop 生态系统中的其他应用程序一起使用。 Hadoop RPC 使用 Protobuf 来定义消息传递格式,如果使用得当,它可以实现向前和向后兼容,但您的更改很可能与 Apache 上游发生的开发不同。

如果您认为您的脑海中有一个对所有 HDFS 用户通常有用的 block 报告功能,那么您可以考虑提交 Apache JIRA 以将其作为一个功能提出,并将其纳入 Apache Hadoop 代码库。

关于Hadoop NameNode 和 DataNode 插件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41834324/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com