Presto 使用 Alluxio

Presto 使用 AlluxioPresto使用Alluxio

一、搭建Alluxio集群

1、前期准备

设置不需要密码的从master节点到worker节点的SSH登录,开放所有节点之间的TCP通信。

2、下载解压

下载预编译的Alluxio二进制文件 alluxio-2.7.3-bin.tar.gz,使用以下命令解压缩

tar -xvzpf alluxio-2.7.3-bin.tar.gz

3、基本配置

在master节点上,先创建alluxio-env.sh配置文件:

cd alluxio-2.7.3/conf/
cp alluxio-env.sh.template alluxio-env.sh

在配置文件(alluxio-site.properties)中按如下配置:

export ALLUXIO_HOME=/workspace/alluxio-2.7.3  # alluxio 的安装目录
export ALLUXIO_MASTER_HOSTNAME=2-124  # master 节点

再创建alluxio-site.properties配置文件:

cp alluxio-site.properties.template alluxio-site.properties

在配置文件(alluxio-site.properties)中按如下配置:

alluxio.master.hostname=2-124
alluxio.master.mount.table.root.ufs=hdfs://ns/alluxio/
  • 第一个属性alluxio.master.hostname设置单个master节点的主机名。 示例包括alluxio.master.hostname=1.2.3.4alluxio.master.hostname=node1.a.com

  • 第二个属性alluxio.master.mount.table.root.ufs设置为挂载到Alluxio根目录的底层存储URI。 一定保证master节点和所有worker节点都可以访问此共享存储。 示例包括alluxio.master.mount.table.root.ufs=hdfs://1.2.3.4:9000/alluxio/root/alluxio.master.mount.table.root.ufs=s3//bucket/dir/

接下来,修改masters 配置文件

vim masters 
​
2-124

然后修改worker配置文件

vim workers
​
2-120
2-123
2-124

最后 ssh 将配置好软件分发至各个节点

scp -r  /workspace/alluxio-2.7.3 zhongtai@2-123:/workspace
scp -r  /workspace/alluxio-2.7.3 zhongtai@2-124:/workspace

由于alluxio是内存存储系统,因此需要将其挂到到本地磁盘下。

bin/alluxio-mount.sh Mount workers

如果挂载权限,需要执行如下命令。

bin/alluxio-mount.sh SudoMount workers

4、启动集群

4.1、格式化Alluxio

在首次启动Alluxio之前,必须先格式化日志。

格式化日记将删除Alluxio中的所有元数据。 但是,格式化不会涉及底层存储的数据。

在master节点上,使用以下命令格式化Alluxio:

./bin/alluxio formatMaster

4.2、启动Alluxio

启动Alluxio集群,在master点上确保conf/workers文件中所有worker的主机名都是正确的。

在master点上,运行以下命令启动Alluxio集群:

./bin/alluxio-start.sh all SudoMount
  • 这将在此节点上启动master,并在conf/workers文件中指定的所有节点上启动所有workers。 SudoMount参数使workers可以尝试使用sudo特权(如果尚未挂载)来挂载RamFS。

4.3、验证Alluxio 集群是否正在运行

可以通过 jps 去检查运行状态。

  • master 上:出现 AlluxioProxy、 AlluxioMaster、AlluxioJobMaster

  • worker 上:出现 AlluxioProxy、AlluxioJobWorker、AlluxioWorker

也可以访问 http://<alluxio_master_hostname>:19999以查看Alluxio Master WebUI,通过 http://<alluxio_worker _hostname>:30000 访问Alluxio Worker WebUI

Alluxio带有一个简单的程序可以在Alluxio中读写示例文件。 使用以下命令运行示例程序:

 ./bin/alluxio runTests

alluxio.master.mount.table.root.ufs其配置为 hdfs://ns/时,需要在 conf/添加 hdfs-site.xmlcore-site.xml,否则报错:

2022-04-19 15:49:06,246 INFO  NettyUtils - EPOLL_MODE is available
Exception in thread "main" alluxio.exception.AlluxioException: java.lang.IllegalArgumentException: java.net.UnknownHostException: ns
    at alluxio.exception.status.AlluxioStatusException.toAlluxioException(AlluxioStatusException.java:105)
    at alluxio.client.file.BaseFileSystem.rpc(BaseFileSystem.java:588)
    at alluxio.client.file.BaseFileSystem.exists(BaseFileSystem.java:202)
    at alluxio.client.file.FileSystem.exists(FileSystem.java:275)
    at alluxio.cli.TestRunner.runTests(TestRunner.java:116)
    at alluxio.cli.TestRunner.main(TestRunner.java:99)
Caused by: alluxio.exception.status.InternalException: java.lang.IllegalArgumentException: java.net.UnknownHostException: ns
    at alluxio.exception.status.AlluxioStatusException.from(AlluxioStatusException.java:154)

运行成功显示:

022-04-19 16:02:08,554 INFO  MetricsSystem - Starting sinks with config: {}.
2022-04-19 16:02:08,558 INFO  MetricsHeartbeatContext - Created metrics heartbeat with ID app-8440948274077981993. This ID will be used for identifying info from the client. It can be set manually through the alluxio.user.app.id property
2022-04-19 16:02:08,579 INFO  TieredIdentityFactory - Initialized tiered identity TieredIdentity(node=2-124, rack=null)
2022-04-19 16:02:08,695 INFO  NettyUtils - EPOLL_MODE is available
runTest --operation BASIC --readType CACHE_PROMOTE --writeType MUST_CACHE
2022-04-19 16:02:10,072 INFO  BasicOperations - writeFile to file /default_tests_files/BASIC_CACHE_PROMOTE_MUST_CACHE took 583 ms.
2022-04-19 16:02:10,148 INFO  BasicOperations - readFile file /default_tests_files/BASIC_CACHE_PROMOTE_MUST_CACHE took 76 ms.
Passed the test!

5、常用操作

停止一个Alluxio服务,运行:

./bin/alluxio-stop.sh all

启动一个Alluxio服务,运行:

./bin/alluxio-start.sh all

可以使用以下命令仅停止 或启动 master和workers:

$ ./bin/alluxio-stop.sh masters # 停止所有conf/masters的masters
$ ./bin/alluxio-stop.sh workers # 停止所有conf/workers的workers
$ ./bin/alluxio-start.sh masters # 启动conf/masters中全部的master
$ ./bin/alluxio-start.sh workers # 启动conf/workers中全部的worker

参考链接:在集群上独立运行Alluxio

二、Presto 使用 Alluxio

1、前期准备

  • 安装 Java 8 Update 60 或更高版本(8u60+)的 64 位 Java。

  • 部署 Presto。 本指南基于presto-0.208测试。

  • 已经安装并运行 Alluxio。

  • 确保 Alluxio 客户端 jar 包是可用的。 在从 Alluxio 下载页面下载的压缩包的/<PATH_TO_ALLUXIO>/client/alluxio-2.7.4-client.jar中,可以找到 Alluxio 客户端 jar 包。

  • 确保 Hive metastore 正在运行以提供 Hive 表的元数据信息。

2、基础配置

2.1、配置 Presto 连接到 Hive Metastore Presto 从 Hive Metastore 中获取数据库和表元数据的信息,同时获取表数据的文件系统位置。

编辑 Presto 的 ${PRESTO_HOME}/etc/catalog/hive.properties配置:

connector.name=hive-hadoop2
hive.metastore.uri=thrift://localhost:9083

2.2、分发 Alluxio 客户端 jar 包给所有 Presto 服务器 把 Alluxio 客户端 jar 包/<PATH_TO_ALLUXIO>/client/alluxio-2.7.4-client.jar 放到所有 Presto 服务器的${PRESTO_HOME}/plugin/hive-hadoop2/目录(该目录可能会因版本而不同)中。

cp /workspace/alluxio-2.7.3/client/alluxio-2.7.3-client.jar /workspace/presto-server-0.260/plugin/hive-hadoop2/

重启 Presto 服务:

cd /workspace/presto-server-0.260
bin/launcher restart

3、使用 Presto 在 Alluxio 上查询表

3.1、在 Alluxio 上运行 Apache Hive

1)、 Alluxio 连接 Hive配置

conf/hive-env.sh中设置HIVE_AUX_JARS_PATH

export HIVE_AUX_JARS_PATH=/workspace/alluxio-2.7.3/client/alluxio-2.7.4-client.jar:${HIVE_AUX_JARS_PATH}

2)、分发 Alluxio 客户端 jar 包给所有hive 节点

cp /workspace/alluxio-2.7.3/client/alluxio-2.7.3-client.jar /workspace/hive-2.3.8-bin/lib/

参考链接:在 Alluxio 上运行 Apache Hive

3.2、在 Alluxio 上运行Hadoop MapReduce

1)、 Alluxio 连接 hadoop配置

将以下两个属性添加到Hadoop的安装目录下的conf/core-site.xml中:

<property>
  <name>fs.alluxio.impl</name>
  <value>alluxio.hadoop.FileSystem</value>
  <description>The Alluxio FileSystem (Hadoop 1.x and 2.x)</description>
</property>
<property>
  <name>fs.AbstractFileSystem.alluxio.impl</name>
  <value>alluxio.hadoop.AlluxioFileSystem</value>
  <description>The Alluxio AbstractFileSystem (Hadoop 2.x)</description>
</property>

2)、分发 Alluxio 客户端 jar 包给所有hive 节点

cp /workspace/alluxio-2.7.3/client/alluxio-2.7.3-client.jar /workspace/hadoop-2.10.1/lib

3)、重启HDFS集群。

${HADOOP_HOME}/sbin/stop-dfs.sh
${HADOOP_HOME}/sbin/start-dfs.sh

参考链接:在Alluxio上运行Hadoop MapReduce

3.3、在 Alluxio 上创建 Hive 表

下面是一个依靠 Alluxio 中的文件在 Hive 中创建内部表的示例。 你可以从 MovieLens | GroupLens 下载数据文件(例如,ml-100k.zip)。 解压文件,并将文件u.user上传到 Alluxio 的/ml-100k/目录:

 ./bin/alluxio fs mkdir /ml-100k
 ./bin/alluxio fs copyFromLocal /path/to/ml-100k/u.user alluxio:///ml-100k

执行如下命令,查看是否存在目录路径/ml-100k

bin/alluxio fs ls alluxio://2-124:19998/

从 Alluxio 的已有文件创建一个 Hive 外部表:

hive> CREATE TABLE u_user (
userid INT,
age INT,
gender CHAR(1),
occupation STRING,
zipcode STRING)
ROW FORMAT DELIMITED
FIELDS TERMINATED BY '|'
LOCATION 'alluxio://master_hostname:19998/ml-100k';

3.4、启动Hive metastore 服务。

3.5、启动 Presto 服务器。

3.6、使用Presto 查询表

按照 Presto CLI 指南下载presto-cli-<PRESTO_VERSION>-executable.jar,将其重命名为presto。

并使用chmod +x使其变成可执行的(有时${PRESTO_HOME}/bin/presto中存在可执行的presto,你可以直接使用它)。

运行简单的查询(使用你实际的 Presto 服务器主机名和端口替换localhost:8080):

./presto-cli-0.272-executable.jar --server 2-124:8089 --execute "use default;select * from t_user limit 10;" \
--catalog hive --debug

查询结果:

[zhongtai@2-124 bin]$ ./presto-cli-0.272-executable.jar --server 2-124:8089 --execute "use default;select * from t_user limit 10;" \
> --catalog hive --debug
USE
"1","24","M","technician","85711"
"2","53","F","other","94043"
"3","23","M","writer","32067"
"4","24","M","technician","43537"
"5","33","F","other","15213"
"6","42","M","executive","98101"
"7","57","M","administrator","91344"
"8","36","M","administrator","05201"
"9","29","M","student","01002"
"10","53","M","lawyer","90703"

在完成基础配置后,Presto 应该能够访问 Alluxio 中的数据。

要为 Presto 配置更高级的特性,请参考连接:Presto 使用 Alluxio

今天的文章Presto 使用 Alluxio分享到此就结束了,感谢您的阅读。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
如需转载请保留出处:https://bianchenghao.cn/11284.html

(0)
编程小号编程小号

相关推荐

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注