更新时间:2024-07-24 GMT+08:00

通过数据应用访问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")

    <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;

    <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

    • <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');

    <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客户端执行查询语句2~8
  6. 在Presto客户端中执行查询语句select * from hive.default.u_user; 查询alluxio上创建表。

    图1 Presto查询alluxio上创建的表