Kylinに依存しないHBaseクラスターのデプロイに関するFAQの概要



Kylin Independent Hbase Cluster Deployment Faq Summary



Kylinは、デプロイ後にHadoop、Hive、HBaseなどのコンポーネントに依存する必要があります。最近、同社はKylinサービスを展開する際に多くの問題に直面しました。 HBaseクラスターは主に独立してデプロイされます。これは、KylinによってデプロイされたHDFSと同じではありません。そのため、多くのピットが踏まれてきました。ここで発生した問題のいくつかを記録しますので、皆様のお役に立てれば幸いです。

Hadoopバージョン:2.7.3



Hiveバージョン:2.1.1

HBaseバージョン:1.2.6



Kylinバージョン:2.4.0および2.6.1

KylinとHBaseは2つの異なるHDFSクラスターにあるため、KylinサービスがHBaseにアクセスするには、次のことを行う必要があります。

以下に示すように、HBaseがHadoopのhdfs-sitem.xmlにあるHDFSクラスターのdfs.nameservicesと対応するnamenodeアドレスを構成します。



dfs.nameservices cluster1,hbase-cluster ... dfs.ha.namenodes.hbase-cluster hbasenn1,hbasenn2 dfs.namenode.rpc-address.hbase-cluster.hbasenn1 xxx:8020 dfs.namenode.rpc-address.hbase-cluster.hbasenn2 xxx:8020 dfs.client.failover.proxy.provider.hbase-cluster org.apache.hadoop.hdfs.server.namenode.ha.ConfiguredFailoverProxyProvider

同時に、KYLIN_HOME / conf /kylin.propertiesで構成する必要もあります。

kylin.storage.hbase.cluster-fs=hdfs://hbase-cluster/

問題1Kerberosを使用したHDFSがKerberosを使用せずにHDFSにアクセスする

1 KylinのHDFSはオンラインであるため、通常、セキュリティ認証としてKerberosが導入されます。ただし、HBaseは独立してデプロイされます。したがって、HBaseが配置されているHDFSは認証されず、HBase自体は有効になりません。この時点で、この時点で直接ゾーンアクセスに問題がある場合は、対応する構成アイテムを構成する必要があります。

core-site.xmlで構成:

ipc.client.fallback-to-simple-auth-allowed true

hbase-site.xmlで構成:

hbase.ipc.client.fallback-to-simple-auth-allowed true

質問2 サーバーのKerberosプリンシパル名を指定できませんでした

Hadoopクライアントを構成した後、hadoop fs -ls /コマンドを使用してhdfs上のファイルを表示できます。ただし、kylinを使用してビルドタスクを送信する場合、mrタスクを送信する必要がある場合は、次のエラーが発生します。

このエラーは主に、クライアントが対応するプリンシパルを構成していないことが原因で発生します。core-site.xmlには次のパラメーター項目があります。

local.realm xxx

次のパラメーターをhdfs-site.xmlに追加します。

dfs.namenode.kerberos.principal hdfs/root@xxxxx${local.realm}

質問3Build Dimension Dictionaryプロンプトアクセス許可が拒否されました:user = xxx、access = xxx

具体的なエラーは上図のとおりですが、実際に確認したところ、対応するHDFSパスに権限があることがわかりました。なぜここに権限がないのですか?トラブルシューティング後、HDFSパスはHBaseクラスターが存在するパスを参照します。現在のユーザーには、Kylinクラスターが配置されているHDFSクラスターの代わりに、WRITEを実行する権限がありません。したがって、HBaseが配置されているHDFSに、kylin.env.hdfs-working-dir構成と同じパスを作成し、それを現在のユーザーに付与する必要があります。

質問4NoSuchMethodError:org.apache.hadoop.mapred.JVMId

ビルドプロセスで、上記のエラーが見つかりました。調査の結果、HBaseは1.2.6のバージョンであり、HBASE_HOME / lib /の下にhadoop-*-2.5.1.jarの依存関係があり、mrタスクの実行時にロード中に競合が発生することがわかりました。 HBASE_HOME / lib /の下にあるhadoop関連のjarを削除すると、問題は解決します。

質問5 MRタスクプロンプトOutOfMemoryError:Javaヒープ

ジョブタスクの実行中に、一部のマップタスクの実行に失敗し、oomに問題が発生します。この時点で、以下に示すように、マップタスクの関連する構成を$ KYLIN_HOME / conf /kylin_job_conf.xmlに追加する必要があります。

mapreduce.map.java.opts -Xmx3500M map max memory mapreduce.map.memory.mb 4096 Block replication

ビルドでinmemアルゴリズムを使用する場合は、$ KYLIN_HOME / conf /kylin_job_conf_inmem.xmlファイルを変更します。

質問6Sparkビルドを使用する場合、プロンプトサーバーはSIMPLE認証にフォールバックするように要求します

この問題の理由は同じですが、すでに構成済みです。なぜまだ報告されているのですか?主にsparkタスクがサーバー側で構築されているため、ローカル構成はアップロードされません。そのため、kylin.env.hadoop-conf-dirに新しいcore-default.xmlファイルを作成します。内容は次のとおりです。

ipc.client.fallback-to-simple-auth-allowed true

次に、kylin.propertiesに次の構成アイテムを追加します。

kylin.engine.spark-conf.spark.yarn.dist.files=/xxx/hive-site.xml,/xxx/core-default.xml

Sparkタスクの実行中にハイブの構成情報も必要になるため、構成アイテムにhive-site.xmlも追加しました。
問題7KylinプロセスのFULLGCがハングする

KylinプロセスのデフォルトのJVMパラメータは比較的小さいです。手動で増やす必要があります。 KYLIN_HOME / conf / setenv.shには、変更可能なKYLIN_JVM_SETTINGSがあります。

質問8RetriesExhaustedException:試行後の失敗= 1

ビルドプロセスの実行中に、HBaseの何らかの理由により、このような試行の失敗が発生し、ジョブでエラーの問題が発生しますが、ログにはanswers = 1のみが記録され、再試行は行われません。 hbase.client.retries.numberのデフォルト値は35回であり、ここでは1回と矛盾しています。

コードを確認した後、kylinにはhbaseクライアントの再試行パラメーターkylin.metadata.hbase-client-retries-numberもあります。デフォルト値は1で、再試行した後に停止します。 30に変更すると、問題は解決します。解決する。

もちろん、実際に発生する問題はこれらに限定されず、その他の一般的な間違いはここにリストされていません。他のピットを踏んだ場合は、ここで追加と更新を続け、すべての人を助けることを望んでいます。