在 Hadoop 中使用 JuiceFS
对于大数据上云场景,用 JuiceFS 替代 HDFS,或共同使用,是很好的增效降本方案,请阅读「从 Hadoop 到云原生,大数据平台如何做存算分离」。
如果决定在 Hadoop 上使用 JuiceFS,我们推荐 Hadoop SDK 的方式。理论上你也可以通过 RawLocalFileSystem
访问 JuiceFS 的挂载点,但受限于 HDFS 客户端的实现,这样的实践存在性能问题,不推荐使用。
在 Hadoop 中使用 JuiceFS,有一些重要的区别,请阅读本章以了解。
快速上手
下面是以 Amazon EMR 为例介绍如何在 Hadoop 环境中使用 JuiceFS Hadoop SDK 的视频教程,需要注意视频的配音为英文,建议点击视频链接到 Bilibili 网站播放,并开启自动生成中文字幕功能。
用户组管理
Hadoop 中用户组信息是可配置的(hadoop.security.group.mapping
),默认使用系统用户组信息(ShellBasedUnixGroupsMapping
),HDFS 使用的是 NameNode 所在节点的用户组信息,通过管理命令(hdfs dfsadmin -refreshUserToGroupsMappings
)来刷新缓存。
JuiceFS 默认使用的是每个客户端在创建时所在节点的用户组信息,无法刷新。当要修改用户组信息时,需要同步到所有部署 JuiceFS 的节点,并重启使用 JuiceFS 的服务,因此我们推荐将该信息用下方的手段实现动态配置。
JuiceFS Hadoop SDK 可以通过指定配置文件来设置用户组信息,可以将 group 配置文件放置在 JuiceFS 上。这样所有节点就都可以读取同一份 group 配置文件,当需要向修改用户组配置的时候,也只需要修改此配置文件,所有 JuiceFS 客户端会在 2 分钟内自动更新信息,无需重启服务。具体操作如下:
-
在所有节点修改
core-site.xml
,添加如下配置:<property>
<name>juicefs.grouping</name>
<value>jfs://{VOL_NAME}/etc/group</value>
</property>