ApacheDrillをS3のJSONに対して使う

とりあえずS3に保存したデータ(ログ等)をちょちょっと集計するために何か方法はないかと調べてみたところ、ApacheDrill+Jets3tの構成でできるという記事を見つけたので試した。

こちらのサイトを参考にした。
https://qiita.com/devneko/items/033c6530b123131421de

Apache Drill

EmbeddedModeとDistributedModeがあり、EmbeddedModeはシングルノードで実行、DistributedModeは分散基盤上の複数のノードで実行する用途になっている。
今回はEmbeddedModeで構成する。

インストール

https://drill.apache.org/docs/installing-drill-on-linux-and-mac-os-x/

_url="http://apache.mirrors.hoobly.com/drill/drill-1.11.0/apache-drill-1.11.0.tar.gz"

wget -O "$(basename "${_url}")" "${_url}"
tar zxf "$(basename "${_url}")"

_pathDrillHome="$(cd "$(basename "${_url}" '.tar.gz')" && pwd)"

およそ220MBの空きが必要。

実行

bin/drill-embeddedを実行すればよい。
https://drill.apache.org/docs/starting-drill-on-linux-and-mac-os-x/

0: jdbc:drill:zk=local>

というプロンプトが表示されれば正しく起動しているようだ。
約2.8GBのメモリが必要で、それが確保できないと起動エラーになる。

JetS3t (jet-set)

Amazon S3/CloudFrontやGoogle Storageを使うツールキット。
これをApache Drillに組み込むことでS3上のデータに対してクエリを処理できるようになる。

インストール

_url="https://bitbucket.org/jmurty/jets3t/downloads/jets3t-0.9.4.zip"

wget -O "$(basename "${_url}")" "${_url}"
unzip "$(basename "${_url}")"

cp -piv "$(basename "${_url}" '.zip')/jars/$(basename "${_url}" '.zip').jar" "${_pathDrillHome}/jars/3rdparty/"

再びApache Drill

cd "${_pathDrillHome}"

_f="$(find ./ -type f -name "hadoop-excludes.txt")"
cp -piv "${_f}"{,.org}
egrep -v '^jets3t$' "${_f}.org" > "${_f}"
diff "${_f}"{.org,}

_f="$(find ./ -type f -name "core-site-example.xml")"
cp -piv "${_f}" "${_f//-example}"


# AWS ACCESS KEY FOR S3 BUCKET
_keyAccess="123456789ABCDEF12345"
# AWS SECRET KEY FOR S3 BUCKET
_keySecret="123456789ABCDFEF0123456789ABCDEF0123456789"


sed -i -e "s/ENTER_YOUR_ACCESSKEY/${_keyAccess}/g" -e "s/ENTER_YOUR_SECRETKEY/${_keySecret}/g" "${_f}"

起動

bin/drill-embedded

これでうまくいくはず。
(サーバのRAM不足でプロセスが起動せず、未検証…)

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です