1000台規模のHadoopクラスタをHive/Tezアプリケーションにあわせてパフォーマンスチューニングした話

583 Views

February 15, 16

スライド概要

http://www.zusaar.com/event/17397003

profile-image

2023年10月からSpeaker Deckに移行しました。最新情報はこちらをご覧ください。 https://speakerdeck.com/lycorptech_jp

シェア

またはPlayer版

埋め込む »CMSなどでJSが使えない場合

関連スライド

各ページのテキスト
1.

1000台規模のHadoopクラスタを Hive/Tezアプリケーションにあわせて パフォーマンスチューニングした話 Rejected  HCJ  2016 ヤフー株式会社 杉⼭山 朋広/畑間 啓哉/藤本 謙志/鄭 輝/深澤 開/⽇日⽐比野 哲也/古⼭山 慎悟 2016年年2⽉月13⽇日 http://www.yahoo.co.jp /

2.

このセッションについて ヤフーの広告⽤用Hadoopクラスタ(773台構成)で発⽣生した性能 上のさまざまな問題と、それらを解決するまでの試⾏行行錯誤の 過程、効果があったチューニングパラメータをご紹介します Copyright  (C)  2016  Yahoo  Japan  Corporation.  All  Rights  Reserved.  無断引⽤用・転載禁⽌止 2

3.

広告レポートについて 要求は1時間あたり 100,000   Query テーブル(最⼤大) • • • 30  億⾏行行 /  1⽇日 7,000  億⾏行行 /  13  ヶ⽉月 7  TB  /  13  ヶ⽉月 Query • • 平均処理理時間 30  秒前後 必ず⼩小さなテーブルとのJOINが発⽣生する その他 • Daily,Weekly登録されたジョブが、データ更更新後⼀一気に流流れる Copyright  (C)  2016  Yahoo  Japan  Corporation.  All  Rights  Reserved.  無断引⽤用・転載禁⽌止 3

4.

アジェンダ 2016/01/20(⽔水) 2016/01/21(⽊木) 2016/01/22(⾦金金) 2016/01/25(⽉月) 2016/01/26(⽕火)   2016/01/27(⽔水) 2016/01/28(⽊木)   2016/01/29(⾦金金) Copyright  (C)  2016  Yahoo  Japan  Corporation.  All  Rights  Reserved.  無断引⽤用・転載禁⽌止 4

5.

アジェンダ 2016/01/20(⽔水) 問題の発覚 2016/01/21(⽊木) 2016/01/22(⾦金金) 2016/01/25(⽉月) 2016/01/26(⽕火)   2016/01/27(⽔水) 2016/01/28(⽊木)   2016/01/29(⾦金金) Copyright  (C)  2016  Yahoo  Japan  Corporation.  All  Rights  Reserved.  無断引⽤用・転載禁⽌止 5

6.

2016/01/20(⽔水) 問題の発覚 リソースは⼗十分・ソフトウェアも最新! Slaveノード数 クラスタメモリ Hiveserverノード数 ソフトウェアバージョン Hadoop Hive Tez 725 nodes 70 TB 3  nodes HDP2.3.0 2.7.1 1.2.1 0.7.0 Copyright  (C)  2016  Yahoo  Japan  Corporation.  All  Rights  Reserved.  無断引⽤用・転載禁⽌止 6

7.

2016/01/20(⽔水) 問題の発覚 スループットを稼ぐための新機能も⼊入れた! Hiveの実⾏行行エンジンをTezへ client • hive.execute.engine =  tez client Tezセッションの再利利⽤用 • tez.session.am.dag.submit.timeout.secs = 120 • Hiveserver2のconnectionを維持すること Tezコンテナの再利利⽤用 Tez session • tez.am.container.reuse.enabled =  true client HS2 AM client client HS2 AM AM client HS2 AM AM AM Tez container Copyright  (C)  2016  Yahoo  Japan  Corporation.  All  Rights  Reserved.  無断引⽤用・転載禁⽌止 7

8.

01/20(⽔水) 問題の発覚 独⾃自のベンチマークツールを作成 ベンチマークツール • • • • 今回のテストのために独⾃自に作成 指定した数のスレッドが起動して、並列列にSQLを実⾏行行 Benchmark SQLのサンプルをあらかじめ保存 Sample   directory process SQL Javaで作成 thread SQL SQL SQL SQL SQL thread thread thread SQL SQL SQL Copyright  (C)  2016  Yahoo  Japan  Corporation.  All  Rights  Reserved.  無断引⽤用・転載禁⽌止 HS2d thread thread 8

9.

01/20(⽔水) 問題の発覚 いざテスト!しかし性能出ず・・・ 1時間あたりSQL実⾏行行数 • • 7,000 Query/hour 要求の10分の1 主な問題 • • • クエリの並列列度度を引き上げても途中で頭打ち Hadoopクラスタはスカスカ Hiveserver2もスカスカ ヤバイ。。。 Copyright  (C)  2016  Yahoo  Japan  Corporation.  All  Rights  Reserved.  無断引⽤用・転載禁⽌止 9

10.

アジェンダ 設計 2016/01/20(⽔水) 問題の発覚 2016/01/21(⽊木) スタート! 2016/01/22(⾦金金) 2016/01/25(⽉月) 2016/01/26(⽕火)   2016/01/27(⽔水) 2016/01/28(⽊木)   2016/01/29(⾦金金) Copyright  (C)  2016  Yahoo  Japan  Corporation.  All  Rights  Reserved.  無断引⽤用・転載禁⽌止 10

11.

2016/01/21(⽊木) スタート! 対応チーム結成 ビジネスサイドへテスト結果を報告 • 対応期限が1⽉月いっぱいであることを告げられる 以下の3チームから⼈人選 • • • 広告アプリケーションチーム Hadoopインフラチーム Hive開発チーム Copyright  (C)  2016  Yahoo  Japan  Corporation.  All  Rights  Reserved.  無断引⽤用・転載禁⽌止 11

12.

アジェンダ 2016/01/20(⽔水) 問題の発覚 2016/01/21(⽊木) スタート! 2016/01/22(⾦金金) ボトルネック① 2016/01/25(⽉月) 2016/01/26(⽕火)   2016/01/27(⽔水) 2016/01/28(⽊木)   2016/01/29(⾦金金) Copyright  (C)  2016  Yahoo  Japan  Corporation.  All  Rights  Reserved.  無断引⽤用・転載禁⽌止 12

13.

2016/01/22(⾦金金) ボトルネック①(1/3) 並列列度度に関わる設定を⾒見見直し 条件 • • • 1クエリあたりの平均コンテナ数:10 クラスタメモリ:7,300  GB コンテナサイズはyarn.scheduler.minimum-‐‑‒allocation-‐‑‒mbの整数倍 項⽬目 変更更前 変更更後 yarn.scheduler.minimum-‐‑‒allocation-‐‑‒mb 1.7 GB 1.7  GB hive.tez.container.size 2  GB 1.7  GB 最⼤大同時実⾏行行コンテナ数 約 21,000 約 43,000 約 2,100 約 4,300 最⼤大同時実⾏行行App数(=SQL数) Copyright  (C)  2016  Yahoo  Japan  Corporation.  All  Rights  Reserved.  無断引⽤用・転載禁⽌止 13

14.

2016/01/22(⾦金金) ボトルネック①(2/3) Hiveserver2のボトルネックを発⾒見見 HS2の接続数に対してAMが少ない • 通常、HS2の1接続につき、1つのAMが起動 • 接続数1,000に対して、500くらいしかAMが起動しない hive.server2.thrift.max.worker.threads • • • • Hiveserver2のリクエスト受付側のスレッド数 いじっても変化なし クライアントからのリクエストは受け付けている 受け付けたリクエストをResourceManagerに渡せてないと判断 Copyright  (C)  2016  Yahoo  Japan  Corporation.  All  Rights  Reserved.  無断引⽤用・転載禁⽌止 14

15.

2016/01/22(⾦金金) ボトルネック①(3/3) Metastoreデータベースを直接参照 Hiveserver2の仕事 • • Metastoreの情報取得 クエリのコンパイルと結果セットの集約 hive.metastore.uris • • HDPでは空⽂文字列列指定(DB直接接続)を推奨 MetastoreAPIを使うようにカスタマイズしていたのが裏裏⽬目に Hiveserver2の接続数が上昇 • 20,000  Query/hour に到達 Copyright  (C)  2016  Yahoo  Japan  Corporation.  All  Rights  Reserved.  無断引⽤用・転載禁⽌止 15

16.

ここまでの成果 SQL/Hour 120,000   100,000   80,000   60,000   40,000   20,000   0   1/22/2016 1/23/2016 1/24/2016 1/25/2016 実測値(最⼤大) 1/26/2016 1/27/2016 1/28/2016 1/29/2016 ⽬目標 Copyright  (C)  2016  Yahoo  Japan  Corporation.  All  Rights  Reserved.  無断引⽤用・転載禁⽌止 16

17.

アジェンダ 2016/01/20(⽔水) 問題の発覚 2016/01/21(⽊木) スタート! 2016/01/22(⾦金金) ボトルネック① MetastoreServer 2016/01/25(⽉月) ボトルネック② 2016/01/26(⽕火)   2016/01/27(⽔水) 2016/01/28(⽊木)   2016/01/29(⾦金金) Copyright  (C)  2016  Yahoo  Japan  Corporation.  All  Rights  Reserved.  無断引⽤用・転載禁⽌止 17

18.

2016/01/25(⽉月)  ボトルネック②(1/3) ResourceManagerのボトルネックを発⾒見見 Hiveserver2→Metastoreのボトルネックが解消 • Hiverserver2のリソースが使われ始める • しかし、リクエスト数に対して、まだAMが少ない ⼤大量量のPendingAppsが発⽣生 • HS2の接続数が増えていくと、PendingステータスのAppが多発 • RMが効率率率よくAMを起動できてないかもしれない Copyright  (C)  2016  Yahoo  Japan  Corporation.  All  Rights  Reserved.  無断引⽤用・転載禁⽌止 18

19.

2016/01/25(⽉月)  ボトルネック②(2/3) TimelineServerの利利⽤用を停⽌止 YARN  TimelineServer • YARNアプリケーションのログやstatisticsを保管 • ローカルのleveldbを使うため、ボトルネックになりやすい 従来のHistoryServerの使⽤用も可能 • tez.history.logging.service.class = org.apache.tez.dag.history.logging.impl.SimpleHistoryLoggingService • HDFSの負荷があがることに注意 Copyright  (C)  2016  Yahoo  Japan  Corporation.  All  Rights  Reserved.  無断引⽤用・転載禁⽌止 19

20.

2016/01/25(⽉月)  ボトルネック②(3/3) ApplicationMasterの起動効率率率の向上 ⼤大量量のAM起動中にPendingが発⽣生 • PendingステータスのAMが多いことに気づく yarn.resourcemanager.amlauncher.thread-‐‑‒count • RMがAMを起動する時に使うスレッドの数 • 50(デフォルト)→200に引き上げ 結果 • 22,000 Query/hour • 思ったより効果出ず。。 Copyright  (C)  2016  Yahoo  Japan  Corporation.  All  Rights  Reserved.  無断引⽤用・転載禁⽌止 20

21.

ここまでの成果 SQL/Hour 120,000   100,000   80,000   60,000   40,000   20,000   0   1/22/2016 1/23/2016 1/24/2016 1/25/2016 実測値(最⼤大) 1/26/2016 1/27/2016 1/28/2016 1/29/2016 ⽬目標 Copyright  (C)  2016  Yahoo  Japan  Corporation.  All  Rights  Reserved.  無断引⽤用・転載禁⽌止 21

22.

アジェンダ 2016/01/20(⽔水) 問題の発覚 2016/01/21(⽊木) スタート! 2016/01/22(⾦金金) ボトルネック① MetastoreServer 2016/01/25(⽉月) ボトルネック② RM 2016/01/26(⽕火)  ボトルネック③ 2016/01/27(⽔水) 2016/01/28(⽊木)   2016/01/29(⾦金金) Copyright  (C)  2016  Yahoo  Japan  Corporation.  All  Rights  Reserved.  無断引⽤用・転載禁⽌止 22

23.

2016/01/26(⽕火)  ボトルネック③(1/3) ResourceManagerのボトルネックが継続 Pendingステータスのコンテナが多発 • • ⼤大量量のAMに対して、コンテナが少なすぎることに気付く コンテナの起動に関わる設定を模索索 Copyright  (C)  2016  Yahoo  Japan  Corporation.  All  Rights  Reserved.  無断引⽤用・転載禁⽌止 23

24.

2016/01/26(⽕火)  ボトルネック③(2/3) コンテナの起動速度度を最適化 HeartBeat間隔を調整し、RMへの要求伝達を効率率率化 プロパティ default 変更更後 tez.am.am-‐‑‒rm.heartbeat.interval-‐‑‒ms.max 250 1500 yarn.resourcemanager. nodemanagers.heartbeat-‐‑‒interval-‐‑‒ms 2000 1000 コンテナ起動が効率率率よくなり、再びHS2がボトルネックに Copyright  (C)  2016  Yahoo  Japan  Corporation.  All  Rights  Reserved.  無断引⽤用・転載禁⽌止 24

25.

2016/01/26(⽕火)  ボトルネック③(3/3) 再びHiveserver2のボトルネックを発⾒見見 Hiveserver2の特徴 • クエリのコンパイルや結果セットの集約を⾏行行うので 並列列度度が⾼高いとボトルネックになりやすい Hiveserver2を3ノードから10ノードへ増設 • • 46,000 Query/hour に到達 少し効果が出てきた Copyright  (C)  2016  Yahoo  Japan  Corporation.  All  Rights  Reserved.  無断引⽤用・転載禁⽌止 25

26.

ここまでの成果 SQL/Hour 120,000   100,000   80,000   60,000   40,000   20,000   0   1/22/2016 1/23/2016 1/24/2016 1/25/2016 実測値(最⼤大) 1/26/2016 1/27/2016 1/28/2016 1/29/2016 ⽬目標 Copyright  (C)  2016  Yahoo  Japan  Corporation.  All  Rights  Reserved.  無断引⽤用・転載禁⽌止 26

27.

アジェンダ 2016/01/20(⽔水) 問題の発覚 2016/01/21(⽊木) スタート! 2016/01/22(⾦金金) ボトルネック① MetastoreServer 2016/01/25(⽉月) ボトルネック② RM 2016/01/26(⽕火)  ボトルネック③ AM 2016/01/27(⽔水) ボトルネック④ 2016/01/28(⽊木)   2016/01/29(⾦金金) Copyright  (C)  2016  Yahoo  Japan  Corporation.  All  Rights  Reserved.  無断引⽤用・転載禁⽌止 27

28.

2016/01/27(⽔水) ボトルネック④(1/2) 再びResourceManagerがボトルネックへ 並列列数を引き上げ • • 現段階で考えられるボトルネックが解消 並列列数を256から段階的に引き上げ 1,000並列列前後で性能が頭打ち • ResourceManagerが⾼高負荷になっていることを発⾒見見 Copyright  (C)  2016  Yahoo  Japan  Corporation.  All  Rights  Reserved.  無断引⽤用・転載禁⽌止 28

29.

2016/01/27(⽔水) ボトルネック④(2/2) ResourceManagerのヒープサイズ引き上げ ⼤大量量のAM実⾏行行によりRMが⾼高負荷に • • RMのメモリ使⽤用率率率が上昇 テスト中にフルGC→Failover RMのヒープを調整しフルGCを回避 • • • HDPはAmbariから調整 86,000 Query/hourに到達 あとひと息! Copyright  (C)  2016  Yahoo  Japan  Corporation.  All  Rights  Reserved.  無断引⽤用・転載禁⽌止 29

30.

ここまでの成果 SQL/Hour 120,000   100,000   80,000   60,000   40,000   20,000   0   1/22/2016 1/23/2016 1/24/2016 1/25/2016 実測値(最⼤大) 1/26/2016 1/27/2016 1/28/2016 1/29/2016 ⽬目標 Copyright  (C)  2016  Yahoo  Japan  Corporation.  All  Rights  Reserved.  無断引⽤用・転載禁⽌止 30

31.

アジェンダ 2016/01/20(⽔水) 問題の発覚 2016/01/21(⽊木) スタート! 2016/01/22(⾦金金) ボトルネック① 2016/01/25(⽉月) ボトルネック② 2016/01/26(⽕火)  ボトルネック③ 2016/01/27(⽔水) ボトルネック④ 2016/01/28(⽊木)  ボトルネック⑤ 2016/01/29(⾦金金) MetastoreServer RM AM コンテナ Copyright  (C)  2016  Yahoo  Japan  Corporation.  All  Rights  Reserved.  無断引⽤用・転載禁⽌止 31

32.

2016/01/28(⽊木)  ボトルネック③(1/3) HDFSのボトルネックを発⾒見見 著しくパフォーマンスが悪いSQLを発⾒見見 • • 同じSQLを再実⾏行行すると速い 構⽂文やデータ構造の問題でない ⼤大量量のAppから同じDatanodeへアクセス集中 • • DatanodeのConnection   Timeout その他不不明なHDFSアクセスエラー Copyright  (C)  2016  Yahoo  Japan  Corporation.  All  Rights  Reserved.  無断引⽤用・転載禁⽌止 32

33.

2016/01/28(⽊木) ボトルネック⑤ Datanodeのビジーを解消 HDFSのReplicationFactorを引き上げることでbusyを回避 • • • ReplicationFactor:3(Default) → 10 hadoop fs –setrep 10 /user/hive/warehouse/... hive> set  dfs.replication=10; Copyright  (C)  2016  Yahoo  Japan  Corporation.  All  Rights  Reserved.  無断引⽤用・転載禁⽌止 33

34.

2016/01/28(⽊木) ボトルネック⑤ Namenodeのチューニンング ⼤大量量のAM終了了時にNamenodeがダウン • AM終了了時のJobHistoryの⼤大量量書き込みが原因 Namenodeスレッド数の調整 • dfs.namenode.handler.count -‐‑‒>  40 HDFSユーザのnofile引き上げ • • • too many open filesエラーが発⽣生 nofileを1,280,000へ引き上げ Ambariから調整 Copyright  (C)  2016  Yahoo  Japan  Corporation.  All  Rights  Reserved.  無断引⽤用・転載禁⽌止 34

35.

ここまでの成果 SQL/Hour 120,000   100,000   80,000   60,000   40,000   20,000   0   1/22/2016 1/23/2016 1/24/2016 1/25/2016 実測値(最⼤大) 1/26/2016 1/27/2016 1/28/2016 1/29/2016 ⽬目標 Copyright  (C)  2016  Yahoo  Japan  Corporation.  All  Rights  Reserved.  無断引⽤用・転載禁⽌止 35

36.

アジェンダ 2016/01/20(⽔水) 問題の発覚 2016/01/21(⽊木) スタート! 2016/01/22(⾦金金) ボトルネック① 2016/01/25(⽉月) ボトルネック② 2016/01/26(⽕火)  ボトルネック③ 2016/01/27(⽔水) ボトルネック④ 2016/01/28(⽊木)  ボトルネック⑤ 2016/01/29(⾦金金) MetastoreServer RM AM コンテナ HDFS Copyright  (C)  2016  Yahoo  Japan  Corporation.  All  Rights  Reserved.  無断引⽤用・転載禁⽌止 36

37.

2016/01/29(⾦金金) スイートスポットの探索索 768並列列以降降は、DNのネックで頭打ち 並列列数 60,000SQLの処理理時間 1時間あたり換算 512 2,508  sec 86,106   qph 768 2,289  sec 94,354   qph 1,024 2,514  sec 85,899   qph 2,560 3,106  sec 69,541   qph サンプル数を増やして実測値でも100,000qphをクリア! Copyright  (C)  2016  Yahoo  Japan  Corporation.  All  Rights  Reserved.  無断引⽤用・転載禁⽌止 37

38.

⽬目標達成!!! SQL/Hour 120,000   100,000   80,000   60,000   40,000   20,000   0   1/22/2016 1/23/2016 1/24/2016 1/25/2016 実測値(最⼤大) 1/26/2016 1/27/2016 1/28/2016 1/29/2016 ⽬目標 Copyright  (C)  2016  Yahoo  Japan  Corporation.  All  Rights  Reserved.  無断引⽤用・転載禁⽌止 38

39.

アジェンダ 2016/01/20(⽔水) 問題の発覚 2016/01/21(⽊木) スタート! 2016/01/22(⾦金金) ボトルネック① 2016/01/25(⽉月) ボトルネック② 2016/01/26(⽕火)  ボトルネック③ 2016/01/27(⽔水) ボトルネック④ 2016/01/28(⽊木)  ボトルネック⑤ 2016/01/29(⾦金金) ⽬目標達成! MetastoreServer RM AM コンテナ HDFS Copyright  (C)  2016  Yahoo  Japan  Corporation.  All  Rights  Reserved.  無断引⽤用・転載禁⽌止 39

40.

おまけ Copyright  (C)  2016  Yahoo  Japan  Corporation.  All  Rights  Reserved.  無断引⽤用・転載禁⽌止 40

41.

その他効果があったと思われるパラメータ(1/5) reuseまわり Reuse  on/off • • tez.am.container.reuse.rack-‐‑‒fallback.enabled=true =>  同じrackのcontainerをreuseする設定 tez.am.container.reuse.non-‐‑‒local-‐‑‒fallback.enabled=true   =>  rack外のcontainerをreuseする設定 Copyright  (C)  2016  Yahoo  Japan  Corporation.  All  Rights  Reserved.  無断引⽤用・転載禁⽌止 41

42.

その他効果があったと思われるパラメータ( 2/5 ) reuseまわり Containerの保持期間を調整 • • • tez.am.session.min.held-‐‑‒containers=10 tez.am.container.idle.release-‐‑‒timeout-‐‑‒max.millis=5000 tez.am.container.idle.release-‐‑‒timeout-‐‑‒min.millis=2000 Containerのreuseが効果を維持するため • tez.session.am.dag.submit.timeout.secs=120 =>  次のクエリが来る間隔以上で設定しておく必要がある Copyright  (C)  2016  Yahoo  Japan  Corporation.  All  Rights  Reserved.  無断引⽤用・転載禁⽌止 42

43.

その他効果があったと思われるパラメータ( 3/5 ) Hiveserver2まわり clientの接続数が多い場合は、以下を引き上げる • • hive.server2.thrift.min.worker.threads=5   -‐‑‒>  100   hive.exec.parallel.thread.number=8   -‐‑‒>  32 Join最適化 • • hive.auto.convert.join.noconditionaltask.size=209715200 hive.auto.convert.join=true =>  メモリ上にのるデータならMapフェーズでJoinしStageがひとつ減る Copyright  (C)  2016  Yahoo  Japan  Corporation.  All  Rights  Reserved.  無断引⽤用・転載禁⽌止 43

44.

その他効果があったと思われるパラメータ( 4/5 ) etc node  localityの変更更 • yarn.scheduler.capacity.node-‐‑‒locality-‐‑‒delay=-‐‑‒1   -‐‑‒>  26 RMとATSの通信削減 • yarn.resourcemanager.system-‐‑‒metrics-‐‑‒publisher.enabled=false =>  もし使ってなければ、falseにして無駄な通信を無くしたほうがいい Copyright  (C)  2016  Yahoo  Japan  Corporation.  All  Rights  Reserved.  無断引⽤用・転載禁⽌止 44

45.

その他効果があったと思われるパラメータ(5/5) etc Pre-‐‑‒warm • • • • hive.prewarm.enabled=true hive.prewarm.numcontainers=25 hive.server2.tez.sessions.per.default.queue=96 hive.server2.tez.default.queues=queue_̲name =>  今回は、DoASを有効にしているので使いませんでした。 Copyright  (C)  2016  Yahoo  Japan  Corporation.  All  Rights  Reserved.  無断引⽤用・転載禁⽌止 45

46.

最後に Copyright  (C)  2016  Yahoo  Japan  Corporation.  All  Rights  Reserved.  無断引⽤用・転載禁⽌止 46

47.

反省省点 ⼤大規模環境からくる慢⼼心 サーバがたくさんあるからと安⼼心していた • • 700ノードもあるから⼤大丈夫だろうと⾼高を括っていた スレーブノードが増えれば、HDFSやYARNの基本的な設定も⾒見見直すべき チーム間の連携 • • クラスタ本体とHiveの設定の担当が別チームで設計の整合性が⽋欠如 ⼤大きなクラスタを⼤大きな組織で運営する問題 Copyright  (C)  2016  Yahoo  Japan  Corporation.  All  Rights  Reserved.  無断引⽤用・転載禁⽌止 47

48.

収穫 ⼤大規模環境の運営で培った⼒力力が活きた YARNやHDFSのノウハウが通⽤用する • • HiveやTezなどベーシックなエコシステムを利利⽤用 YARNやHDFSの経験を積んだ⼈人材が育っていた 短期間に各領領域の専⾨門家が集結 • • 設計時は複数チームの意思疎通がまずかったが、 それぞれの領領域の専⾨門家が集まることで短期間に問題を解決できた この中には当社のHiveコントリビュータもいて、⼒力力強い助っ⼈人になった Copyright  (C)  2016  Yahoo  Japan  Corporation.  All  Rights  Reserved.  無断引⽤用・転載禁⽌止 48

49.

EOP Copyright  (C)  2016  Yahoo  Japan  Corporation.  All  Rights  Reserved.  無断引⽤用・転載禁⽌止 49