ここ からインストール手順に従い、ロール割り当ての検査ステージに到達すると、管理対象ホストが1つだけ表示されます。 localhost.localdomain
。
その後、他のホストを追加しようとすると、同じ結果になります。
何が足りないのですか?
更新:自分の質問に答えるのは好きではないので、ここに答えを書いています。
解決策は非常に明白なので、私はそれをクラウドで見ることができず、いくつかのチェックを行っているときに問題が発生するまで、かなり長い間問題を未解決のままにしました。
インストール時に提供されたhostname
はIP/etc/hosts
の127.0.0.1
に設定され、localhost.localdomain
witchはClouderaのセットアップを誤解させ、基本的にすべてのホストが同じIPを持つようにしましたおよびホスト名。
hostname.domain.local
でセットアップをやり直しましたが、hosts
ファイルには特定のIPとホスト名の別の行があり、/etc/resolv.conf
ファイルにはsearch domain.local
の行があります。
この不快な経験の後でさえ、 インストールドキュメント はこれらの小さな詳細を特徴とするべきだと思いますが、それは明白なことを述べるようなものです。
Cloudera(おそらく最近)がこれについての宣伝文句を彼らの ドキュメント に追加したようです。私はしばらくの間この問題を抱えていました、そして私にとっての鍵は正しい結果を与えるために次のコマンドを取得することでした:
$ Host -v -t A `hostname`
私の解決策はローカルDNSサーバーのセットアップに関係していましたが、おそらくすべてのノードに同じ/ etc/hostsを設定するだけで十分でした。 YMMV。
さて、私は仮想マシンにクラスターを実装したので、私が行ったすべてを共有したいと思いました。私のクラスターでは、1つのマネージャーノード(cloudera managerのみ)、1つの名前ノード、2つのデータノードを作成しました。これにより、新しいノードをクラスターに簡単かつ問題なく追加できるようになりました。説明書も用意しました。少し夏らしいですが、問題なく動作しています。ほとんどのコードはさまざまなサイトから取得されているため、理解できる限りシンプルに保つようにしました。私の実装にはクラスターへの新しいホストの追加も含まれているため、この回答をここに追加しました。
注:私はLinux環境に非常に慣れていないので、最善を尽くして取り組みました。使用法や説明に関するコメントを訂正できる人を期待しています。
================================================== ================================
これらの手順は、cenTOS 6.2 x64(非ライブデスクトップバージョン)に実装されています。サーバーバージョンを使用する場合は、ネットワーク構成を自分で構成する必要がある場合があります。
可能な限りすべてのマシンで同じバージョンを使用してください。マシンのIP値が重要であると言う人もいますが、1台のマシンが192.168.12.13を使用し、もう1台が192.168.13.144であるなど、さまざまなIP範囲で実装しました。問題は発生していません。
また、Windows7エンタープライズの仮想マシン環境にOracleVirtualBoxを使用しました。
提案:1つの一般的なcenTOSインストールを作成するときに、間違った構成が発生した場合はクローンを作成する必要があります。常にバックアップクローンを保持します。
最初にこれらのファイルを手動でダウンロードします。
cloudera manager(コミュニティエディションをダウンロードできます)。これはマスターノードに必要ですが、マスターノードがクラスターの一部であるという意味ではありません。私
namenodeまたはjobtrackerがなく、mamangerアプリケーションのみが存在するマシンでマネージャーを使用しました。
Oracle JDK。 OracleのWebサイトから適切なものをダウンロードできます。そこに行ってブラウザからダウンロードするか、リンクをコピーしてwgetを使用してダウンロードしてください。それはあなたの選択です。
必ず「openjdk」をアンインストールしてください:
yum remove Java-1.6.0-openjdk
「Oraclejdk」を手動でインストールします。wget行は変更できることに注意してください。ブラウザからファイルをダウンロードできます。
wget http://download.Oracle.com/otn-pub/Java/jdk/6u27-b07/jdk-6u27-linux-x64-rpm.bin
chmod u+x jdk-6u27-linux-x64-rpm.bin
./jdk-6u27-linux-x64-rpm.bin
システムとブラウザに新しいJavaを使用させる
/usr/sbin/alternatives --install /usr/bin/Java java /usr/Java/default/bin/Java 20000
/usr/sbin/alternatives --install /usr/lib/mozilla/plugins/libjavaplugin.so libjavaplugin.so /usr/Java/default/jre/lib/i386/libnpjp2.so 20000
Sudoersとしてユーザーを追加する
nano /etc/sudoers
「rootALL =(ALL)ALL」という行を見つけて、この行を下に追加します
username ALL=(ALL) ALL
//この行は、ユーザーrootがすべての端末から// ALL(任意の)ユーザーとして機能し、ALL(任意の)コマンドを実行できることを意味します。
「sshサーバー」をインストールします
Sudo yum install openssh-server
sshサーバーのステータスをチェックして、実行されていることを確認します
/sbin/service sshd status
開始されていない場合はsshdサービスを開始します
/sbin/service sshd start
または、単にsshをテストすることもできます
ssh localhost
テストが成功した後、終了できます
exit
これらの手順は、clouderaWebサイトでも定義されています。/var/log/cloudera-scm-agent/cloudera-scm-agent-logまたは.outファイルをチェックして、永続性または休止状態に関連するものがあることを確認できる場合
問題がpostgresqlデータベースに関するものであることを意味する例外/エラー。おそらくデータベースはまだ設定されていません。私たちがする必要があるのはそれを設定することです。
ない:postgresqlはmanager(master)ノードにのみ必要です。奴隷の必要はありません。
サービスステータスを確認して、postgresqlインスタンスがインストールされていることを確認してください
/etc/init.d/postgresql status
Not:以下の命令にはリポジトリ構成が必要です!!!方法がわからない場合は、スクリプトファイルの使用法にスキップしてください。
埋め込まれたPostgreSQLデータベースパッケージをClouderaManagerサーバーホストにインストールします。
Sudo yum install cloudera-manager-server-db
このコマンドを実行して、ClouderaManagerサーバーで使用するための組み込みPostgreSQLデータベースを準備します
Sudo /sbin/service cloudera-scm-server-db initdb
次のコマンドを実行して、組み込みPostgreSQLデータベースを起動します。
Sudo /sbin/service cloudera-scm-server-db start
スクリプトファイルの使用法:以下の手順は、スクリプトファイルを使用したpostgresqlの手動設定です。
/usr/share/cmf/schema/scm_prepare_database.sh database-type [options] database-name username password
必要なパラメータと説明
database-typeMySQLデータベースに接続するには、データベースタイプとしてmysqlを指定するか、postgresqlを指定して外部PostgreSQLデータベースに接続します。
database-name作成するCloudera ManagerServerデータベースの名前。
username作成するCloudera ManagerServerデータベースのユーザー名。
password作成するCloudera ManagerServerデータベースのパスワード。コマンドラインでパスワードを指定しない場合、スクリプトはパスワードの入力を求めます。
開始されていない場合はpostgresqlを開始します(ステータスを確認して、確実に再起動できます)
/etc/init.d/postgresql start
Linuxにroot化/ファイアウォールの制限がある場合、エージェントのハートビートはマスターノード(マネージャー)に到達しないため、セキュリティを排除する必要があります
懸念。この場合、問題を引き起こす可能性のあるSelinuxとiptablesがあります。 Clouderaはiptablesを完全に無効にすると言いますが、経験がある場合
iptablesの設定については、次のようなルールを追加できます。
iptablesを開き、7180のポートアクセスのルールを設定します
nano /etc/sysconfig/iptables
この行を追加します:
-A RH-Firewall-1-INPUT -m state –state NEW -m tcp -p tcp –dport 7180 -j ACCEPT
または単に(clouderaの方法で)iptablesを完全に無効にします。すべてのノードで同じであることを確認してください
Sudo /etc/init.d/iptables stop
ステータスパラメータでiptablesのステータスを確認する
/etc/init.d/iptables status
Not:マシンが再起動するたびに、iptablesが再度アクティブ化されるため、自動的に停止する方法が必要になる場合があります。 iptablesが原因で問題が発生し、selinuxunがログファイル「cloudera-scm-agent.log」に記録されます。に関するいくつかの「非推奨」の警告が表示される場合があります
phytonコード、無視してください。エラー/例外は通常、「ホストへのルートがない」などです。
selinuxを無効にします。ただし、上記の多くの操作の前にこれを行う必要がある場合があります。特にclouderamanagerをインストールしようとするとき。 linuxはselinuxに関する警告を表示します。
Sudo nano /etc/selinux/config
(selinux=disabled)
マシンごとに一意のホスト名を設定します。したがって、各マシンでこのファイルを編集し、そのマシンに名前を付けます。この名前をhostsファイルで使用します。
Sudo nano /etc/sysconfig/network
ノードのすべてのIP値とホスト名でホストファイルを再変更します。すべてのノードでこれを行います。他のノードにコピーすることもできます。すべてのhostsファイルは同じになります
Sudo nano /etc/hosts
例:127.0.0.1 localhost 192.168.1.2 masternode 192.168.1.3 namenode 192.168.1.4 datanode1 192.168.1.5 datanode2
cloudera managerのステータスを確認し、必要に応じて再起動できます
Sudo /sbin/service cloudera-scm-server start
インターネット接続がすべてのノードに対して十分に良好であることを確認してください。なぜなら、マネージャーはそれらを接続し、それぞれで一連のダウンロード操作を開始するからです。マネージャーが問題に遭遇した場合、すべてをロールバックするため、すべてを再起動するのにコストがかかります。この部分は時間がかかりすぎると私を信じてください!
仮想マシンをノードとして使用している場合(私はそうしました)、ブリッジネットワークモードを選択できます。したがって、すべてのノードにインターネット接続を提供できますが、これには1つの欠点があります。物理マシンを再起動すると、IP値が失われ、新しい値が自動的に再取得される可能性があります。これにより、各ノードのhostsファイルを再変更することができます。ただし、NATまたは内部ネットワークのようなものを使用する場合は、ノードに静的IP値を指定できるため、再構成の必要はありません。ただし、すべてのマシンにインターネットアクセスゲートウェイIPを提供する必要があります。なぜなら、マネージャーだけでなく、エージェントもファイルをダウンロードするためにインターネットアクセスを必要とするからです。もちろん、クラスターのセットアップが完了したら、エージェント(スレーブ)ノードのインターネットアクセスの必要性を排除できます。
仮想マシンを起動するときにifconfigを試して、ネットワークからIP値を取得しているかどうかを確認する必要があります。そうでない場合は、VMアプリケーションの仮想マシン構成を変更する必要があります。ケーブルとワイヤレス接続を備えた物理マシンで作業している場合は、複数のイーサネットアダプターを選択できます。正しいものを選択します。間違ったものはIPアドレスを提供しません。
必ずOracleJDKを使用してください。
Clouderascmのステータスを時々確認してください。
Sudo /sbin/service cloudera-scm-server status
7180を確認すると、他のclouderamanagerの実ポートがリッスンされます。 「nmap」または「netstat--listen」を使用できます
Cloudera managerをマスターノードにインストールできない場合(おそらくselinux、postgresql、またはダウンロードの問題。ちなみに、ダウンロードが切断できないことを確認してください)、クリーンアップして再起動する必要があります。
この行は、clouderaで認識されたファイルをクリーンアップし、再起動できるようにします。
Sudo rm -Rf /usr/share/{cmf,hue} /var/lib/cloudera* /var/cache/yum/cloudera*
何かを変更してプロセスが正しく機能していることを確認する場合は、スレーブノードでcloudera-scm-agentを再起動できますが、クリーンなログファイルを保持して、新しい構成が正しく機能しているかどうかを確認します。ログファイルは、何がうまくいかないか、何が正しいかを確認するために重要です。
cd /var/log/cloudera-scm-agent
Sudo rm *
次のステップは、cludera managerWebインターフェイスからホストを追加することです。
マネージャーマシンで、「localhost:7180」を使用してmamangerguiに接続しました。ホスト部分では、クラスターに新しいホストを追加します。テストボックスにノードの名前を追加し、[ホストの検索]ボタンを押すだけです。覚えていれば、ホストの名前は/ etc/hostsファイルですでに定義されています。したがって、テキストボックスでipまたはhostnameのいずれかを使用できます。これらが正しく設定されている場合、mamangerは適切なものを見つけて、上記のリストにリストします。それらがまだ管理されていない場合(つまり、まだ何もインストールされていない場合)、「現在管理されている」列には「いいえ」と表示されます。それ以外の場合は「はい」と表示されます。
その後、選択したホストにclouderaエージェントとhadoopファイルをインストールし続けることができます。ただし、すでにインストールしている場合(管理されている場合)は、サービスの追加を開始できます。 「サービス」ページに移動して、プロセスを続行してください。ホストを正しく設定し、それらが管理されていることを確認すれば、サービスの追加は非常に簡単で問題はありません(少なくとも私にとっては)。
私の答えについてコメントを送ってください。ちょっと長いです。多分不必要に。しかし、私はすべての詳細を追加しようとしました。
私も同様の問題を抱えていました。 Cloudera Managerはすべてのコンポーネントをインストールできましたが、ホストが管理対象ホストリストに表示されませんでした。
私の場合、ip/dns名の設定は問題ありませんでした。ルックアップを正常に行うことができました。後で、Clouderaがノードを管理するためにたくさんのポートが必要であることに気づきました。また、さまざまなHadoopサービス用に追加のポートが必要になります。問題がこれに起因するかどうかを確認するために、ファイアウォールを一時的にオフにすることができます。それが問題である場合は、ポートのリストについてClouderaのドキュメントを参照してください。現在、次の場所にあります: https://ccp.cloudera.com/display/ENT4DOC/Configure+Ports+for+Cloudera+Manager
このエラーを解決するために、私は3つのことを行いました。
1)vim/etc/cloudera-scm-agent/config.ini元々は
# Hostname of Cloudera SCM Server
server_Host=localhost
ホスト名を次のように変更しました:
server_Host=manager
また、「manager」が/ etc/hostsファイルに追加されていることを確認してください
2)インストール済みJava /usr/local/Java/jdk1.7xxxディレクトリの〜/ .bash_profileに含まれるもの
export Java_HOME=/usr/local/Java/jdk1.7xxx
ソフトリンクは、この目的にも使用できます。
export PATH=$PATH:$Java_HOME:bin
ClouderaはおそらくJavaパスを '/ usr/Java'として使用します。そこで、/ usrディレクトリにシンボリックリンクを作成しました。
3)それでも機能しない場合は、以下を使用してMySQLコネクタをインストールしました。
yum install mysql-connector-Java
サーバーを再起動し、エージェントを再起動します。それは私のために働いた。