HDP2.1からHDP2.4にupgradeした話

2種類のログ解析基盤 - wyukawa’s blogで書いた1つ目のエンジニアよりの解析基盤をHDP2.1からHDP2.4にupgradeしました。upgradeがちゃんと終わったのは昨日なのでまだ何かあるかもしれませんが、メモがてら書いておきます。

upgradeのやり方はblue green deploymentです。

fluentdでログ収集しているので新旧両方のHadoopクラスタに書き込んで、過去データはdistcpで移行します。

distcpの使い方は最近のHadoop distcpについて - たごもりすメモ参照

最初はHDP2.3.4でupgrade作業を進めていたのですが、HDP2.4に途中で上書きupgradeしました。

HDP2.3からはhiveのdefault engineがtezなのでtezを使っていましたが、いくつか問題に遭遇しました。

最初に遭遇して報告したのが
https://issues.apache.org/jira/browse/HIVE-13238
で、こちらはhive.tez.container.sizeを2GBから4GBにして回避しました。

次に遭遇して報告したのが
https://issues.apache.org/jira/browse/HIVE-13239
です。

で、この時点でtezはまだ安定してないのかなと思ってmapreduceに切り替えました。

ところがmapreduceでも問題に遭遇して報告したのが
https://issues.apache.org/jira/browse/HIVE-13273

hiveserver2のスレッド数増大問題はHDP2.1の時にも別のhadoopクラスタで遭遇していてその時は最初は定期的に再起動してました。その後hiveのhookでtimeline serverに通信している部分があってそこの設定をなくしたら解消しました。

HDP2.3でもまたかよと思ってtwitterでさけんでたら、親切な方が下記を教えてくれました。
https://community.hortonworks.com/questions/20116/logfdscacheflushtimer-thread-increase.html

timeline serverエ。。。mapreduceだったら関係無いんじゃないのと思いつつも、うちが遭遇したのと同じ問題です。HDP2.4にupgradeしたら解消しそうということでupgradeしたら今のところps -L $(pgrep -f hiveserver2) | wc -lの数も100ぐらいで収まってます。

ちなみにHDP2.4出てすぐupgradeしなかったのは最初見たときにHDP2.3.4との違いがKafkaやSparkぐらいでその2つを使ってなかったからです。ですが、上記の問題がある以上upgradeするしかないと思ってやりました。まだサービスイン前だからやれた次第です。

ちなみにHDP2.3.4からHDP2.4にupgradeするとambariでhive.server2.authentication.pam.servicesとhive.server2.custom.authentication.classを指定しろやごらあと怒られたので適当な文字列入れときました。NOSASLだから関係無いと思うんだけど、指定しないと設定変更できないので。こちらも一応報告しときました。https://issues.apache.org/jira/browse/AMBARI-15418

いまのところバッチはtezを使っていてshibからはmapreduce経由でジョブ実行してます。これはtezでジョブの実行状況を取得するやり方がわからなかったからです。https://github.com/tagomoris/shib/issues/46