使用 Hive 和 Hadoop 设置 Presto:加载 Hadoop 本机库时出错

问题描述 投票:0回答:1

我正在尝试在 Hive 也已启动并运行的机器上配置单节点 Presto,还安装了 3 节点 Hadoop 集群并在单独的 3 台机器上运行。以下是我的配置:

操作系统:Ubuntu 20.04 LTS Java:/usr/lib/jvm/java-11-openjdk-amd64 Presto 版本:presto-server-0.272

蜂巢机IP:192.168.AB.004 Hadoop 机器主节点 IP:192.168.AB.001

我已使用以下配置设置 Presto:

/etc/config.properties

coordinator=true
node-scheduler.include-coordinator=true
http-server.http.port=8080
query.max-memory=1GB
query.max-memory-per-node=512MB
discovery-server.enabled=true
discovery.uri=http://192.168.AB.004:8080

/etc/jvm.config

-server
-Xmx16G
-XX:+UseG1GC
-XX:G1HeapRegionSize=32M
-XX:+UseGCOverheadLimit
-XX:+ExplicitGCInvokesConcurrent
-XX:+HeapDumpOnOutOfMemoryError
-XX:OnOutOfMemoryError=kill -9 %p
-Djdk.attach.allowAttachSelf=true
-Djava.library.path=$HADOOP_HOME/lib/native

/etc/log.properties

com.facebook.presto=WARN

/etc/node.properties

node.environment=production
node.id=f7c4bf3c-dbb4-4807-baae-9b7e41807bA9
node.data-dir=/home/user/presto/data/etc

我还创建了一个包含两个文件的 /catalog 文件夹:

/catalog/hive.properties

connector.name=hive-hadoop2
hive.metastore.uri=thrift://192.168.AB.001:9083 ## it is a hadoop master node
hive.config.resources=/home/user/hadoopnode/etc/hadoop/core-site.xml,/home/user/apache-hive-3.1.2-bin/conf/hive-site.xml

/catalog/jmx.properties

connector.name=jmx

但是,当我尝试使用 /bin/launcher start 启动 Presto 时,它以 PID 启动,但一段时间后,当我使用 /bin/launcher status 检查其状态时,它显示“不工作”。

检查server.log文件,发现以下错误:

Error injecting constructor, java.lang.RuntimeException: failed to load Hadoop native library
...
...
...
Caused by: java.lang.UnsatisfiedLinkError: /tmp/hadoop15893511666224505815.tmp: /tmp/hadoop15893511666224505815.tmp: failed to map segment from shared object

谁能帮我解决这个问题吗?

hadoop hive hdfs presto
1个回答
0
投票

我遇到了同样的问题,发现潜在错误

failed to map segment from shared object
可能是由于使用具有
noexec
限制的文件系统引起的。

就我而言,我将

-Djava.io.tmpdir=/path/to/new/tmp
添加到 jvm.config 并且它起作用了

© www.soinside.com 2019 - 2024. All rights reserved.