在EMR存算分离模式下,Proton还提供加速模式,通过将元数据、数据缓存到EMR节点,可以获得比直接访问TOS更好的性能。
在创建EMR集群时,选择Proton服务,部署后自动开启加速模式。
如果是已有集群,可以通过“服务列表”-“添加服务”-选择“Proton”,为集群添加Proton服务,添加完成后按页面提示重启HDFS等服务,完成后便自动开启缓存加速模式。
更多集群创建细节详见:创建集群
在启用Proton加速模式后,需要从底层存储加载元数据到Proton MetaServer中,否则会出现文件找不到等异常。
通过执行load命令批量加载底层存储元数据。
load命令批量加载指定目录下所有目录和文件元数据
proton load -t 16 -m tos://{your-bucket-name}/demo-data/
成功后会提示“Finish loading path tos://{your-bucket-name}/demo-data/”。当路径下对象非常多时,元数据加载耗时会久一些。可以通过-t参数指定并发加载线程数,默认为节点cpu core数。
使用HDFS客户端验证TOS访问,能成功看到路径下的目录或文件表示加载成功。
hdfs dfs -ls tos://{your-bucket-name}/demo-data
注意
如果没有经过Proton,直接修改了TOS上的文件或目录,会导致Proton与TOS之间元数据不一致,进而遇到FileNotFoundException异常或查询结果不符合预期。
需要通过proton sync命令进行元数据同步,使用方式详见:Proton Cli - 同步缓存数据块
更多Proton命令详见:Proton Cli
更多元数据加载方法及最佳实践详见:Proton元数据同步
目前火山 EMR 集群已经为您配置好了 HDFS、Hive、Spark 等服务的相关配置,您无需额外配置。
下面Hive为例展示:
通过以下命令,进入hive命令行
# 切换为hive用户 su hive # 进入hive命令行 hive
建hive表,location指向TOS
create table test_table( name string, value int ) location "tos://{your-bucket-name}/hive-demo/test_table"
向表中插入数据
insert into test_table values ("aa", 11), ("bb", 22), ("cc", 33);
查询是否写入成功
SELECT * FROM test_table;
退出hive命令行
exit;
通过HDFS命令行查看数据是否成功写入TOS
hdfs dfs -ls -R tos://{your-bucket-name}/hive-demo