
# 通过数据应用访问Alluxio
访问Alluxio文件系统的端口号是19998，即地址为alluxio://\<alluxio的master节点ip\>:19998/\<PATH\>，本节将通过示例介绍如何通过数据应用（Spark、Hive、Hadoop MapReduce和Presto）访问Alluxio。
#### 使用Alluxio作为Spark应用程序的输入和输出
1. 以root用户登录集群的Master节点，密码为用户创建集群时设置的root密码。
2. 执行如下命令，配置环境变量。 
   **source /opt/client/bigdata_env**
   
   
3. 如果当前集群已启用Kerberos认证，执行如下命令认证当前用户。如果当前集群未启用Kerberos认证，则无需执行此命令。 
   **kinit** ***MRS集群用户***
   例如，**kinit admin**
   
   
4. 准备输入文件，将本地数据复制到Alluxio文件系统中。 
   如在本地/home目录下准备一个输入文件test_input.txt，然后执行如下命令，将test_input.txt文件放入Alluxio中。
   **alluxio fs copyFromLocal /home/test_input.txt /input**
   
   
5. 执行如下命令启动spark-shell。 
   **spark-shell**
   
   
6. 在spark-shell中运行如下命令。 
   **val s = sc.textFile("alluxio://\<Alluxio的节点名称\>:19998/input")**
   **val double = s.map(line =\> line + line)**
   **double.saveAsTextFile("alluxio://\<Alluxio的节点名称\>:19998/output")**
   ![](https://support.huaweicloud.com/cmpntguide-mrs/public_sys-resources/note_3.0-zh-cn.png)
   \<Alluxio的节点名称\>:19998，请根据实际情况替换为AlluxioMaster实例所在所有节点的节点名称与端口号，各个名称与端口之间以英文逗号间隔，例如：node-ana-coremspb.mrs-m0va.com:19998,node-master2kiww.mrs-m0va.com:19998,node-master1cqwv.mrs-m0va.com:19998
   
   
7. 使用"Ctrl + C"退出spark-shell。
8. 通过alluxio命令行**alluxio fs ls /**查看alluxio根目录下存在一个输出目录/output，其中包含了输入文件input的双倍内容。
 
#### 在Alluxio上创建Hive表
1. 以root用户登录集群的Master节点，密码为用户创建集群时设置的root密码。
2. 执行如下命令，配置环境变量。 
   **source /opt/client/bigdata_env**
   
   
3. 如果当前集群已启用Kerberos认证，执行如下命令认证当前用户。如果当前集群未启用Kerberos认证，则无需执行此命令。 
   **kinit** ***MRS集群用户***
   例如，**kinit admin**
   
   
4. 准备输入文件，如在本地/home目录下准备一个输入文件hive_load.txt， 内容为 
   ```
   1, Alice, company A
   2, Bob, company B
   ```
   
   
5. 执行如以下命令，将hive_load.txt文件放入Alluxio中。 
   **alluxio fs copyFromLocal /home/hive_load.txt /hive_input**
   
   
6. 执行如下命令启动hive beeline。 
   **beeline**
   
   
7. 在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;**
   ![](https://support.huaweicloud.com/cmpntguide-mrs/public_sys-resources/note_3.0-zh-cn.png)
   \<Alluxio的节点名称\>:19998，请根据实际情况替换为AlluxioMaster实例所在所有节点的节点名称与端口号，各个名称与端口之间以英文逗号间隔，例如：node-ana-coremspb.mrs-m0va.com:19998,node-master2kiww.mrs-m0va.com:19998,node-master1cqwv.mrs-m0va.com:19998
   
   
8. 执行如下命令查看创建的表。 
   **select \* from u_user;**
   
   
 
#### 在Alluxio上运行Hadoop Wordcount
1. 以root用户登录集群的Master节点，密码为用户创建集群时设置的root密码。
2. 执行如下命令，配置环境变量。 
   **source /opt/client/bigdata_env**
   
   
3. 如果当前集群已启用Kerberos认证，执行如下命令认证当前用户。如果当前集群未启用Kerberos认证，则无需执行此命令。 
   **kinit** ***MRS集群用户***
   例如，**kinit admin**
   
   
4. 准备输入文件，将本地数据复制到Alluxio文件系统中。 
   如在本地/home目录下准备一个输入文件test_input.txt，然后执行如下命令，将test_input.txt文件放入Alluxio中。
   **alluxio fs copyFromLocal /home/test_input.txt /input**
   
   
5. 通过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**
   ![](https://support.huaweicloud.com/cmpntguide-mrs/public_sys-resources/note_3.0-zh-cn.png)
   - \<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
    
   
   
6. 通过alluxio命令行**alluxio fs ls /**查看alluxio根目录下存在一个输出目录/output，包含了wordcount的结果。
 
#### 使用Presto在Alluxio上查询表
1. 以root用户登录集群的Master节点，密码为用户创建集群时设置的root密码。
2. 执行如下命令，配置环境变量。 
   **source /opt/client/bigdata_env**
   
   
3. 如果当前集群已启用Kerberos认证，执行如下命令认证当前用户。如果当前集群未启用Kerberos认证，则无需执行此命令。 
   **kinit** ***MRS集群用户***
   例如，**kinit admin**
   
   
4. 启动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');**
   ![](https://support.huaweicloud.com/cmpntguide-mrs/public_sys-resources/note_3.0-zh-cn.png)
   \<Alluxio的节点名称\>:19998，请根据实际情况替换为AlluxioMaster实例所在所有节点的节点名称与端口号，各个名称与端口之间以英文逗号间隔，例如：node-ana-coremspb.mrs-m0va.com:19998,node-master2kiww.mrs-m0va.com:19998,node-master1cqwv.mrs-m0va.com:19998
   
   
5. 启动Presto客户端，具体请参见[使用Presto客户端执行查询语句](https://support.huaweicloud.com/cmpntguide-mrs/mrs_01_0434.html)的[2](https://support.huaweicloud.com/cmpntguide-mrs/mrs_01_0434.html#mrs_01_0434__li9368161132311)\~[8](https://support.huaweicloud.com/cmpntguide-mrs/mrs_01_0434.html#mrs_01_0434__li15202527183812)。
6. 在Presto客户端中执行查询语句**select \* from hive.default.u_user;** 查询alluxio上创建表。
   
   图1Presto查询alluxio上创建的表   
   ![](https://support.huaweicloud.com/cmpntguide-mrs/zh-cn_image_0264265643.png)
   
   
 
