SlideShare a Scribd company logo
1 of 42
© 2021 NTT DATA Corporation
01/30/2021
Masatake Iwasaki
NTT DATA
Apache BigtopによるHadoopエコシステムのパッケージング
© 2021 NTT DATA Corporation 2
Apache Bigtopの取り組みを紹介します
Hadoopエコシステムのプロダクトのパッケージングをしています
多くのプロダクトはJavaで実装されていて、Java 8前提の話として聞いてください
ときどき出てくるBIGTOP-12345みたいなのはJIRAのissue keyです
はじめに
© 2021 NTT DATA Corporation 3
HadoopエコシステムとBigtop
© 2021 NTT DATA Corporation 4
大規模データ処理基盤
以下をセットで提供
分散ファイルシステム(HDFS)
計算リソース管理機構(YARN)
分散処理フレームワーク(MapReduce)
汎用的な(Linux)サーバ(〜10000台)でクラスタを構成する
大量のデータを格納し、並列分散処理する
2006年に登場
Googleが論文の形で紹介した技術を参考にして作られたOSS実装
Hadoopとは何か?
© 2021 NTT DATA Corporation 5
実用上、多種多様な周辺ミドルウェアと組み合わせて利用する
Spark: モダンな分散処理基盤/API (deprecating MapReduce)
Hive: SQL(ライクな)言語処理系
HBase: 分散KVS (like Bigtable)
Sqoop: データローダ
Oozie: ワークフロースケジューラ
Ranger: アクセス制御
...
プロダクト間の依存関係は複雑
バージョンアップで互換性に影響する変更がときどき入る
機能するバージョンの組み合わせを見つけるのは大変
Hadoopエコシステム
© 2021 NTT DATA Corporation 6
ディストリビューション: 機能する組み合わせでパッケージングしたもの
企業(ディストリビュータ)がビジネスとして提供する
パッケージング、継続的なupdate、テクニカルサポート
Linux(OS)の例として、Red Hat(IBM社)のRed Hat Enterprise Linux
ベースバージョンを(原則)固定してパッケージング
upstreamの機能追加やバグ修正をbackportしていく
互換性を壊す修正は入れないか、壊さないように直す
minor updateしても(原則)アプリケーションに影響を与えない
HadoopエコシステムではCloudera社がディストリビューションを提供
Red Hat同様のベースバージョン固定方式で互換性を維持
多種プロダクトの動く組み合わせをテストして提供
独自プロビジョニングツールによる運用が前提
(現在は)(CentOSのような)無償版はない
ディストリビューション
© 2021 NTT DATA Corporation 7
コミュニティベースの取り組み
Hadoopエコシステムのミドルウェアのパッケージングを提供
プロダクトとバージョンの組み合わせ選定
必要に応じてパッチ適用
.rpmおよび.debを作るための資材
# 過去に提供/公開されたCDH用の資材がベース
プロビジョニング資材
Dockerファイル/イメージ
クラスタ起動用docker-compose資材
Puppetマニフェスト
テストフレームワークとテストケース
以上をGradleタスクとして簡易に実行する枠組み
継続的なpatchのバックポートやminor updateは提供していない
テストはそれほど網羅的ではない
Apache Bigtop
© 2021 NTT DATA Corporation 8
Products:
Hadoop 2.10.1 # 次のバージョンでHadoop 3になる
HBase 1.5.0
Hive 2.3.6
Kafka 2.4.0
Phoenix 4.15.0-HBase-1.5
Spark 2.4.5
Zookeeper 3.4.13
...
Distros:
CentOS 7 and 8, Debian 9 and 10, Fedora 31, Ubuntu 16.04 and 18.04
Architectures:
x86_64, aarch64 # ppc64leは(マシンがなくて)テストされてない
Bigtop 1.5.0
© 2021 NTT DATA Corporation 9
Compatibility
© 2021 NTT DATA Corporation 10
HadoopはJavaで実装されている
Java部分は多くのプラットフォームで動く
性能向上等の目的で(Cで書かれた)nativeコードをJNI経由で利用
nativeコードがなければpure Java実装にフォールバック
実用上Linuxのシステムコール前提な部分が多い
サーバ側は実態としてLinux前提
コード上にWindows対応の名残はあるけどあまりメンテされてない
Microsoft AzureのHDInsightもUbuntuを利用
# Amazon EMRはAmazon Linux
BigtopもLinuxのみを対象にパッケージングを行なっている
プラットフォーム互換性
© 2021 NTT DATA Corporation 11
Javaではpublic, protected, privateのような修飾子で可視性を制御
publicなクラス/メソッドが外部から呼べるAPI
削除したりシグネチャ/仕様を変えると非互換な変更
呼び出している側が動かなくなったり、ビルドが通らなくなったりする
ユーザ向けではないが、モジュール間で参照する意図でpublicなクラス/メソッドも多い
(Hadoopは)それを示すためのInterfaceAudienceアノテーションを使っている
@InterfaceAudience.PublicなものだけJavadocが出力される
@InterfaceAudience.Privateだとマイナーバージョンアップでも変更されうる
アノテーションがついてるから外から呼べなくなるわけではない
歴史的経緯で外部から呼ばれていることもありがち
Java 9(以降)に移行するとモジュール機能(JPMS)で整理することもできるはずだけど...
JavaのAPI
@InterfaceAudience.LimitedPrivate({ "MapReduce", "HBase" })
@InterfaceStability.Unstable
public class DistributedFileSystem extends FileSystem
implements KeyProviderTokenIssuer, BatchListingOperations {
DistributedFileSystem.java:
© 2021 NTT DATA Corporation 12
Hadoopエコシステムのプロダクト(の多く)はMavenを利用
多くのプロダクトに依存し多くのプロダクトから依存される
ミドルウェア間で競合しがちなdependencies
SLF4J, Log4j
commons-logging, commons-cli, commons-httpclient
Jackson
Guava
Netty, Jetty, Jersey
protobuf-java
ZooKeeper, Curator
...
Mavenのdependency
© 2021 NTT DATA Corporation 13
https://maven.apache.org/guides/introduction/introduction-to-dependency-mechanism.html#Transitive_Dependencies
依存ライブラリの依存ライブラリも依存ライブラリ
同一クラスローダ上に同じクラスの異なるバージョンは並存できない
依存関係ツリー上に複数のバージョンがある場合、近いものが勝つ (dependency mediation)
mediationの結果、問題なくビルドできて動くという保証はない
Hadoopエコシステムのプロダクトの依存関係ツリーは、さらに深くなる
Transitive dependencies
$ mvn dependency:tree -Dmaven-dependency-plugin.version=2.10 -Dverbose
...
[INFO] org.apache.hadoop:hadoop-common:jar:3.4.0-SNAPSHOT
...
[INFO] +- org.apache.httpcomponents:httpclient:jar:4.5.13:compile
[INFO] | +- org.apache.httpcomponents:httpcore:jar:4.4.13:compile
[INFO] | +- (commons-logging:commons-logging:jar:1.1.3:compile - version managed from 1.2; omitted for duplicate)
...
[INFO] +- commons-logging:commons-logging:jar:1.1.3:compile
...
[INFO] +- commons-beanutils:commons-beanutils:jar:1.9.4:compile
[INFO] | +- (commons-logging:commons-logging:jar:1.1.3:compile - version managed from 1.2; omitted for duplicate)
[INFO] | - (commons-collections:commons-collections:jar:3.2.2:compile - omitted for duplicate)
[INFO] +- org.apache.commons:commons-configuration2:jar:2.1.1:compile
[INFO] | - (commons-logging:commons-logging:jar:1.1.3:compile - version managed from 1.2; omitted for duplicate)
hadoop-commonのcommon-loggingに関するdependency mediation:
© 2021 NTT DATA Corporation 14
Javaで実装された(主に運用用の)APIを呼び出すモジュールを実行するシェルスクリプト
dependentがAPIではなくCLIを実行し、出力をparseすることもある
出力のフォーマットの変更や、warning出力の追加が問題になりがち (HADOOP-11257)
bash-3.0以上が前提 (HADOOP-9902)
CLI
© 2021 NTT DATA Corporation 15
誰がどういう操作をしたかの記録
タブ区切りの独自フォーマット
いまならもっとよいフォーマットにできそうだが..
機械的に処理してチェックされがちなので積極的に変えない
監査ログ
ip=/x.x.x.x cmd=mkdirs src=/tmp dst=null perm=centos:supergroup:rwxr-xr-x proto=rpc
ip=/x.x.x.x cmd=setPermission src=/tmp dst=null perm=centos:supergroup:rwxrwxrwx proto=rpc
ip=/x.x.x.x cmd=create src=/tmp/README.txt._COPYING_ dst=null perm=centos:supergroup:rw-r--r-- proto=rpc
ip=/x.x.x.x cmd=rename src=/tmp/README.txt._COPYING_ dst=/tmp/README.txt perm=centos:supergroup:rw-r--r-- proto=rpc
ip=/x.x.x.x cmd=listStatus src=/tmp dst=null perm=null proto=rpc
ip=/x.x.x.x cmd=open src=/tmp/README.txt dst=null perm=null proto=rpc
...
HDFSのauditログ(の一部):
© 2021 NTT DATA Corporation 16
動作状態や性能を監視する上で有用な統計情報など
JMXで提供している
WebインタフェースからJSON形式で取得することもできる
項目の追加は問題なくできる
既存の項目の変更や削除はincompatible changeとして避けるべき
メトリクス
$ curl localhost:9870/jmx?qry=Hadoop:service=NameNode,name=ReplicatedBlocksState
{
"beans" : [ {
"name" : "Hadoop:service=NameNode,name=ReplicatedBlocksState",
"modelerType" : "org.apache.hadoop.hdfs.server.namenode.FSNamesystem",
"LowRedundancyReplicatedBlocks" : 0,
"CorruptReplicatedBlocks" : 0,
"MissingReplicatedBlocks" : 0,
"MissingReplicationOneBlocks" : 0,
"BytesInFutureReplicatedBlocks" : 0,
"PendingDeletionReplicatedBlocks" : 0,
"TotalReplicatedBlocks" : 1
} ]
}
JMXJsonServletを利用したメトリクス取得:
© 2021 NTT DATA Corporation 17
各プロダクトの開発者は(基本的には)それぞれ別の人
テストコードから外部向けではないAPIが使われがち
ライブラリを脆弱性起因でバージョンアップしたら非互換な変更もセットでついてきたり
互換性は意外とよく壊れる
© 2021 NTT DATA Corporation 18
Bigtop basics
© 2021 NTT DATA Corporation 19
ソースコードはGitHubにある
ASF(Apache Software Foundation)のプロジェクト全般
# 2019年4月から
# https://blogs.apache.org/foundation/entry/the-apache-software-foundation-expands
開発の管理はJIRA
https://issues.apache.org/jira/projects/BIGTOP
issueを作ってパッチを添付するかpull requestのリンクを貼る
Bigtopのソースコード
$ git clone https://github.com/apache/bigtop
$ cd bigtop
Bigtopのソースコードの取得:
© 2021 NTT DATA Corporation 20
Gradleを利用して各種処理を実行する
Bigtopのタスク
$ ./gradlew tasks
> Task :tasks
------------------------------------------------------------
Tasks runnable from root project - Bigtop
------------------------------------------------------------
Apache Creadur tasks
--------------------
rat - Runs Apache Rat checks
Build tasks
-----------
assemble - Assembles the outputs of this project.
...
タスク一覧の表示:
© 2021 NTT DATA Corporation 21
部品表
対象プロダクトとそのバージョンなどが記述されている
Bigtop BOM
$ cat bigtop.bom
bigtop { // *the name should be change: the parsing code depends on it*
version = "STACK-VERSION" // *required*
stack { // *required* Fundamental properties of the Stack: JDK, SDK, GDK, etc
'jdk' { version = '1.8'; version_base = version }
'scala' { version = '2.10.4'; version_base = version }
}
...
components {
'hadoop' {
name = 'hadoop'
relNotes = 'Apache Hadoop'
version { base = '3.2.2'; pkg = base; release = 1 }
tarball { destination = "${name}-${version.base}.tar.gz"
source = "${name}-${version.base}-src.tar.gz" }
url { download_path = "/$name/common/$name-${version.base}"
site = "${apache.APACHE_MIRROR}/${download_path}"
archive = "${apache.APACHE_ARCHIVE}/${download_path}" }
}
...
BOMの内容:
© 2021 NTT DATA Corporation 22
Bigtop toolchain
© 2021 NTT DATA Corporation 23
プロダクト群をビルドするための環境をセットアップする資材
Puppetをインストールするスクリプト
ビルドツール群をインストールPuppetマニフェスト
JDK, Maven, GCC, CMake, Protocol Buffers, lib*-devel, ...
OS提供パッケージだとバージョンが合わないものは個別にセットアップ
プラットフォーム差分に対応するためのワークアラウンドを入れることもある
例) aarch64対応のパッチを当ててprotobuf-2.5.0をビルド
bigtop_toolchain
$ sudo bigtop_toolchain/bin/puppetize.sh
$ ./gradlew toolchain
bigtop_toolchainによるビルド環境のセットアップ:
© 2021 NTT DATA Corporation 24
packaging
© 2021 NTT DATA Corporation 25
プロダクトをビルドしてパッケージングする
「プロダクト名-pkg」というGradleタスクで実行
.rpmと.debの2種類に対応
その環境に応じたパッケージが作られる
Red Hat系なら.rpm
Debian系なら.deb
bigtop-package
$ ./gradlew hadoop-pkg
$ ./gradlew zookeeper-pkg
$ ./gradlew bigtop-jsvc-pkg bigtop-utils-pkg bigtop-groovy-pkg
パッケージングタスクの実行例:
© 2021 NTT DATA Corporation 26
共通のビルド手順とインストール手順を.debと.rpm用の資材から呼び出して使う
ビルド手順: do-component-build
インストール手順: install_プロダクト名.sh
パッケージング資材
bigtop-packages
├── src
│ ├── common
│ │ ├── hadoop
│ │ │ ├── do-component-build
│ │ │ ├── install_hadoop.sh
│ │
│ ├── deb
│ │ ├── hadoop
│ │ │ ├── control
│ │ │ ├── rules
│ │
│ ├── rpm
│ │ ├── hadoop
│ │ │ ├── SPECS
│ │ │ │ ├── hadoop.spec
パッケージング資材の配置:
© 2021 NTT DATA Corporation 27
パッケージング時にpatch.*diffという名前のファイルをpatchとして適用
リリース版で解決できない問題に対応するため
特定プラットフォームでビルドが失敗する問題への対処
# Ubuntu, x86_64を暗黙に想定しているパターンが多いような
パッケージング対象バージョンに含まれない修正のバックポート
互換性を壊す変更のrevert
プロダクト間のdependencyのつじつま合わせ
プロダクトA, B, Cの3つが同時に動くバージョンの組み合わせが存在しないなど
独自に修正するとしてもpom.xmlぐらい
patchを書いたらなるべくfeedback..
Bigtopパッケージングにおけるパッチ適用
$ find bigtop-packages/src/common/hadoop -name 'patch*.diff' | sort
bigtop-packages/src/common/hadoop/patch0-revert-HADOOP-16598.diff
bigtop-packages/src/common/hadoop/patch1-HADOOP-15939.diff
bigtop-packages/src/common/hadoop/patch2-exclude-spotbugs-annotations.diff
bigtop-packages/src/common/hadoop/patch3-fix-broken-dir-detection.diff
Bigtopが適用するpatch:
© 2021 NTT DATA Corporation 28
$BIGTOP_HOME/output 下に出力されるパッケージファイルでリポジトリを作成する
repoタスクで実行
その環境に応じたリポジトリが作られる (Red Hat系ならYumの、Debian系ならAptの)
パッケージリポジトリの作成
$ ./gradlew repo
$ tree output
...
├── hadoop
│ ├── hadoop-3.2.2-1.el8.src.rpm
│ └── x86_64
│ ├── hadoop-3.2.2-1.el8.x86_64.rpm
│ ├── hadoop-client-3.2.2-1.el8.x86_64.rpm
│ ├── hadoop-conf-pseudo-3.2.2-1.el8.x86_64.rpm
...
│ ├── hadoop-hdfs-3.2.2-1.el8.x86_64.rpm
...
├── repodata
...
│ ├── aa0ff69b812187315d6825fcf7d862c326ac1ba42bf9625e57b826cd6462a68c-filelists.xml.gz
│ ├── cb8d35ada5c22a89e1f65a62229acde45b4175d5281a513fc6e1190d0ce4544c-filelists.sqlite.bz2
│ ├── f2077b7afd203a11428c21ca3c41f02a786fc2f514888274f12f514673d4f88f-primary.xml.gz
│ └── repomd.xml
リポジトリの作成(CentOS 8で実行した場合の例):
© 2021 NTT DATA Corporation 29
「プロダクト名-pkg-ind」というGradleタスクで実行(in Docker container)
異なるOS用のパッケージをビルドできる
Docker Hubのbigtop/slavesのイメージを利用
-POS=centos-7 -Pprefix=trunkだとtrunk-centos-7タグになる(x86_64の場合)
aarch64のマシン上でやるとtrunk-centos-7-aarch64タグ
試行錯誤しつつbigtop-packageの資材を修正する場合には使いにくい(かも)
Dockerコンテナを利用したパッケージング
$ ./gradlew hadoop-pkg-ind -POS=centos-7 -Pprefix=trunk
パッケージングタスクの実行例:
© 2021 NTT DATA Corporation 30
provisioning
© 2021 NTT DATA Corporation 31
Dockerコンテナを起動してPuppetでクラスタを構築するスクリプト
事前にDockerとdocker-composeのセットアップが必要
./gradlew docker-provisionerで実行できる(がスクリプトを直接使った方が微妙に便利..)
Docker provisioner
$ cd provisioner/docker
$ ./docker-hadoop.sh 
--create 3 
--image bigtop/puppet:trunk-centos-8 
--memory 8g 
--stack hdfs,yarn,mapreduce 
--repo file:///bigtop-home/output 
--disable-gpg-check
$ ./docker-hadoop.sh --list
Name Command State Ports
------------------------------------------------------------
20210124_122554_r12819_bigtop_1 /sbin/init Up
20210124_122554_r12819_bigtop_2 /sbin/init Up
20210124_122554_r12819_bigtop_3 /sbin/init Up
$ ./docker-hadoop.sh --exec 1 /bin/bash
...
Dockerコンテナを利用したデプロイの例:
© 2021 NTT DATA Corporation 32
docker-hadoop.sh --createで出力されたファイルを見ると参考になる
Bigtopのソースツリーを/bigtop-homeにマウント
Hieraの設定を生成してpuppet apply
Docker provisionerの仕組み
$ cat docker-compose.yml
bigtop:
...
volumes:
- ../../:/bigtop-home
- ./config/hiera.yaml:/etc/puppet/hiera.yaml
- ./config/hieradata:/etc/puppet/hieradata
- ./config/hosts:/etc/hosts
- /sys/fs/cgroup:/sys/fs/cgroup:ro
$ cat config/hieradata/site.yaml
bigtop::hadoop_head_node: b2d614be6039.bigtop.apache.org
hadoop::hadoop_storage_dirs: [/data/1, /data/2]
bigtop::bigtop_repo_uri: file:///bigtop-home/output
bigtop::bigtop_repo_gpg_check: false
hadoop_cluster_node::cluster_components: [hdfs,yarn,mapreduce]
hadoop_cluster_node::cluster_nodes: [172.17.0.3, 172.17.0.4, 172.17.0.2]
...
Docker provisionerの設定ファイル(の一部):
© 2021 NTT DATA Corporation 33
Hadoopクラスタを構築するためのPuppetマニフェスト
Docker provisioner抜きで使うこともできる
bigtop-deploy
$ tree bigtop-deploy/puppet
bigtop-deploy/puppet
├── hieradata
│ ├── bigtop
│ │ ├── cluster.yaml
...
│ └── site.yaml
├── hiera.yaml
├── manifests
│ ├── bigtop_repo.pp
│ ├── cluster.pp
...
│ ├── hadoop
...
│ │ ├── manifests
│ │ │ └── init.pp
│ │ └── templates
│ │ ├── container-executor.cfg
│ │ ├── core-site.xml
...
Puppetマニフェストのファイルツリー:
© 2021 NTT DATA Corporation 34
スクリプト経由でコンテナ停止と、一時ファイル等の削除
クラスタ起動中の問題などでやり直す場合も、まず一度--destroyしてから
Dockerクラスタの終了
$ ./docker-hadoop.sh --destroy
Dockerコンテナクラスタの停止:
© 2021 NTT DATA Corporation 35
tests
© 2021 NTT DATA Corporation 36
パッケージをデプロイした状態で動くかざっくり確認するためのテスト
おもにGroovyで書かれている
CLIを実行して期待する出力が得られるかを確認というパターンが多い
smoke-tests
$ cat bigtop-tests/test-artifacts/hadoop/src/main/groovy/.../hdfs/TestTextSnappy.groovy
...
@Test
void testTextSnappy() {
String cmd = "hadoop fs -text ${testDir}/${snappyFileName}"
System.out.println(cmd)
sh.exec(cmd)
String output = sh.getOut().join("n")
logError(sh)
String expected = "1traffertyt31n2tjonest33n3tsteinbergt33"
System.out.println("Expected output:n${expected}")
System.out.println("Actual output:n${output}")
assertEquals("Incorrect output", expected, output)
}
smoke-testsのテストケースの例:
© 2021 NTT DATA Corporation 37
Docker provisionerで起動したクラスタ上でテストを実行できる
やっていることはgradleタスクの実行
--smoke-test hdfs だと bigtop-tests:smoke-tests:hdfs:test タスク
Docker provisionerでtestを実行
$ ./docker-hadoop.sh --smoke-tests hdfs,yarn,mapreduce
起動済みのDockerコンテナを利用してsmoke testsを実行:
© 2021 NTT DATA Corporation 38
Bigtop 3.0.0
© 2021 NTT DATA Corporation 39
https://issues.apache.org/jira/browse/BIGTOP-3471
Hadoop 3.x対応 (なのでBigtopのバージョンも分かりやすく3.0に)
付随してHBase 1.x -> 2.x, Hive 2.x -> 3.x
開発が止まったプロダクトをdrop
特にHadoop 3.x対応が行われていないもの
古いOSのサポートをやめる (Ubuntu 16.04とDebian 9)
新しいOSのサポート(Ubuntu 20.04とDebian 11?)
# CentOS 8は...?
BOM of Bigtop 3.0.0
© 2021 NTT DATA Corporation 40
Summary
© 2021 NTT DATA Corporation 41
Apache Bigtopがやってるのは泥臭い作業
Hadoopエコシステムを使う敷居を下げるには必要
いろいろ勉強にはなる
RedHat系とDebian系のOSいろいろ
Java/Mavenのdependency managementの仕組みと苦労
ネイティブライブラリにまつわるあれこれ
コンテナとプロビジョニングツールを利用したテストとCI
Amazon EMRやAzure HDInsightの理解にも役立つかも?
使ってみたり、パッチを投げてみたりしてください
まとめ
© 2021 NTT DATA Corporation
本資料に記載されている会社名、商品名、又はサービス名は、各社の登録商標又は商標です。

More Related Content

What's hot

Apache Arrow - データ処理ツールの次世代プラットフォーム
Apache Arrow - データ処理ツールの次世代プラットフォームApache Arrow - データ処理ツールの次世代プラットフォーム
Apache Arrow - データ処理ツールの次世代プラットフォームKouhei Sutou
 
PostgreSQLのロール管理とその注意点(Open Source Conference 2022 Online/Osaka 発表資料)
PostgreSQLのロール管理とその注意点(Open Source Conference 2022 Online/Osaka 発表資料)PostgreSQLのロール管理とその注意点(Open Source Conference 2022 Online/Osaka 発表資料)
PostgreSQLのロール管理とその注意点(Open Source Conference 2022 Online/Osaka 発表資料)NTT DATA Technology & Innovation
 
SQL大量発行処理をいかにして高速化するか
SQL大量発行処理をいかにして高速化するかSQL大量発行処理をいかにして高速化するか
SQL大量発行処理をいかにして高速化するかShogo Wakayama
 
Hadoop/Spark を使うなら Bigtop を使い熟そう! ~並列分散処理基盤のいま、から Bigtop の最近の取り組みまで一挙ご紹介~(Ope...
Hadoop/Spark を使うなら Bigtop を使い熟そう! ~並列分散処理基盤のいま、から Bigtop の最近の取り組みまで一挙ご紹介~(Ope...Hadoop/Spark を使うなら Bigtop を使い熟そう! ~並列分散処理基盤のいま、から Bigtop の最近の取り組みまで一挙ご紹介~(Ope...
Hadoop/Spark を使うなら Bigtop を使い熟そう! ~並列分散処理基盤のいま、から Bigtop の最近の取り組みまで一挙ご紹介~(Ope...NTT DATA Technology & Innovation
 
Javaコードが速く実⾏される秘密 - JITコンパイラ⼊⾨(JJUG CCC 2020 Fall講演資料)
Javaコードが速く実⾏される秘密 - JITコンパイラ⼊⾨(JJUG CCC 2020 Fall講演資料)Javaコードが速く実⾏される秘密 - JITコンパイラ⼊⾨(JJUG CCC 2020 Fall講演資料)
Javaコードが速く実⾏される秘密 - JITコンパイラ⼊⾨(JJUG CCC 2020 Fall講演資料)NTT DATA Technology & Innovation
 
NTTデータ流 Hadoop活用のすすめ ~インフラ構築・運用の勘所~
NTTデータ流 Hadoop活用のすすめ ~インフラ構築・運用の勘所~NTTデータ流 Hadoop活用のすすめ ~インフラ構築・運用の勘所~
NTTデータ流 Hadoop活用のすすめ ~インフラ構築・運用の勘所~NTT DATA OSS Professional Services
 
イベント・ソーシングを知る
イベント・ソーシングを知るイベント・ソーシングを知る
イベント・ソーシングを知るShuhei Fujita
 
わかる!metadata.managedFields / Kubernetes Meetup Tokyo 48
わかる!metadata.managedFields / Kubernetes Meetup Tokyo 48わかる!metadata.managedFields / Kubernetes Meetup Tokyo 48
わかる!metadata.managedFields / Kubernetes Meetup Tokyo 48Preferred Networks
 
Apache Sparkの基本と最新バージョン3.2のアップデート(Open Source Conference 2021 Online/Fukuoka ...
Apache Sparkの基本と最新バージョン3.2のアップデート(Open Source Conference 2021 Online/Fukuoka ...Apache Sparkの基本と最新バージョン3.2のアップデート(Open Source Conference 2021 Online/Fukuoka ...
Apache Sparkの基本と最新バージョン3.2のアップデート(Open Source Conference 2021 Online/Fukuoka ...NTT DATA Technology & Innovation
 
Cassandraのしくみ データの読み書き編
Cassandraのしくみ データの読み書き編Cassandraのしくみ データの読み書き編
Cassandraのしくみ データの読み書き編Yuki Morishita
 
忙しい人の5分で分かるMesos入門 - Mesos って何だ?
忙しい人の5分で分かるMesos入門 - Mesos って何だ?忙しい人の5分で分かるMesos入門 - Mesos って何だ?
忙しい人の5分で分かるMesos入門 - Mesos って何だ?Masahito Zembutsu
 
今こそ知りたいSpring Batch(Spring Fest 2020講演資料)
今こそ知りたいSpring Batch(Spring Fest 2020講演資料)今こそ知りたいSpring Batch(Spring Fest 2020講演資料)
今こそ知りたいSpring Batch(Spring Fest 2020講演資料)NTT DATA Technology & Innovation
 
Grafana LokiではじめるKubernetesロギングハンズオン(NTT Tech Conference #4 ハンズオン資料)
Grafana LokiではじめるKubernetesロギングハンズオン(NTT Tech Conference #4 ハンズオン資料)Grafana LokiではじめるKubernetesロギングハンズオン(NTT Tech Conference #4 ハンズオン資料)
Grafana LokiではじめるKubernetesロギングハンズオン(NTT Tech Conference #4 ハンズオン資料)NTT DATA Technology & Innovation
 
Kubernetesのしくみ やさしく学ぶ 内部構造とアーキテクチャー
Kubernetesのしくみ やさしく学ぶ 内部構造とアーキテクチャーKubernetesのしくみ やさしく学ぶ 内部構造とアーキテクチャー
Kubernetesのしくみ やさしく学ぶ 内部構造とアーキテクチャーToru Makabe
 
ビッグデータ処理データベースの全体像と使い分け
ビッグデータ処理データベースの全体像と使い分けビッグデータ処理データベースの全体像と使い分け
ビッグデータ処理データベースの全体像と使い分けRecruit Technologies
 
BuildKitの概要と最近の機能
BuildKitの概要と最近の機能BuildKitの概要と最近の機能
BuildKitの概要と最近の機能Kohei Tokunaga
 
ストリーム処理を支えるキューイングシステムの選び方
ストリーム処理を支えるキューイングシステムの選び方ストリーム処理を支えるキューイングシステムの選び方
ストリーム処理を支えるキューイングシステムの選び方Yoshiyasu SAEKI
 

What's hot (20)

Docker Compose 徹底解説
Docker Compose 徹底解説Docker Compose 徹底解説
Docker Compose 徹底解説
 
NetflixにおけるPresto/Spark活用事例
NetflixにおけるPresto/Spark活用事例NetflixにおけるPresto/Spark活用事例
NetflixにおけるPresto/Spark活用事例
 
Apache Arrow - データ処理ツールの次世代プラットフォーム
Apache Arrow - データ処理ツールの次世代プラットフォームApache Arrow - データ処理ツールの次世代プラットフォーム
Apache Arrow - データ処理ツールの次世代プラットフォーム
 
PostgreSQLのロール管理とその注意点(Open Source Conference 2022 Online/Osaka 発表資料)
PostgreSQLのロール管理とその注意点(Open Source Conference 2022 Online/Osaka 発表資料)PostgreSQLのロール管理とその注意点(Open Source Conference 2022 Online/Osaka 発表資料)
PostgreSQLのロール管理とその注意点(Open Source Conference 2022 Online/Osaka 発表資料)
 
SQL大量発行処理をいかにして高速化するか
SQL大量発行処理をいかにして高速化するかSQL大量発行処理をいかにして高速化するか
SQL大量発行処理をいかにして高速化するか
 
Hadoop/Spark を使うなら Bigtop を使い熟そう! ~並列分散処理基盤のいま、から Bigtop の最近の取り組みまで一挙ご紹介~(Ope...
Hadoop/Spark を使うなら Bigtop を使い熟そう! ~並列分散処理基盤のいま、から Bigtop の最近の取り組みまで一挙ご紹介~(Ope...Hadoop/Spark を使うなら Bigtop を使い熟そう! ~並列分散処理基盤のいま、から Bigtop の最近の取り組みまで一挙ご紹介~(Ope...
Hadoop/Spark を使うなら Bigtop を使い熟そう! ~並列分散処理基盤のいま、から Bigtop の最近の取り組みまで一挙ご紹介~(Ope...
 
Javaコードが速く実⾏される秘密 - JITコンパイラ⼊⾨(JJUG CCC 2020 Fall講演資料)
Javaコードが速く実⾏される秘密 - JITコンパイラ⼊⾨(JJUG CCC 2020 Fall講演資料)Javaコードが速く実⾏される秘密 - JITコンパイラ⼊⾨(JJUG CCC 2020 Fall講演資料)
Javaコードが速く実⾏される秘密 - JITコンパイラ⼊⾨(JJUG CCC 2020 Fall講演資料)
 
分散トレーシング技術について(Open tracingやjaeger)
分散トレーシング技術について(Open tracingやjaeger)分散トレーシング技術について(Open tracingやjaeger)
分散トレーシング技術について(Open tracingやjaeger)
 
NTTデータ流 Hadoop活用のすすめ ~インフラ構築・運用の勘所~
NTTデータ流 Hadoop活用のすすめ ~インフラ構築・運用の勘所~NTTデータ流 Hadoop活用のすすめ ~インフラ構築・運用の勘所~
NTTデータ流 Hadoop活用のすすめ ~インフラ構築・運用の勘所~
 
イベント・ソーシングを知る
イベント・ソーシングを知るイベント・ソーシングを知る
イベント・ソーシングを知る
 
わかる!metadata.managedFields / Kubernetes Meetup Tokyo 48
わかる!metadata.managedFields / Kubernetes Meetup Tokyo 48わかる!metadata.managedFields / Kubernetes Meetup Tokyo 48
わかる!metadata.managedFields / Kubernetes Meetup Tokyo 48
 
Apache Sparkの基本と最新バージョン3.2のアップデート(Open Source Conference 2021 Online/Fukuoka ...
Apache Sparkの基本と最新バージョン3.2のアップデート(Open Source Conference 2021 Online/Fukuoka ...Apache Sparkの基本と最新バージョン3.2のアップデート(Open Source Conference 2021 Online/Fukuoka ...
Apache Sparkの基本と最新バージョン3.2のアップデート(Open Source Conference 2021 Online/Fukuoka ...
 
Cassandraのしくみ データの読み書き編
Cassandraのしくみ データの読み書き編Cassandraのしくみ データの読み書き編
Cassandraのしくみ データの読み書き編
 
忙しい人の5分で分かるMesos入門 - Mesos って何だ?
忙しい人の5分で分かるMesos入門 - Mesos って何だ?忙しい人の5分で分かるMesos入門 - Mesos って何だ?
忙しい人の5分で分かるMesos入門 - Mesos って何だ?
 
今こそ知りたいSpring Batch(Spring Fest 2020講演資料)
今こそ知りたいSpring Batch(Spring Fest 2020講演資料)今こそ知りたいSpring Batch(Spring Fest 2020講演資料)
今こそ知りたいSpring Batch(Spring Fest 2020講演資料)
 
Grafana LokiではじめるKubernetesロギングハンズオン(NTT Tech Conference #4 ハンズオン資料)
Grafana LokiではじめるKubernetesロギングハンズオン(NTT Tech Conference #4 ハンズオン資料)Grafana LokiではじめるKubernetesロギングハンズオン(NTT Tech Conference #4 ハンズオン資料)
Grafana LokiではじめるKubernetesロギングハンズオン(NTT Tech Conference #4 ハンズオン資料)
 
Kubernetesのしくみ やさしく学ぶ 内部構造とアーキテクチャー
Kubernetesのしくみ やさしく学ぶ 内部構造とアーキテクチャーKubernetesのしくみ やさしく学ぶ 内部構造とアーキテクチャー
Kubernetesのしくみ やさしく学ぶ 内部構造とアーキテクチャー
 
ビッグデータ処理データベースの全体像と使い分け
ビッグデータ処理データベースの全体像と使い分けビッグデータ処理データベースの全体像と使い分け
ビッグデータ処理データベースの全体像と使い分け
 
BuildKitの概要と最近の機能
BuildKitの概要と最近の機能BuildKitの概要と最近の機能
BuildKitの概要と最近の機能
 
ストリーム処理を支えるキューイングシステムの選び方
ストリーム処理を支えるキューイングシステムの選び方ストリーム処理を支えるキューイングシステムの選び方
ストリーム処理を支えるキューイングシステムの選び方
 

Similar to Apache BigtopによるHadoopエコシステムのパッケージング(Open Source Conference 2021 Online/Osaka発表資料)

Hadoop Compatible File Systems (Azure編) (セミナー「Big Data Developerに贈る第二弾 ‐ Azur...
Hadoop Compatible File Systems (Azure編) (セミナー「Big Data Developerに贈る第二弾 ‐ Azur...Hadoop Compatible File Systems (Azure編) (セミナー「Big Data Developerに贈る第二弾 ‐ Azur...
Hadoop Compatible File Systems (Azure編) (セミナー「Big Data Developerに贈る第二弾 ‐ Azur...NTT DATA Technology & Innovation
 
Apache Hadoopに見るJavaミドルウェアのcompatibility(Open Developers Conference 2020 Onli...
Apache Hadoopに見るJavaミドルウェアのcompatibility(Open Developers Conference 2020 Onli...Apache Hadoopに見るJavaミドルウェアのcompatibility(Open Developers Conference 2020 Onli...
Apache Hadoopに見るJavaミドルウェアのcompatibility(Open Developers Conference 2020 Onli...NTT DATA Technology & Innovation
 
Open stack reference architecture v1 2
Open stack reference architecture v1 2Open stack reference architecture v1 2
Open stack reference architecture v1 2Dell TechCenter Japan
 
Fluentdでログを集めてGlusterFSに保存してMapReduceで集計
Fluentdでログを集めてGlusterFSに保存してMapReduceで集計Fluentdでログを集めてGlusterFSに保存してMapReduceで集計
Fluentdでログを集めてGlusterFSに保存してMapReduceで集計maebashi
 
Hadoopの紹介
Hadoopの紹介Hadoopの紹介
Hadoopの紹介bigt23
 
CloudStackユーザ会 OSC.cloud
CloudStackユーザ会 OSC.cloudCloudStackユーザ会 OSC.cloud
CloudStackユーザ会 OSC.cloudsamemoon
 
Building production server on docker
Building production server on dockerBuilding production server on docker
Building production server on dockerHiroshi Miura
 
Building production server on docker
Building production server on dockerBuilding production server on docker
Building production server on dockerHiroshi Miura
 
分散処理基盤Apache Hadoopの現状と、NTTデータのHadoopに対する取り組み
分散処理基盤Apache Hadoopの現状と、NTTデータのHadoopに対する取り組み分散処理基盤Apache Hadoopの現状と、NTTデータのHadoopに対する取り組み
分散処理基盤Apache Hadoopの現状と、NTTデータのHadoopに対する取り組みNTT DATA OSS Professional Services
 
Apache CloudStack 4.0 インストール(ver0.5)
Apache CloudStack 4.0 インストール(ver0.5)Apache CloudStack 4.0 インストール(ver0.5)
Apache CloudStack 4.0 インストール(ver0.5)Yasuhiro Arai
 
環境構築自動化ツールのご紹介
環境構築自動化ツールのご紹介環境構築自動化ツールのご紹介
環境構築自動化ツールのご紹介Etsuji Nakai
 
Cloudstack user group meeting in osaka
Cloudstack user group meeting in osakaCloudstack user group meeting in osaka
Cloudstack user group meeting in osakaNaotaka Jay HOTTA
 
Docker ComposeでMastodonが必要なものを梱包する話
Docker ComposeでMastodonが必要なものを梱包する話Docker ComposeでMastodonが必要なものを梱包する話
Docker ComposeでMastodonが必要なものを梱包する話Masahito Zembutsu
 
Personal Cloud Automation
Personal Cloud AutomationPersonal Cloud Automation
Personal Cloud AutomationEtsuji Nakai
 
OpenStack QuickStart - Icehouse
OpenStack QuickStart - IcehouseOpenStack QuickStart - Icehouse
OpenStack QuickStart - IcehouseHideki Saito
 
Apache cloudstack4.0インストール
Apache cloudstack4.0インストールApache cloudstack4.0インストール
Apache cloudstack4.0インストールYasuhiro Arai
 
Alfresco勉強会20120829: やさしいShareダッシュレットの作り方
Alfresco勉強会20120829: やさしいShareダッシュレットの作り方Alfresco勉強会20120829: やさしいShareダッシュレットの作り方
Alfresco勉強会20120829: やさしいShareダッシュレットの作り方linzhixing
 
OpenStackでも重要な役割を果たすPacemakerを知ろう!
OpenStackでも重要な役割を果たすPacemakerを知ろう!OpenStackでも重要な役割を果たすPacemakerを知ろう!
OpenStackでも重要な役割を果たすPacemakerを知ろう!ksk_ha
 

Similar to Apache BigtopによるHadoopエコシステムのパッケージング(Open Source Conference 2021 Online/Osaka発表資料) (20)

Hadoop Compatible File Systems (Azure編) (セミナー「Big Data Developerに贈る第二弾 ‐ Azur...
Hadoop Compatible File Systems (Azure編) (セミナー「Big Data Developerに贈る第二弾 ‐ Azur...Hadoop Compatible File Systems (Azure編) (セミナー「Big Data Developerに贈る第二弾 ‐ Azur...
Hadoop Compatible File Systems (Azure編) (セミナー「Big Data Developerに贈る第二弾 ‐ Azur...
 
Apache Hadoopに見るJavaミドルウェアのcompatibility(Open Developers Conference 2020 Onli...
Apache Hadoopに見るJavaミドルウェアのcompatibility(Open Developers Conference 2020 Onli...Apache Hadoopに見るJavaミドルウェアのcompatibility(Open Developers Conference 2020 Onli...
Apache Hadoopに見るJavaミドルウェアのcompatibility(Open Developers Conference 2020 Onli...
 
Open stack reference architecture v1 2
Open stack reference architecture v1 2Open stack reference architecture v1 2
Open stack reference architecture v1 2
 
Fluentdでログを集めてGlusterFSに保存してMapReduceで集計
Fluentdでログを集めてGlusterFSに保存してMapReduceで集計Fluentdでログを集めてGlusterFSに保存してMapReduceで集計
Fluentdでログを集めてGlusterFSに保存してMapReduceで集計
 
Hadoopの紹介
Hadoopの紹介Hadoopの紹介
Hadoopの紹介
 
CloudStackユーザ会 OSC.cloud
CloudStackユーザ会 OSC.cloudCloudStackユーザ会 OSC.cloud
CloudStackユーザ会 OSC.cloud
 
Building production server on docker
Building production server on dockerBuilding production server on docker
Building production server on docker
 
Building production server on docker
Building production server on dockerBuilding production server on docker
Building production server on docker
 
分散処理基盤Apache Hadoopの現状と、NTTデータのHadoopに対する取り組み
分散処理基盤Apache Hadoopの現状と、NTTデータのHadoopに対する取り組み分散処理基盤Apache Hadoopの現状と、NTTデータのHadoopに対する取り組み
分散処理基盤Apache Hadoopの現状と、NTTデータのHadoopに対する取り組み
 
Apache CloudStack 4.0 インストール(ver0.5)
Apache CloudStack 4.0 インストール(ver0.5)Apache CloudStack 4.0 インストール(ver0.5)
Apache CloudStack 4.0 インストール(ver0.5)
 
Fig
FigFig
Fig
 
環境構築自動化ツールのご紹介
環境構築自動化ツールのご紹介環境構築自動化ツールのご紹介
環境構築自動化ツールのご紹介
 
Cloudstack user group meeting in osaka
Cloudstack user group meeting in osakaCloudstack user group meeting in osaka
Cloudstack user group meeting in osaka
 
Docker ComposeでMastodonが必要なものを梱包する話
Docker ComposeでMastodonが必要なものを梱包する話Docker ComposeでMastodonが必要なものを梱包する話
Docker ComposeでMastodonが必要なものを梱包する話
 
Personal Cloud Automation
Personal Cloud AutomationPersonal Cloud Automation
Personal Cloud Automation
 
OpenStack QuickStart - Icehouse
OpenStack QuickStart - IcehouseOpenStack QuickStart - Icehouse
OpenStack QuickStart - Icehouse
 
Apache cloudstack4.0インストール
Apache cloudstack4.0インストールApache cloudstack4.0インストール
Apache cloudstack4.0インストール
 
Hadoop on LXC
Hadoop on LXCHadoop on LXC
Hadoop on LXC
 
Alfresco勉強会20120829: やさしいShareダッシュレットの作り方
Alfresco勉強会20120829: やさしいShareダッシュレットの作り方Alfresco勉強会20120829: やさしいShareダッシュレットの作り方
Alfresco勉強会20120829: やさしいShareダッシュレットの作り方
 
OpenStackでも重要な役割を果たすPacemakerを知ろう!
OpenStackでも重要な役割を果たすPacemakerを知ろう!OpenStackでも重要な役割を果たすPacemakerを知ろう!
OpenStackでも重要な役割を果たすPacemakerを知ろう!
 

More from NTT DATA Technology & Innovation

OSSデータベースの開発コミュニティに参加しよう! (DEIM2024 発表資料)
OSSデータベースの開発コミュニティに参加しよう! (DEIM2024 発表資料)OSSデータベースの開発コミュニティに参加しよう! (DEIM2024 発表資料)
OSSデータベースの開発コミュニティに参加しよう! (DEIM2024 発表資料)NTT DATA Technology & Innovation
 
COPY FROMで異常データをスキップできるようになった話(第45回 PostgreSQLアンカンファレンス@オンライン 発表資料)
COPY FROMで異常データをスキップできるようになった話(第45回 PostgreSQLアンカンファレンス@オンライン 発表資料)COPY FROMで異常データをスキップできるようになった話(第45回 PostgreSQLアンカンファレンス@オンライン 発表資料)
COPY FROMで異常データをスキップできるようになった話(第45回 PostgreSQLアンカンファレンス@オンライン 発表資料)NTT DATA Technology & Innovation
 
Cloud Skills Challenge 2023 winter 〜Azureを頑張る理由と頑張り方
Cloud Skills Challenge 2023 winter 〜Azureを頑張る理由と頑張り方Cloud Skills Challenge 2023 winter 〜Azureを頑張る理由と頑張り方
Cloud Skills Challenge 2023 winter 〜Azureを頑張る理由と頑張り方NTT DATA Technology & Innovation
 
Unlocking Transformation: Implementing GitOps Practices in Conservative Organ...
Unlocking Transformation: Implementing GitOps Practices in Conservative Organ...Unlocking Transformation: Implementing GitOps Practices in Conservative Organ...
Unlocking Transformation: Implementing GitOps Practices in Conservative Organ...NTT DATA Technology & Innovation
 
Databricksチューニングあれこれ(JEDAI 2023 X‘mas/忘年会 Meetup! LT登壇資料)
Databricksチューニングあれこれ(JEDAI 2023 X‘mas/忘年会 Meetup! LT登壇資料)Databricksチューニングあれこれ(JEDAI 2023 X‘mas/忘年会 Meetup! LT登壇資料)
Databricksチューニングあれこれ(JEDAI 2023 X‘mas/忘年会 Meetup! LT登壇資料)NTT DATA Technology & Innovation
 
詳説探究!Cloud Native Databaseの現在地点(CloudNative Days Tokyo 2023 発表資料)
詳説探究!Cloud Native Databaseの現在地点(CloudNative Days Tokyo 2023 発表資料)詳説探究!Cloud Native Databaseの現在地点(CloudNative Days Tokyo 2023 発表資料)
詳説探究!Cloud Native Databaseの現在地点(CloudNative Days Tokyo 2023 発表資料)NTT DATA Technology & Innovation
 
今、改めて考えるPostgreSQLプラットフォーム - マルチクラウドとポータビリティ -(PostgreSQL Conference Japan 20...
今、改めて考えるPostgreSQLプラットフォーム - マルチクラウドとポータビリティ -(PostgreSQL Conference Japan 20...今、改めて考えるPostgreSQLプラットフォーム - マルチクラウドとポータビリティ -(PostgreSQL Conference Japan 20...
今、改めて考えるPostgreSQLプラットフォーム - マルチクラウドとポータビリティ -(PostgreSQL Conference Japan 20...NTT DATA Technology & Innovation
 
速習! PostgreSQL専用HAソフトウェア: Patroni(PostgreSQL Conference Japan 2023 発表資料)
速習! PostgreSQL専用HAソフトウェア: Patroni(PostgreSQL Conference Japan 2023 発表資料)速習! PostgreSQL専用HAソフトウェア: Patroni(PostgreSQL Conference Japan 2023 発表資料)
速習! PostgreSQL専用HAソフトウェア: Patroni(PostgreSQL Conference Japan 2023 発表資料)NTT DATA Technology & Innovation
 
pgvectorを使ってChatGPTとPostgreSQLを連携してみよう!(PostgreSQL Conference Japan 2023 発表資料)
pgvectorを使ってChatGPTとPostgreSQLを連携してみよう!(PostgreSQL Conference Japan 2023 発表資料)pgvectorを使ってChatGPTとPostgreSQLを連携してみよう!(PostgreSQL Conference Japan 2023 発表資料)
pgvectorを使ってChatGPTとPostgreSQLを連携してみよう!(PostgreSQL Conference Japan 2023 発表資料)NTT DATA Technology & Innovation
 
マネージドPostgreSQLの実現に向けたPostgreSQL機能向上(PostgreSQL Conference Japan 2023 発表資料)
マネージドPostgreSQLの実現に向けたPostgreSQL機能向上(PostgreSQL Conference Japan 2023 発表資料)マネージドPostgreSQLの実現に向けたPostgreSQL機能向上(PostgreSQL Conference Japan 2023 発表資料)
マネージドPostgreSQLの実現に向けたPostgreSQL機能向上(PostgreSQL Conference Japan 2023 発表資料)NTT DATA Technology & Innovation
 
最新機能までを総ざらい!PostgreSQLの注目機能を振り返る(第32回 中国地方DB勉強会 in 岡山 発表資料)
最新機能までを総ざらい!PostgreSQLの注目機能を振り返る(第32回 中国地方DB勉強会 in 岡山 発表資料)最新機能までを総ざらい!PostgreSQLの注目機能を振り返る(第32回 中国地方DB勉強会 in 岡山 発表資料)
最新機能までを総ざらい!PostgreSQLの注目機能を振り返る(第32回 中国地方DB勉強会 in 岡山 発表資料)NTT DATA Technology & Innovation
 
PostgreSQLのバグとの付き合い方 ~バグの調査からコミュニティへの報告、修正パッチ投稿まで~(Open Source Conference 202...
PostgreSQLのバグとの付き合い方 ~バグの調査からコミュニティへの報告、修正パッチ投稿まで~(Open Source Conference 202...PostgreSQLのバグとの付き合い方 ~バグの調査からコミュニティへの報告、修正パッチ投稿まで~(Open Source Conference 202...
PostgreSQLのバグとの付き合い方 ~バグの調査からコミュニティへの報告、修正パッチ投稿まで~(Open Source Conference 202...NTT DATA Technology & Innovation
 
骨抜きアジャイルの骨を生み出す 〜私(スクラムマスター)のXP学習記録〜(XP祭り2023 発表資料)
骨抜きアジャイルの骨を生み出す 〜私(スクラムマスター)のXP学習記録〜(XP祭り2023 発表資料)骨抜きアジャイルの骨を生み出す 〜私(スクラムマスター)のXP学習記録〜(XP祭り2023 発表資料)
骨抜きアジャイルの骨を生み出す 〜私(スクラムマスター)のXP学習記録〜(XP祭り2023 発表資料)NTT DATA Technology & Innovation
 
機械学習モデルを REST API としてサービングするシステム開発における上流プロセスの絞り込みと効果検証(PM学会2023年度秋季研究発表大会 発表資料)
機械学習モデルを REST API としてサービングするシステム開発における上流プロセスの絞り込みと効果検証(PM学会2023年度秋季研究発表大会 発表資料)機械学習モデルを REST API としてサービングするシステム開発における上流プロセスの絞り込みと効果検証(PM学会2023年度秋季研究発表大会 発表資料)
機械学習モデルを REST API としてサービングするシステム開発における上流プロセスの絞り込みと効果検証(PM学会2023年度秋季研究発表大会 発表資料)NTT DATA Technology & Innovation
 
ChatGPTのデータソースにPostgreSQLを使う[詳細版](オープンデベロッパーズカンファレンス2023 発表資料)
ChatGPTのデータソースにPostgreSQLを使う[詳細版](オープンデベロッパーズカンファレンス2023 発表資料)ChatGPTのデータソースにPostgreSQLを使う[詳細版](オープンデベロッパーズカンファレンス2023 発表資料)
ChatGPTのデータソースにPostgreSQLを使う[詳細版](オープンデベロッパーズカンファレンス2023 発表資料)NTT DATA Technology & Innovation
 
PostgreSQL on Kubernetes: Realizing High Availability with PGO (Postgres Ibiz...
PostgreSQL on Kubernetes: Realizing High Availability with PGO (Postgres Ibiz...PostgreSQL on Kubernetes: Realizing High Availability with PGO (Postgres Ibiz...
PostgreSQL on Kubernetes: Realizing High Availability with PGO (Postgres Ibiz...NTT DATA Technology & Innovation
 
オンプレミス回帰の動きに備えよ ~クラウドの手法をオンプレミスでも実現するには~(CloudNative Days Fukuoka 2023 発表資料)
オンプレミス回帰の動きに備えよ ~クラウドの手法をオンプレミスでも実現するには~(CloudNative Days Fukuoka 2023 発表資料)オンプレミス回帰の動きに備えよ ~クラウドの手法をオンプレミスでも実現するには~(CloudNative Days Fukuoka 2023 発表資料)
オンプレミス回帰の動きに備えよ ~クラウドの手法をオンプレミスでも実現するには~(CloudNative Days Fukuoka 2023 発表資料)NTT DATA Technology & Innovation
 
Prometheus Operator 入門(Kubernetes Novice Tokyo #26 発表資料)
Prometheus Operator 入門(Kubernetes Novice Tokyo #26 発表資料)Prometheus Operator 入門(Kubernetes Novice Tokyo #26 発表資料)
Prometheus Operator 入門(Kubernetes Novice Tokyo #26 発表資料)NTT DATA Technology & Innovation
 
ChatGPTのデータソースにPostgreSQLを使う(第42回PostgreSQLアンカンファレンス@オンライン 発表資料)
ChatGPTのデータソースにPostgreSQLを使う(第42回PostgreSQLアンカンファレンス@オンライン 発表資料)ChatGPTのデータソースにPostgreSQLを使う(第42回PostgreSQLアンカンファレンス@オンライン 発表資料)
ChatGPTのデータソースにPostgreSQLを使う(第42回PostgreSQLアンカンファレンス@オンライン 発表資料)NTT DATA Technology & Innovation
 
PGCon 2023 参加報告(第42回PostgreSQLアンカンファレンス@オンライン 発表資料)
PGCon 2023 参加報告(第42回PostgreSQLアンカンファレンス@オンライン 発表資料)PGCon 2023 参加報告(第42回PostgreSQLアンカンファレンス@オンライン 発表資料)
PGCon 2023 参加報告(第42回PostgreSQLアンカンファレンス@オンライン 発表資料)NTT DATA Technology & Innovation
 

More from NTT DATA Technology & Innovation (20)

OSSデータベースの開発コミュニティに参加しよう! (DEIM2024 発表資料)
OSSデータベースの開発コミュニティに参加しよう! (DEIM2024 発表資料)OSSデータベースの開発コミュニティに参加しよう! (DEIM2024 発表資料)
OSSデータベースの開発コミュニティに参加しよう! (DEIM2024 発表資料)
 
COPY FROMで異常データをスキップできるようになった話(第45回 PostgreSQLアンカンファレンス@オンライン 発表資料)
COPY FROMで異常データをスキップできるようになった話(第45回 PostgreSQLアンカンファレンス@オンライン 発表資料)COPY FROMで異常データをスキップできるようになった話(第45回 PostgreSQLアンカンファレンス@オンライン 発表資料)
COPY FROMで異常データをスキップできるようになった話(第45回 PostgreSQLアンカンファレンス@オンライン 発表資料)
 
Cloud Skills Challenge 2023 winter 〜Azureを頑張る理由と頑張り方
Cloud Skills Challenge 2023 winter 〜Azureを頑張る理由と頑張り方Cloud Skills Challenge 2023 winter 〜Azureを頑張る理由と頑張り方
Cloud Skills Challenge 2023 winter 〜Azureを頑張る理由と頑張り方
 
Unlocking Transformation: Implementing GitOps Practices in Conservative Organ...
Unlocking Transformation: Implementing GitOps Practices in Conservative Organ...Unlocking Transformation: Implementing GitOps Practices in Conservative Organ...
Unlocking Transformation: Implementing GitOps Practices in Conservative Organ...
 
Databricksチューニングあれこれ(JEDAI 2023 X‘mas/忘年会 Meetup! LT登壇資料)
Databricksチューニングあれこれ(JEDAI 2023 X‘mas/忘年会 Meetup! LT登壇資料)Databricksチューニングあれこれ(JEDAI 2023 X‘mas/忘年会 Meetup! LT登壇資料)
Databricksチューニングあれこれ(JEDAI 2023 X‘mas/忘年会 Meetup! LT登壇資料)
 
詳説探究!Cloud Native Databaseの現在地点(CloudNative Days Tokyo 2023 発表資料)
詳説探究!Cloud Native Databaseの現在地点(CloudNative Days Tokyo 2023 発表資料)詳説探究!Cloud Native Databaseの現在地点(CloudNative Days Tokyo 2023 発表資料)
詳説探究!Cloud Native Databaseの現在地点(CloudNative Days Tokyo 2023 発表資料)
 
今、改めて考えるPostgreSQLプラットフォーム - マルチクラウドとポータビリティ -(PostgreSQL Conference Japan 20...
今、改めて考えるPostgreSQLプラットフォーム - マルチクラウドとポータビリティ -(PostgreSQL Conference Japan 20...今、改めて考えるPostgreSQLプラットフォーム - マルチクラウドとポータビリティ -(PostgreSQL Conference Japan 20...
今、改めて考えるPostgreSQLプラットフォーム - マルチクラウドとポータビリティ -(PostgreSQL Conference Japan 20...
 
速習! PostgreSQL専用HAソフトウェア: Patroni(PostgreSQL Conference Japan 2023 発表資料)
速習! PostgreSQL専用HAソフトウェア: Patroni(PostgreSQL Conference Japan 2023 発表資料)速習! PostgreSQL専用HAソフトウェア: Patroni(PostgreSQL Conference Japan 2023 発表資料)
速習! PostgreSQL専用HAソフトウェア: Patroni(PostgreSQL Conference Japan 2023 発表資料)
 
pgvectorを使ってChatGPTとPostgreSQLを連携してみよう!(PostgreSQL Conference Japan 2023 発表資料)
pgvectorを使ってChatGPTとPostgreSQLを連携してみよう!(PostgreSQL Conference Japan 2023 発表資料)pgvectorを使ってChatGPTとPostgreSQLを連携してみよう!(PostgreSQL Conference Japan 2023 発表資料)
pgvectorを使ってChatGPTとPostgreSQLを連携してみよう!(PostgreSQL Conference Japan 2023 発表資料)
 
マネージドPostgreSQLの実現に向けたPostgreSQL機能向上(PostgreSQL Conference Japan 2023 発表資料)
マネージドPostgreSQLの実現に向けたPostgreSQL機能向上(PostgreSQL Conference Japan 2023 発表資料)マネージドPostgreSQLの実現に向けたPostgreSQL機能向上(PostgreSQL Conference Japan 2023 発表資料)
マネージドPostgreSQLの実現に向けたPostgreSQL機能向上(PostgreSQL Conference Japan 2023 発表資料)
 
最新機能までを総ざらい!PostgreSQLの注目機能を振り返る(第32回 中国地方DB勉強会 in 岡山 発表資料)
最新機能までを総ざらい!PostgreSQLの注目機能を振り返る(第32回 中国地方DB勉強会 in 岡山 発表資料)最新機能までを総ざらい!PostgreSQLの注目機能を振り返る(第32回 中国地方DB勉強会 in 岡山 発表資料)
最新機能までを総ざらい!PostgreSQLの注目機能を振り返る(第32回 中国地方DB勉強会 in 岡山 発表資料)
 
PostgreSQLのバグとの付き合い方 ~バグの調査からコミュニティへの報告、修正パッチ投稿まで~(Open Source Conference 202...
PostgreSQLのバグとの付き合い方 ~バグの調査からコミュニティへの報告、修正パッチ投稿まで~(Open Source Conference 202...PostgreSQLのバグとの付き合い方 ~バグの調査からコミュニティへの報告、修正パッチ投稿まで~(Open Source Conference 202...
PostgreSQLのバグとの付き合い方 ~バグの調査からコミュニティへの報告、修正パッチ投稿まで~(Open Source Conference 202...
 
骨抜きアジャイルの骨を生み出す 〜私(スクラムマスター)のXP学習記録〜(XP祭り2023 発表資料)
骨抜きアジャイルの骨を生み出す 〜私(スクラムマスター)のXP学習記録〜(XP祭り2023 発表資料)骨抜きアジャイルの骨を生み出す 〜私(スクラムマスター)のXP学習記録〜(XP祭り2023 発表資料)
骨抜きアジャイルの骨を生み出す 〜私(スクラムマスター)のXP学習記録〜(XP祭り2023 発表資料)
 
機械学習モデルを REST API としてサービングするシステム開発における上流プロセスの絞り込みと効果検証(PM学会2023年度秋季研究発表大会 発表資料)
機械学習モデルを REST API としてサービングするシステム開発における上流プロセスの絞り込みと効果検証(PM学会2023年度秋季研究発表大会 発表資料)機械学習モデルを REST API としてサービングするシステム開発における上流プロセスの絞り込みと効果検証(PM学会2023年度秋季研究発表大会 発表資料)
機械学習モデルを REST API としてサービングするシステム開発における上流プロセスの絞り込みと効果検証(PM学会2023年度秋季研究発表大会 発表資料)
 
ChatGPTのデータソースにPostgreSQLを使う[詳細版](オープンデベロッパーズカンファレンス2023 発表資料)
ChatGPTのデータソースにPostgreSQLを使う[詳細版](オープンデベロッパーズカンファレンス2023 発表資料)ChatGPTのデータソースにPostgreSQLを使う[詳細版](オープンデベロッパーズカンファレンス2023 発表資料)
ChatGPTのデータソースにPostgreSQLを使う[詳細版](オープンデベロッパーズカンファレンス2023 発表資料)
 
PostgreSQL on Kubernetes: Realizing High Availability with PGO (Postgres Ibiz...
PostgreSQL on Kubernetes: Realizing High Availability with PGO (Postgres Ibiz...PostgreSQL on Kubernetes: Realizing High Availability with PGO (Postgres Ibiz...
PostgreSQL on Kubernetes: Realizing High Availability with PGO (Postgres Ibiz...
 
オンプレミス回帰の動きに備えよ ~クラウドの手法をオンプレミスでも実現するには~(CloudNative Days Fukuoka 2023 発表資料)
オンプレミス回帰の動きに備えよ ~クラウドの手法をオンプレミスでも実現するには~(CloudNative Days Fukuoka 2023 発表資料)オンプレミス回帰の動きに備えよ ~クラウドの手法をオンプレミスでも実現するには~(CloudNative Days Fukuoka 2023 発表資料)
オンプレミス回帰の動きに備えよ ~クラウドの手法をオンプレミスでも実現するには~(CloudNative Days Fukuoka 2023 発表資料)
 
Prometheus Operator 入門(Kubernetes Novice Tokyo #26 発表資料)
Prometheus Operator 入門(Kubernetes Novice Tokyo #26 発表資料)Prometheus Operator 入門(Kubernetes Novice Tokyo #26 発表資料)
Prometheus Operator 入門(Kubernetes Novice Tokyo #26 発表資料)
 
ChatGPTのデータソースにPostgreSQLを使う(第42回PostgreSQLアンカンファレンス@オンライン 発表資料)
ChatGPTのデータソースにPostgreSQLを使う(第42回PostgreSQLアンカンファレンス@オンライン 発表資料)ChatGPTのデータソースにPostgreSQLを使う(第42回PostgreSQLアンカンファレンス@オンライン 発表資料)
ChatGPTのデータソースにPostgreSQLを使う(第42回PostgreSQLアンカンファレンス@オンライン 発表資料)
 
PGCon 2023 参加報告(第42回PostgreSQLアンカンファレンス@オンライン 発表資料)
PGCon 2023 参加報告(第42回PostgreSQLアンカンファレンス@オンライン 発表資料)PGCon 2023 参加報告(第42回PostgreSQLアンカンファレンス@オンライン 発表資料)
PGCon 2023 参加報告(第42回PostgreSQLアンカンファレンス@オンライン 発表資料)
 

Recently uploaded

PHP-Conference-Odawara-2024-04-000000000
PHP-Conference-Odawara-2024-04-000000000PHP-Conference-Odawara-2024-04-000000000
PHP-Conference-Odawara-2024-04-000000000Shota Ito
 
Amazon SES を勉強してみる その12024/04/12の勉強会で発表されたものです。
Amazon SES を勉強してみる その12024/04/12の勉強会で発表されたものです。Amazon SES を勉強してみる その12024/04/12の勉強会で発表されたものです。
Amazon SES を勉強してみる その12024/04/12の勉強会で発表されたものです。iPride Co., Ltd.
 
IoT in the era of generative AI, Thanks IoT ALGYAN.pptx
IoT in the era of generative AI, Thanks IoT ALGYAN.pptxIoT in the era of generative AI, Thanks IoT ALGYAN.pptx
IoT in the era of generative AI, Thanks IoT ALGYAN.pptxAtomu Hidaka
 
新人研修のまとめ 2024/04/12の勉強会で発表されたものです。
新人研修のまとめ       2024/04/12の勉強会で発表されたものです。新人研修のまとめ       2024/04/12の勉強会で発表されたものです。
新人研修のまとめ 2024/04/12の勉強会で発表されたものです。iPride Co., Ltd.
 
20240412_HCCJP での Windows Server 2025 Active Directory
20240412_HCCJP での Windows Server 2025 Active Directory20240412_HCCJP での Windows Server 2025 Active Directory
20240412_HCCJP での Windows Server 2025 Active Directoryosamut
 
プレイマットのパターン生成支援ツールの評価
プレイマットのパターン生成支援ツールの評価プレイマットのパターン生成支援ツールの評価
プレイマットのパターン生成支援ツールの評価sugiuralab
 
プレイマットのパターン生成支援ツール
プレイマットのパターン生成支援ツールプレイマットのパターン生成支援ツール
プレイマットのパターン生成支援ツールsugiuralab
 

Recently uploaded (7)

PHP-Conference-Odawara-2024-04-000000000
PHP-Conference-Odawara-2024-04-000000000PHP-Conference-Odawara-2024-04-000000000
PHP-Conference-Odawara-2024-04-000000000
 
Amazon SES を勉強してみる その12024/04/12の勉強会で発表されたものです。
Amazon SES を勉強してみる その12024/04/12の勉強会で発表されたものです。Amazon SES を勉強してみる その12024/04/12の勉強会で発表されたものです。
Amazon SES を勉強してみる その12024/04/12の勉強会で発表されたものです。
 
IoT in the era of generative AI, Thanks IoT ALGYAN.pptx
IoT in the era of generative AI, Thanks IoT ALGYAN.pptxIoT in the era of generative AI, Thanks IoT ALGYAN.pptx
IoT in the era of generative AI, Thanks IoT ALGYAN.pptx
 
新人研修のまとめ 2024/04/12の勉強会で発表されたものです。
新人研修のまとめ       2024/04/12の勉強会で発表されたものです。新人研修のまとめ       2024/04/12の勉強会で発表されたものです。
新人研修のまとめ 2024/04/12の勉強会で発表されたものです。
 
20240412_HCCJP での Windows Server 2025 Active Directory
20240412_HCCJP での Windows Server 2025 Active Directory20240412_HCCJP での Windows Server 2025 Active Directory
20240412_HCCJP での Windows Server 2025 Active Directory
 
プレイマットのパターン生成支援ツールの評価
プレイマットのパターン生成支援ツールの評価プレイマットのパターン生成支援ツールの評価
プレイマットのパターン生成支援ツールの評価
 
プレイマットのパターン生成支援ツール
プレイマットのパターン生成支援ツールプレイマットのパターン生成支援ツール
プレイマットのパターン生成支援ツール
 

Apache BigtopによるHadoopエコシステムのパッケージング(Open Source Conference 2021 Online/Osaka発表資料)

  • 1. © 2021 NTT DATA Corporation 01/30/2021 Masatake Iwasaki NTT DATA Apache BigtopによるHadoopエコシステムのパッケージング
  • 2. © 2021 NTT DATA Corporation 2 Apache Bigtopの取り組みを紹介します Hadoopエコシステムのプロダクトのパッケージングをしています 多くのプロダクトはJavaで実装されていて、Java 8前提の話として聞いてください ときどき出てくるBIGTOP-12345みたいなのはJIRAのissue keyです はじめに
  • 3. © 2021 NTT DATA Corporation 3 HadoopエコシステムとBigtop
  • 4. © 2021 NTT DATA Corporation 4 大規模データ処理基盤 以下をセットで提供 分散ファイルシステム(HDFS) 計算リソース管理機構(YARN) 分散処理フレームワーク(MapReduce) 汎用的な(Linux)サーバ(〜10000台)でクラスタを構成する 大量のデータを格納し、並列分散処理する 2006年に登場 Googleが論文の形で紹介した技術を参考にして作られたOSS実装 Hadoopとは何か?
  • 5. © 2021 NTT DATA Corporation 5 実用上、多種多様な周辺ミドルウェアと組み合わせて利用する Spark: モダンな分散処理基盤/API (deprecating MapReduce) Hive: SQL(ライクな)言語処理系 HBase: 分散KVS (like Bigtable) Sqoop: データローダ Oozie: ワークフロースケジューラ Ranger: アクセス制御 ... プロダクト間の依存関係は複雑 バージョンアップで互換性に影響する変更がときどき入る 機能するバージョンの組み合わせを見つけるのは大変 Hadoopエコシステム
  • 6. © 2021 NTT DATA Corporation 6 ディストリビューション: 機能する組み合わせでパッケージングしたもの 企業(ディストリビュータ)がビジネスとして提供する パッケージング、継続的なupdate、テクニカルサポート Linux(OS)の例として、Red Hat(IBM社)のRed Hat Enterprise Linux ベースバージョンを(原則)固定してパッケージング upstreamの機能追加やバグ修正をbackportしていく 互換性を壊す修正は入れないか、壊さないように直す minor updateしても(原則)アプリケーションに影響を与えない HadoopエコシステムではCloudera社がディストリビューションを提供 Red Hat同様のベースバージョン固定方式で互換性を維持 多種プロダクトの動く組み合わせをテストして提供 独自プロビジョニングツールによる運用が前提 (現在は)(CentOSのような)無償版はない ディストリビューション
  • 7. © 2021 NTT DATA Corporation 7 コミュニティベースの取り組み Hadoopエコシステムのミドルウェアのパッケージングを提供 プロダクトとバージョンの組み合わせ選定 必要に応じてパッチ適用 .rpmおよび.debを作るための資材 # 過去に提供/公開されたCDH用の資材がベース プロビジョニング資材 Dockerファイル/イメージ クラスタ起動用docker-compose資材 Puppetマニフェスト テストフレームワークとテストケース 以上をGradleタスクとして簡易に実行する枠組み 継続的なpatchのバックポートやminor updateは提供していない テストはそれほど網羅的ではない Apache Bigtop
  • 8. © 2021 NTT DATA Corporation 8 Products: Hadoop 2.10.1 # 次のバージョンでHadoop 3になる HBase 1.5.0 Hive 2.3.6 Kafka 2.4.0 Phoenix 4.15.0-HBase-1.5 Spark 2.4.5 Zookeeper 3.4.13 ... Distros: CentOS 7 and 8, Debian 9 and 10, Fedora 31, Ubuntu 16.04 and 18.04 Architectures: x86_64, aarch64 # ppc64leは(マシンがなくて)テストされてない Bigtop 1.5.0
  • 9. © 2021 NTT DATA Corporation 9 Compatibility
  • 10. © 2021 NTT DATA Corporation 10 HadoopはJavaで実装されている Java部分は多くのプラットフォームで動く 性能向上等の目的で(Cで書かれた)nativeコードをJNI経由で利用 nativeコードがなければpure Java実装にフォールバック 実用上Linuxのシステムコール前提な部分が多い サーバ側は実態としてLinux前提 コード上にWindows対応の名残はあるけどあまりメンテされてない Microsoft AzureのHDInsightもUbuntuを利用 # Amazon EMRはAmazon Linux BigtopもLinuxのみを対象にパッケージングを行なっている プラットフォーム互換性
  • 11. © 2021 NTT DATA Corporation 11 Javaではpublic, protected, privateのような修飾子で可視性を制御 publicなクラス/メソッドが外部から呼べるAPI 削除したりシグネチャ/仕様を変えると非互換な変更 呼び出している側が動かなくなったり、ビルドが通らなくなったりする ユーザ向けではないが、モジュール間で参照する意図でpublicなクラス/メソッドも多い (Hadoopは)それを示すためのInterfaceAudienceアノテーションを使っている @InterfaceAudience.PublicなものだけJavadocが出力される @InterfaceAudience.Privateだとマイナーバージョンアップでも変更されうる アノテーションがついてるから外から呼べなくなるわけではない 歴史的経緯で外部から呼ばれていることもありがち Java 9(以降)に移行するとモジュール機能(JPMS)で整理することもできるはずだけど... JavaのAPI @InterfaceAudience.LimitedPrivate({ "MapReduce", "HBase" }) @InterfaceStability.Unstable public class DistributedFileSystem extends FileSystem implements KeyProviderTokenIssuer, BatchListingOperations { DistributedFileSystem.java:
  • 12. © 2021 NTT DATA Corporation 12 Hadoopエコシステムのプロダクト(の多く)はMavenを利用 多くのプロダクトに依存し多くのプロダクトから依存される ミドルウェア間で競合しがちなdependencies SLF4J, Log4j commons-logging, commons-cli, commons-httpclient Jackson Guava Netty, Jetty, Jersey protobuf-java ZooKeeper, Curator ... Mavenのdependency
  • 13. © 2021 NTT DATA Corporation 13 https://maven.apache.org/guides/introduction/introduction-to-dependency-mechanism.html#Transitive_Dependencies 依存ライブラリの依存ライブラリも依存ライブラリ 同一クラスローダ上に同じクラスの異なるバージョンは並存できない 依存関係ツリー上に複数のバージョンがある場合、近いものが勝つ (dependency mediation) mediationの結果、問題なくビルドできて動くという保証はない Hadoopエコシステムのプロダクトの依存関係ツリーは、さらに深くなる Transitive dependencies $ mvn dependency:tree -Dmaven-dependency-plugin.version=2.10 -Dverbose ... [INFO] org.apache.hadoop:hadoop-common:jar:3.4.0-SNAPSHOT ... [INFO] +- org.apache.httpcomponents:httpclient:jar:4.5.13:compile [INFO] | +- org.apache.httpcomponents:httpcore:jar:4.4.13:compile [INFO] | +- (commons-logging:commons-logging:jar:1.1.3:compile - version managed from 1.2; omitted for duplicate) ... [INFO] +- commons-logging:commons-logging:jar:1.1.3:compile ... [INFO] +- commons-beanutils:commons-beanutils:jar:1.9.4:compile [INFO] | +- (commons-logging:commons-logging:jar:1.1.3:compile - version managed from 1.2; omitted for duplicate) [INFO] | - (commons-collections:commons-collections:jar:3.2.2:compile - omitted for duplicate) [INFO] +- org.apache.commons:commons-configuration2:jar:2.1.1:compile [INFO] | - (commons-logging:commons-logging:jar:1.1.3:compile - version managed from 1.2; omitted for duplicate) hadoop-commonのcommon-loggingに関するdependency mediation:
  • 14. © 2021 NTT DATA Corporation 14 Javaで実装された(主に運用用の)APIを呼び出すモジュールを実行するシェルスクリプト dependentがAPIではなくCLIを実行し、出力をparseすることもある 出力のフォーマットの変更や、warning出力の追加が問題になりがち (HADOOP-11257) bash-3.0以上が前提 (HADOOP-9902) CLI
  • 15. © 2021 NTT DATA Corporation 15 誰がどういう操作をしたかの記録 タブ区切りの独自フォーマット いまならもっとよいフォーマットにできそうだが.. 機械的に処理してチェックされがちなので積極的に変えない 監査ログ ip=/x.x.x.x cmd=mkdirs src=/tmp dst=null perm=centos:supergroup:rwxr-xr-x proto=rpc ip=/x.x.x.x cmd=setPermission src=/tmp dst=null perm=centos:supergroup:rwxrwxrwx proto=rpc ip=/x.x.x.x cmd=create src=/tmp/README.txt._COPYING_ dst=null perm=centos:supergroup:rw-r--r-- proto=rpc ip=/x.x.x.x cmd=rename src=/tmp/README.txt._COPYING_ dst=/tmp/README.txt perm=centos:supergroup:rw-r--r-- proto=rpc ip=/x.x.x.x cmd=listStatus src=/tmp dst=null perm=null proto=rpc ip=/x.x.x.x cmd=open src=/tmp/README.txt dst=null perm=null proto=rpc ... HDFSのauditログ(の一部):
  • 16. © 2021 NTT DATA Corporation 16 動作状態や性能を監視する上で有用な統計情報など JMXで提供している WebインタフェースからJSON形式で取得することもできる 項目の追加は問題なくできる 既存の項目の変更や削除はincompatible changeとして避けるべき メトリクス $ curl localhost:9870/jmx?qry=Hadoop:service=NameNode,name=ReplicatedBlocksState { "beans" : [ { "name" : "Hadoop:service=NameNode,name=ReplicatedBlocksState", "modelerType" : "org.apache.hadoop.hdfs.server.namenode.FSNamesystem", "LowRedundancyReplicatedBlocks" : 0, "CorruptReplicatedBlocks" : 0, "MissingReplicatedBlocks" : 0, "MissingReplicationOneBlocks" : 0, "BytesInFutureReplicatedBlocks" : 0, "PendingDeletionReplicatedBlocks" : 0, "TotalReplicatedBlocks" : 1 } ] } JMXJsonServletを利用したメトリクス取得:
  • 17. © 2021 NTT DATA Corporation 17 各プロダクトの開発者は(基本的には)それぞれ別の人 テストコードから外部向けではないAPIが使われがち ライブラリを脆弱性起因でバージョンアップしたら非互換な変更もセットでついてきたり 互換性は意外とよく壊れる
  • 18. © 2021 NTT DATA Corporation 18 Bigtop basics
  • 19. © 2021 NTT DATA Corporation 19 ソースコードはGitHubにある ASF(Apache Software Foundation)のプロジェクト全般 # 2019年4月から # https://blogs.apache.org/foundation/entry/the-apache-software-foundation-expands 開発の管理はJIRA https://issues.apache.org/jira/projects/BIGTOP issueを作ってパッチを添付するかpull requestのリンクを貼る Bigtopのソースコード $ git clone https://github.com/apache/bigtop $ cd bigtop Bigtopのソースコードの取得:
  • 20. © 2021 NTT DATA Corporation 20 Gradleを利用して各種処理を実行する Bigtopのタスク $ ./gradlew tasks > Task :tasks ------------------------------------------------------------ Tasks runnable from root project - Bigtop ------------------------------------------------------------ Apache Creadur tasks -------------------- rat - Runs Apache Rat checks Build tasks ----------- assemble - Assembles the outputs of this project. ... タスク一覧の表示:
  • 21. © 2021 NTT DATA Corporation 21 部品表 対象プロダクトとそのバージョンなどが記述されている Bigtop BOM $ cat bigtop.bom bigtop { // *the name should be change: the parsing code depends on it* version = "STACK-VERSION" // *required* stack { // *required* Fundamental properties of the Stack: JDK, SDK, GDK, etc 'jdk' { version = '1.8'; version_base = version } 'scala' { version = '2.10.4'; version_base = version } } ... components { 'hadoop' { name = 'hadoop' relNotes = 'Apache Hadoop' version { base = '3.2.2'; pkg = base; release = 1 } tarball { destination = "${name}-${version.base}.tar.gz" source = "${name}-${version.base}-src.tar.gz" } url { download_path = "/$name/common/$name-${version.base}" site = "${apache.APACHE_MIRROR}/${download_path}" archive = "${apache.APACHE_ARCHIVE}/${download_path}" } } ... BOMの内容:
  • 22. © 2021 NTT DATA Corporation 22 Bigtop toolchain
  • 23. © 2021 NTT DATA Corporation 23 プロダクト群をビルドするための環境をセットアップする資材 Puppetをインストールするスクリプト ビルドツール群をインストールPuppetマニフェスト JDK, Maven, GCC, CMake, Protocol Buffers, lib*-devel, ... OS提供パッケージだとバージョンが合わないものは個別にセットアップ プラットフォーム差分に対応するためのワークアラウンドを入れることもある 例) aarch64対応のパッチを当ててprotobuf-2.5.0をビルド bigtop_toolchain $ sudo bigtop_toolchain/bin/puppetize.sh $ ./gradlew toolchain bigtop_toolchainによるビルド環境のセットアップ:
  • 24. © 2021 NTT DATA Corporation 24 packaging
  • 25. © 2021 NTT DATA Corporation 25 プロダクトをビルドしてパッケージングする 「プロダクト名-pkg」というGradleタスクで実行 .rpmと.debの2種類に対応 その環境に応じたパッケージが作られる Red Hat系なら.rpm Debian系なら.deb bigtop-package $ ./gradlew hadoop-pkg $ ./gradlew zookeeper-pkg $ ./gradlew bigtop-jsvc-pkg bigtop-utils-pkg bigtop-groovy-pkg パッケージングタスクの実行例:
  • 26. © 2021 NTT DATA Corporation 26 共通のビルド手順とインストール手順を.debと.rpm用の資材から呼び出して使う ビルド手順: do-component-build インストール手順: install_プロダクト名.sh パッケージング資材 bigtop-packages ├── src │ ├── common │ │ ├── hadoop │ │ │ ├── do-component-build │ │ │ ├── install_hadoop.sh │ │ │ ├── deb │ │ ├── hadoop │ │ │ ├── control │ │ │ ├── rules │ │ │ ├── rpm │ │ ├── hadoop │ │ │ ├── SPECS │ │ │ │ ├── hadoop.spec パッケージング資材の配置:
  • 27. © 2021 NTT DATA Corporation 27 パッケージング時にpatch.*diffという名前のファイルをpatchとして適用 リリース版で解決できない問題に対応するため 特定プラットフォームでビルドが失敗する問題への対処 # Ubuntu, x86_64を暗黙に想定しているパターンが多いような パッケージング対象バージョンに含まれない修正のバックポート 互換性を壊す変更のrevert プロダクト間のdependencyのつじつま合わせ プロダクトA, B, Cの3つが同時に動くバージョンの組み合わせが存在しないなど 独自に修正するとしてもpom.xmlぐらい patchを書いたらなるべくfeedback.. Bigtopパッケージングにおけるパッチ適用 $ find bigtop-packages/src/common/hadoop -name 'patch*.diff' | sort bigtop-packages/src/common/hadoop/patch0-revert-HADOOP-16598.diff bigtop-packages/src/common/hadoop/patch1-HADOOP-15939.diff bigtop-packages/src/common/hadoop/patch2-exclude-spotbugs-annotations.diff bigtop-packages/src/common/hadoop/patch3-fix-broken-dir-detection.diff Bigtopが適用するpatch:
  • 28. © 2021 NTT DATA Corporation 28 $BIGTOP_HOME/output 下に出力されるパッケージファイルでリポジトリを作成する repoタスクで実行 その環境に応じたリポジトリが作られる (Red Hat系ならYumの、Debian系ならAptの) パッケージリポジトリの作成 $ ./gradlew repo $ tree output ... ├── hadoop │ ├── hadoop-3.2.2-1.el8.src.rpm │ └── x86_64 │ ├── hadoop-3.2.2-1.el8.x86_64.rpm │ ├── hadoop-client-3.2.2-1.el8.x86_64.rpm │ ├── hadoop-conf-pseudo-3.2.2-1.el8.x86_64.rpm ... │ ├── hadoop-hdfs-3.2.2-1.el8.x86_64.rpm ... ├── repodata ... │ ├── aa0ff69b812187315d6825fcf7d862c326ac1ba42bf9625e57b826cd6462a68c-filelists.xml.gz │ ├── cb8d35ada5c22a89e1f65a62229acde45b4175d5281a513fc6e1190d0ce4544c-filelists.sqlite.bz2 │ ├── f2077b7afd203a11428c21ca3c41f02a786fc2f514888274f12f514673d4f88f-primary.xml.gz │ └── repomd.xml リポジトリの作成(CentOS 8で実行した場合の例):
  • 29. © 2021 NTT DATA Corporation 29 「プロダクト名-pkg-ind」というGradleタスクで実行(in Docker container) 異なるOS用のパッケージをビルドできる Docker Hubのbigtop/slavesのイメージを利用 -POS=centos-7 -Pprefix=trunkだとtrunk-centos-7タグになる(x86_64の場合) aarch64のマシン上でやるとtrunk-centos-7-aarch64タグ 試行錯誤しつつbigtop-packageの資材を修正する場合には使いにくい(かも) Dockerコンテナを利用したパッケージング $ ./gradlew hadoop-pkg-ind -POS=centos-7 -Pprefix=trunk パッケージングタスクの実行例:
  • 30. © 2021 NTT DATA Corporation 30 provisioning
  • 31. © 2021 NTT DATA Corporation 31 Dockerコンテナを起動してPuppetでクラスタを構築するスクリプト 事前にDockerとdocker-composeのセットアップが必要 ./gradlew docker-provisionerで実行できる(がスクリプトを直接使った方が微妙に便利..) Docker provisioner $ cd provisioner/docker $ ./docker-hadoop.sh --create 3 --image bigtop/puppet:trunk-centos-8 --memory 8g --stack hdfs,yarn,mapreduce --repo file:///bigtop-home/output --disable-gpg-check $ ./docker-hadoop.sh --list Name Command State Ports ------------------------------------------------------------ 20210124_122554_r12819_bigtop_1 /sbin/init Up 20210124_122554_r12819_bigtop_2 /sbin/init Up 20210124_122554_r12819_bigtop_3 /sbin/init Up $ ./docker-hadoop.sh --exec 1 /bin/bash ... Dockerコンテナを利用したデプロイの例:
  • 32. © 2021 NTT DATA Corporation 32 docker-hadoop.sh --createで出力されたファイルを見ると参考になる Bigtopのソースツリーを/bigtop-homeにマウント Hieraの設定を生成してpuppet apply Docker provisionerの仕組み $ cat docker-compose.yml bigtop: ... volumes: - ../../:/bigtop-home - ./config/hiera.yaml:/etc/puppet/hiera.yaml - ./config/hieradata:/etc/puppet/hieradata - ./config/hosts:/etc/hosts - /sys/fs/cgroup:/sys/fs/cgroup:ro $ cat config/hieradata/site.yaml bigtop::hadoop_head_node: b2d614be6039.bigtop.apache.org hadoop::hadoop_storage_dirs: [/data/1, /data/2] bigtop::bigtop_repo_uri: file:///bigtop-home/output bigtop::bigtop_repo_gpg_check: false hadoop_cluster_node::cluster_components: [hdfs,yarn,mapreduce] hadoop_cluster_node::cluster_nodes: [172.17.0.3, 172.17.0.4, 172.17.0.2] ... Docker provisionerの設定ファイル(の一部):
  • 33. © 2021 NTT DATA Corporation 33 Hadoopクラスタを構築するためのPuppetマニフェスト Docker provisioner抜きで使うこともできる bigtop-deploy $ tree bigtop-deploy/puppet bigtop-deploy/puppet ├── hieradata │ ├── bigtop │ │ ├── cluster.yaml ... │ └── site.yaml ├── hiera.yaml ├── manifests │ ├── bigtop_repo.pp │ ├── cluster.pp ... │ ├── hadoop ... │ │ ├── manifests │ │ │ └── init.pp │ │ └── templates │ │ ├── container-executor.cfg │ │ ├── core-site.xml ... Puppetマニフェストのファイルツリー:
  • 34. © 2021 NTT DATA Corporation 34 スクリプト経由でコンテナ停止と、一時ファイル等の削除 クラスタ起動中の問題などでやり直す場合も、まず一度--destroyしてから Dockerクラスタの終了 $ ./docker-hadoop.sh --destroy Dockerコンテナクラスタの停止:
  • 35. © 2021 NTT DATA Corporation 35 tests
  • 36. © 2021 NTT DATA Corporation 36 パッケージをデプロイした状態で動くかざっくり確認するためのテスト おもにGroovyで書かれている CLIを実行して期待する出力が得られるかを確認というパターンが多い smoke-tests $ cat bigtop-tests/test-artifacts/hadoop/src/main/groovy/.../hdfs/TestTextSnappy.groovy ... @Test void testTextSnappy() { String cmd = "hadoop fs -text ${testDir}/${snappyFileName}" System.out.println(cmd) sh.exec(cmd) String output = sh.getOut().join("n") logError(sh) String expected = "1traffertyt31n2tjonest33n3tsteinbergt33" System.out.println("Expected output:n${expected}") System.out.println("Actual output:n${output}") assertEquals("Incorrect output", expected, output) } smoke-testsのテストケースの例:
  • 37. © 2021 NTT DATA Corporation 37 Docker provisionerで起動したクラスタ上でテストを実行できる やっていることはgradleタスクの実行 --smoke-test hdfs だと bigtop-tests:smoke-tests:hdfs:test タスク Docker provisionerでtestを実行 $ ./docker-hadoop.sh --smoke-tests hdfs,yarn,mapreduce 起動済みのDockerコンテナを利用してsmoke testsを実行:
  • 38. © 2021 NTT DATA Corporation 38 Bigtop 3.0.0
  • 39. © 2021 NTT DATA Corporation 39 https://issues.apache.org/jira/browse/BIGTOP-3471 Hadoop 3.x対応 (なのでBigtopのバージョンも分かりやすく3.0に) 付随してHBase 1.x -> 2.x, Hive 2.x -> 3.x 開発が止まったプロダクトをdrop 特にHadoop 3.x対応が行われていないもの 古いOSのサポートをやめる (Ubuntu 16.04とDebian 9) 新しいOSのサポート(Ubuntu 20.04とDebian 11?) # CentOS 8は...? BOM of Bigtop 3.0.0
  • 40. © 2021 NTT DATA Corporation 40 Summary
  • 41. © 2021 NTT DATA Corporation 41 Apache Bigtopがやってるのは泥臭い作業 Hadoopエコシステムを使う敷居を下げるには必要 いろいろ勉強にはなる RedHat系とDebian系のOSいろいろ Java/Mavenのdependency managementの仕組みと苦労 ネイティブライブラリにまつわるあれこれ コンテナとプロビジョニングツールを利用したテストとCI Amazon EMRやAzure HDInsightの理解にも役立つかも? 使ってみたり、パッチを投げてみたりしてください まとめ
  • 42. © 2021 NTT DATA Corporation 本資料に記載されている会社名、商品名、又はサービス名は、各社の登録商標又は商標です。