如何在googleclouddataproc启动的spark集群中启用snappy编解码器支持?

jrcvhitl  于 2021-05-29  发布在  Hadoop
关注(0)|答案(2)|浏览(278)

当尝试从使用google cloud dataproc启动的spark集群读取snappy压缩序列文件时,我收到以下警告:

java.lang.RuntimeException: native snappy library not available: this version of libhadoop was built without snappy support.

在这种情况下,启用snappy编解码器支持的最佳方法是什么?

uidvcgyl

uidvcgyl1#

不幸的是,dataproc的启动映像是在没有snappy支持的情况下构建的。我打开了一个bug来修复下一张图片。
解决方法:
首先创建一个小的shell脚本,正确地安装snappy及其本机库支持。为此,我们将使用bdutil使用的相同本机库。我给我的剧本打了电话 setup-snappy.sh :


# !/bin/bash

pushd "$(mktemp -d)"
apt-get install -q -y libsnappy1
wget https://storage.googleapis.com/hadoop-native-dist/Hadoop_2.7.1-Linux-amd64-64.tar.gz
tar zxvf Hadoop_2.7.1-Linux-amd64-64.tar.gz -C /usr/lib/hadoop/

将新的shell脚本复制到您自己的gcs bucket中。为了演示的目的,我们假设桶是 dataproc-actions :

gsutil cp ./setup-snappy.sh gs://dataproc-actions/setup-snappy.sh

启动群集时,请指定初始化操作:

gcloud beta dataproc clusters create --initialization-actions gs://dataproc-actions/setup-snappy.sh mycluster
gwo2fgha

gwo2fgha2#

我自己没有做过,但这篇文章可以解决你的问题:
为了安装和配置其他系统级组件,bdutil支持扩展机制。扩展的一个很好的例子是与bdutil绑定的spark扩展:extensions/spark/spark_env.sh。当运行bdutil扩展时,会添加-e标志,例如,使用hadoop部署spark:
./bdutil-e extensions/spark/spark_env.sh部署

相关问题