beelineでHadoopにつなごうとしたらこんなエラーがでて困った。
18/10/10 15:59:41 [main]: ERROR jdbc.HiveConnection: Error opening session org.apache.thrift.TApplicationException: Required field 'client_protocol' is unset! Struct:TOpenSessionReq(client_protocol:null, configuration:{use:database=default, set:hiveconf:hive.server2.thrift.resultset.default.fetch.size=1000})
その時の解決方法。
条件とやりたいこと
やりたいこと
- すでにHadoopクラスターができている。
- そのクラスターに対して新しいノードからクライアントしてbeelineを使いたかった。
条件など
- Hadoopはclouderaを使っている。
- エラーが出た時、Hiveはapache hive からダウンロードして使っていた。
ちなみにhive 1.2.2も2.3.3も3.1.0も使ってみたが、どのバージョンも同じようなエラーだった。
解決方法
cloudera からHiveをインストールする!
stackoverflowなどをみて解決方法を探ってたら
「hive-jdbc-1.2...だとかバージョン落としてみたら」とか
「metasrore_dbの場所が違うんじゃ?」とか出てきたけど
全然関係なかった。
cloudera のHiveを使えば解決しました。
sudo su - # OSのバージョンは適宜変更してね wget http://archive.cloudera.com/cdh5/redhat/7/x86_64/cdh/cloudera-cdh5.repo # clouderaのバージョンが異なるのであれば変えておくこと。 vi cloudera-cdh5.repo # ex. # ------------------------------------------------------- baseurl=https://archive.cloudera.com/cdh5/redhat/7/x86_64/cdh/5/ ↓ baseurl=https://archive.cloudera.com/cdh5/redhat/7/x86_64/cdh/5.15.0/ # ------------------------------------------------------- mv cloudera-cdh5.repo /etc/yum.repos.d/ yum install hive
これでうまくいった。
依存関係でhadoopコマンドやhdfsコマンドもインストールされるのね。