このトピックでは、Kudu についてよく寄せられる質問への回答を提供します。
Kudu クライアントで「NonRecoverableException」というエラーメッセージが表示された場合はどうすればよいですか。
「pthread_create failed: Resource temporarily unavailable (error 11)」というエラーメッセージが表示された場合はどうすればよいですか。
「Rejecting Write request: Soft memory limit exceeded」というエラーメッセージが表示された場合はどうすればよいですか。
Kudu のログファイルはどこで確認できますか。
Kudu のログファイルは /mnt/disk1/log/kudu ディレクトリにあります。
Kudu でサポートされているパーティション分割方法は何ですか。
Kudu は、レンジパーティションとハッシュパーティションをサポートしています。2 つのパーティション分割方法を一緒に使用できます。詳細については、「Apache Kudu スキーマ設計」をご参照ください。
Kudu の Web UI にアクセスするにはどうすればよいですか。
Kudu は Knox と統合されていません。Knox を使用して Kudu の Web UI にアクセスすることはできません。SSH トンネルを作成して Kudu の Web UI にアクセスできます。詳細については、「SSH トンネルを作成してオープンソースコンポーネントの Web UI にアクセスする」をご参照ください。
Kudu クライアントで「NonRecoverableException」というエラーメッセージが表示された場合はどうすればよいですか。
問題の説明
次のエラー情報が表示されます:
org.apache.kudu.client.NonRecoverableException: Could not connect to a leader master. Client configured with 1 master(s) (192.168.0.10:7051) but cluster indicates it expects 3 master(s) (192.168.0.36:7051,192.168.0.11:7051,192.168.0.10:7051)原因
この問題は、3 つのマスターノードが必要ですが、1 つのマスターノードしかデプロイされていないために発生します。
解決策
必要なすべてのマスターノードをデプロイし、Kudu クライアントをプライマリマスターノードに接続します。
Kudu コミュニティの FAQ を表示するにはどうすればよいですか。
詳細については、「Apache Kudu トラブルシューティング」をご参照ください。
「Bad status: Network error: Could not obtain a remote proxy to the peer.: unable to resolve address for <hostname>: Name or service not known」というエラーメッセージが表示された場合はどうすればよいですか。
原因:ホスト名を IP アドレスに解決できません。その結果、Kudu タブレットの raft サーバーは、ピア raft サーバーのタイプを認識できません。raft サーバーが期待どおりにサービスを提供できるかどうかは不明です。そのため、ネットワークは終了します。
解決策:
ホスト名とその解決済み IP アドレス間のマッピングを /etc/hosts ファイルに手動で追加します。
ホスト名が表すホストが解放されている場合は、IP アドレスにアクセスできるかどうかに関係なく、ホスト名とランダムな IP アドレス間のマッピングを /etc/hosts ファイルに追加できます。その後、Kudu タブレットサーバーは、使用できない raft サーバーから、raft サーバーグループに追加された新しい raft サーバーにデータを複製します。このようにして、raft サーバーグループは再び期待どおりにサービスを提供できます。
「Bad status: I/O error: Failed to load Fs layout: could not verify integrity of files: <directory>, <number> data directories provided, but expected <number>」というエラーメッセージが表示された場合はどうすればよいですか。
この問題は、-fs_data_dirs パラメーターで指定されたディスクの数と、-fs_metadata_dir パラメーターによって記録されたメタデータとの間に不整合があることが原因です。この問題を解決するには、-fs_data_dirs パラメーターで指定されたディスクの数を変更し、ディスクの数を -fs_metadata_dir パラメーターによって記録されたメタデータと一致させます。
「pthread_create failed: Resource temporarily unavailable (error 11)」というエラーメッセージが表示された場合はどうすればよいですか。
このエラーは、リソースが使用できず、スレッドの作成に失敗したために発生します。次のケースに基づいて問題を解決します。
リソースが使用できません。
ulimit -aコマンドを実行して、max user processes パラメーターの値を確認します。値が小さい場合は、/etc/security/limits.conf ファイルを変更します。/etc/security/limits.d/kudu.conf ファイルを作成し、ファイル内の max user processes パラメーターの値を変更することもできます。ハイブリッドデプロイ環境で Kudu クライアント V0.8 が使用されています。
KUDU-1453 の問題の説明に基づくと、Kudu クライアント V0.8 を使用すると Spark executor がスレッドをリークする可能性があります。この問題を解決するには、Kudu クライアントのバージョンを V0.9 にアップグレードします。
スレッドがリークされています。
Trino が原因の問題
Trino を終了し、シャットダウンフック スレッドの BlockingQueue の take メソッドが要素を返すのを待機すると、シャットダウンフック スレッドを中断できなくなり、E-MapReduce(EMR)コントロールは継続的に SIGTERM シグナルを送信して新しい SIGTERM ハンドラースレッドを作成します。その結果、スレッドが使い果たされます。
Trino 側で問題を解決するか、
Kill -9コマンドを直接実行できます。Jindo SDK が原因の問題
Spark は、Spark が書き込みジョブを実行するときに JindoOssCommitter クラスを使用します。このクラスは JindoOssMagicCommitter オブジェクトを作成し、JindoOssMagicCommitter オブジェクトに oss-committer-pool という名前のスレッドプールを生成します。スレッドプールは静的ではなく、手動でシャットダウンされません。JindoOssMagicCommitter オブジェクトは継続的に作成され、新しいスレッドプールが継続的に生成されます。以前に作成されたスレッドプールは、さまざまな理由により解放されません。そのため、過剰なスレッドが使用されます。Spark Streaming または Structure Streaming を使用している場合、システムリソースが使い果たされる可能性があります。
次のパラメーターを指定することで問題を解決できます:
spark.sql.hive.outputCommitterClass=org.apache.hadoop.mapreduce.lib.output.FileOutputCommitter spark.sql.sources.outputCommitterClass=org.apache.hadoop.mapreduce.lib.output.FileOutputCommitterツールのトラブルシューティング
次の threads_monitor.sh スクリプトを実行して、システムで最も多くのスレッドを使用しているプロセスを特定できます。次に、問題を解決します。
#!/bin/bash total_threads=0 max_pid=-1 max_threads=-1 for tid in `ls /proc` do if [[ $tid != *self && -f /proc/$tid/status ]]; then num_threads=`cat /proc/$tid/status | grep Threads | awk '{print $NF}'` ((total_threads+=num_threads)) if [[ ${max_pid} -eq -1 || ${max_threads} -lt ${num_threads} ]]; then max_pid=${tid} max_threads=${num_threads} fi # echo "Thread ${pid}: ${num_threads}" fi done echo "Total threads: ${total_threads}" echo "Max threads: ${max_threads}, pid is ${max_pid}" ps -ef | grep ${max_pid} | grep -v grep
Kudu を起動できない場合はどうすればよいですか。
Kudu を使用する場合、Bigboot が提供する Bigboot モニターは、起動、実行、障害発生時の自動再起動などの操作を実行します。Bigboot V3.5.0 には欠陥があります。Kudu がクラッシュした場合、データベース内のサービス情報を削除できません。その結果、Kudu を再起動できません。この場合、Kudu を停止してから再起動する必要があります。
これらの操作はマシン上で実行する必要があります。サービスが終了しているため、コンソールは停止操作を実行できない場合があります。
問題を解決するには、コアノードまたはタスクノードで次のコマンドを実行します。マスターノードで次のコマンドを実行する場合は、コマンド内の kudu-tserver を kudu-master に置き換えます。
/usr/lib/b2monitor-current/bin/monictrl -stop kudu-tserver
/usr/lib/b2monitor-current/bin/monictrl -start kudu-tserver「Service unavailable: RunTabletServer() failed: Cannot initialize clock: timed out waiting for clock synchronisation: Error reading clock. Clock considered unsynchronized」というエラーメッセージが表示された場合はどうすればよいですか。
問題の説明
ログに次のエラーメッセージが記録される場合があります:
E1010 10:37:54.165313 29920 system_ntp.cc:104] /sbin/ntptime ------------------------------------------ stdout: ntp_gettime() returns code 5 (ERROR) time e6ee0402.2a452c4c Mon, Oct 10 2022 10:37:54.165, (.165118697), maximum error 16000000 us, estimated error 16000000 us, TAI offset 0 ntp_adjtime() returns code 5 (ERROR) modes 0x0 (), offset 0.000 us, frequency 187.830 ppm, interval 1 s, maximum error 16000000 us, estimated error 16000000 us, status 0x2041 (PLL,UNSYNC,NANO), time constant 6, precision 0.001 us, tolerance 500 ppm,原因:マシン上の ntpd が構成済みの ntp サーバーに接続できません。
解決策:サーバーを再起動して再試行します。
「Rejecting Write request: Soft memory limit exceeded」というエラーメッセージが表示された場合はどうすればよいですか。
原因:書き込むデータ量がソフトメモリ制限を超えています。
解決策:
次の操作を実行できます:
memory_limit_hard_bytes パラメーターを構成してメモリサイズを増やします。デフォルト値は 0 で、システムによって最大メモリ使用量が自動的に設定されることを示します。値を -1 に変更できます。これは、メモリ使用量に制限がないことを示します。
memory_limit_soft_percentage パラメーターを構成して、使用可能なメモリの割合を調整します。デフォルト値は 80 です。