通过数据应用访问Alluxio
访问Alluxio文件系统的端口号是19998,即地址为alluxio://<alluxio的master节点ip>:19998/<PATH>,本节将通过示例介绍如何通过数据应用(Spark、Hive、Hadoop MapReduce和Presto)访问Alluxio。
使用Alluxio作为Spark应用程序的输入和输出
- 以root用户登录集群的Master节点,密码为用户创建集群时设置的root密码。
- 执行如下命令,配置环境变量。
source /opt/client/bigdata_env
- 如果当前集群已启用Kerberos认证,执行如下命令认证当前用户。如果当前集群未启用Kerberos认证,则无需执行此命令。
kinit MRS集群用户
例如,kinit admin
- 准备输入文件,将本地数据复制到Alluxio文件系统中。
如在本地/home目录下准备一个输入文件test_input.txt,然后执行如下命令,将test_input.txt文件放入Alluxio中。
alluxio fs copyFromLocal /home/test_input.txt /input
- 执行如下命令启动spark-shell。
spark-shell
- 在spark-shell中运行如下命令。
val s = sc.textFile("alluxio://<Alluxio的节点名称>:19998/input")
val double = s.map(line => line + line)
double.saveAsTextFile("alluxio://<Alluxio的节点名称>:19998/output")
<Alluxio的节点名称>:19998,请根据实际情况替换为AlluxioMaster实例所在所有节点的节点名称与端口号,各个名称与端口之间以英文逗号间隔,例如:node-ana-coremspb.mrs-m0va.com:19998,node-master2kiww.mrs-m0va.com:19998,node-master1cqwv.mrs-m0va.com:19998
- 使用“Ctrl + C”退出spark-shell。
- 通过alluxio命令行alluxio fs ls /查看alluxio根目录下存在一个输出目录/output,其中包含了输入文件input的双倍内容。
在Alluxio上创建Hive表
- 以root用户登录集群的Master节点,密码为用户创建集群时设置的root密码。
- 执行如下命令,配置环境变量。
source /opt/client/bigdata_env
- 如果当前集群已启用Kerberos认证,执行如下命令认证当前用户。如果当前集群未启用Kerberos认证,则无需执行此命令。
kinit MRS集群用户
例如,kinit admin
- 准备输入文件,如在本地/home目录下准备一个输入文件hive_load.txt, 内容为
1, Alice, company A 2, Bob, company B
- 执行如以下命令,将hive_load.txt文件放入Alluxio中。
alluxio fs copyFromLocal /home/hive_load.txt /hive_input
- 执行如下命令启动hive beeline。
beeline
- 在beeline中运行如下命令,根据Alluxio中的输入文件进行创表。
CREATE TABLE u_user(id INT, name STRING, company STRING) ROW FORMAT DELIMITED FIELDS TERMINATED BY ',' STORED AS TEXTFILE;
LOAD DATA INPATH 'alluxio://<Alluxio的节点名称>:19998/hive_input' INTO TABLE u_user;
<Alluxio的节点名称>:19998,请根据实际情况替换为AlluxioMaster实例所在所有节点的节点名称与端口号,各个名称与端口之间以英文逗号间隔,例如:node-ana-coremspb.mrs-m0va.com:19998,node-master2kiww.mrs-m0va.com:19998,node-master1cqwv.mrs-m0va.com:19998
- 执行如下命令查看创建的表。
select * from u_user;
在Alluxio上运行Hadoop Wordcount
- 以root用户登录集群的Master节点,密码为用户创建集群时设置的root密码。
- 执行如下命令,配置环境变量。
source /opt/client/bigdata_env
- 如果当前集群已启用Kerberos认证,执行如下命令认证当前用户。如果当前集群未启用Kerberos认证,则无需执行此命令。
kinit MRS集群用户
例如,kinit admin
- 准备输入文件,将本地数据复制到Alluxio文件系统中。
如在本地/home目录下准备一个输入文件test_input.txt,然后执行如下命令,将test_input.txt文件放入Alluxio中。
alluxio fs copyFromLocal /home/test_input.txt /input
- 通过yarn jar执行wordcount作业。
yarn jar /opt/share/hadoop-mapreduce-examples-<hadoop版本号>-mrs-<mrs集群版本号>/hadoop-mapreduce-examples-<hadoop版本号>-mrs-<mrs集群版本号>.jar wordcount alluxio://<Alluxio的节点名称>:19998/input alluxio://<Alluxio的节点名称>:19998/output
- <hadoop版本号>请根据实际情况替换。
- <mrs集群版本号>替换为MRS的大版本号,如MRS 1.9.2版本集群此处为mrs-1.9.0。
- <Alluxio的节点名称>:19998,请根据实际情况替换为AlluxioMaster实例所在所有节点的节点名称与端口号,各个名称与端口之间以英文逗号间隔,例如:node-ana-coremspb.mrs-m0va.com:19998,node-master2kiww.mrs-m0va.com:19998,node-master1cqwv.mrs-m0va.com:19998
- 通过alluxio命令行alluxio fs ls /查看alluxio根目录下存在一个输出目录/output,包含了wordcount的结果。
使用Presto在Alluxio上查询表
- 以root用户登录集群的Master节点,密码为用户创建集群时设置的root密码。
- 执行如下命令,配置环境变量。
source /opt/client/bigdata_env
- 如果当前集群已启用Kerberos认证,执行如下命令认证当前用户。如果当前集群未启用Kerberos认证,则无需执行此命令。
kinit MRS集群用户
例如,kinit admin
- 启动hive beeline在alluxio上创建表。
beeline
CREATE TABLE u_user (id int, name string, company string) ROW FORMAT DELIMITED FIELDS TERMINATED BY ',' LOCATION 'alluxio://<Alluxio的节点名称>:19998/u_user';
insert into u_user values(1,'Alice','Company A'),(2, 'Bob', 'Company B');
<Alluxio的节点名称>:19998,请根据实际情况替换为AlluxioMaster实例所在所有节点的节点名称与端口号,各个名称与端口之间以英文逗号间隔,例如:node-ana-coremspb.mrs-m0va.com:19998,node-master2kiww.mrs-m0va.com:19998,node-master1cqwv.mrs-m0va.com:19998
- 启动Presto客户端,具体请参见使用Presto客户端执行查询语句的2~8。
- 在Presto客户端中执行查询语句select * from hive.default.u_user; 查询alluxio上创建表。
图1 Presto查询alluxio上创建的表