通过数据应用访问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客户端,具体请参见使用客户端执行查询语句的2~8。
 - 在Presto客户端中执行查询语句select * from hive.default.u_user; 查询alluxio上创建表。
    
    图1 Presto查询alluxio上创建的表