Cloudera Manager无法添加主机

时间:2011-12-20 17:02:33

标签: cloud cloudera

我已按照here的安装程序进行操作,当我到达检查角色分配阶段时,我只看到一个托管主机:localhost.localdomain

任何后续添加其他主机的尝试都会产生相同的结果:

  • 每个群集主机安装成功
  • 且主机未显示为托管

我错过了什么?

更新:我不想回答我自己的问题所以我在这里写答案。

解决方案是如此明显,以至于我没有看到它并且在相当长的一段时间内没有解决问题,直到它在做一些检查时遇到了我。

安装时提供的hostname已设置为/etc/hosts,因为IP 127.0.0.1localhost.localdomain女孩误导了Cloudera设置并且基本上让所有主机都拥有相同的IP和主机名。

我已使用hostname.domain.local重新设置设置,现在hosts文件功能单独包含特定IP和主机名,/etc/resolv.conf文件与search domain.local一致

即使你在这种不愉快的经历之后,我认为installation documentation应该具有这些小细节,但是,这就像说明显的那样。

6 个答案:

答案 0 :(得分:9)

看起来Cloudera(可能最近)在他们的documentation中添加了一个关于此的模糊。我已经有这个问题已经有一段时间了,关键是我得到以下命令来给出正确的结果:

$ host -v -t A `hostname`

我的意思是设置一个本地DNS服务器,但也许只是在每个节点上拥有相同的/ etc / hosts就足够了。 YMMV。

答案 1 :(得分:6)

Allright我在虚拟机上实现了集群,所以我想分享我所做的一切。在我的集群中,我创建了一个管理器节点(仅用于cloudera管理器),一个namenode,两个datanode。这使得向集群添加新节点更容易且没有问题。我还准备了简单的文件说明。它可能很少总结,但工作正常。大多数代码都来自不同的网站,所以我尽量保持简单,就像我理解的那样。我在这里添加了这个答案,因为我的实现还包括向集群添加新主机。

注意:我对linux环境很陌生,我尽力做好事情,我期待任何能纠正我对使用或解释的评论的人。

=============================================== ===================================

这些说明在cenTOS 6.2 x64(非现场桌面版)上实施。如果您使用服务器版本,则可能需要自己配置网络配置。

尽可能在所有机器上使用相同版本。有人说机器的IP值很重要,但我用不同的IP范围实现,例如一台机器使用192.168.12.13,其他机器使用192.168.13.144。这不会造成问题。

我还在Windows 7企业版上将Oracle VirtualBox用于虚拟机环境。

建议:当您创建一个常见的cenTOS安装时,如果发生任何错误配置,您应该创建一个克隆。始终保留备份克隆。

首先手动下载这些文件:

cloudera经理(您可以下载社区版)。我们需要这个主节点,但这并不意味着主节点是集群的一部分。我

在没有名字节点或工作跟踪器的机器上使用管理器,只是mamanger应用程序。

Oracle JDK 。你可以从oracle网站下载一个正确的。只需去那里从浏览器下载或复制链接并使用wget下载它。这是你的选择。

请务必卸载"打开jdk" :

yum remove java-1.6.0-openjdk

安装" oracle jdk" manualy 请注意,可以更改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

找到行" root ALL =(ALL)ALL"并在下面添加此行

username  ALL=(ALL)   ALL

//这一行意味着用户root可以从所有终端执行, //充当所有(任何)用户,并运行ALL(任何)命令。

安装" ssh服务器"

sudo yum install openssh-server

检查ssh服务器状态以确保它正在运行

/sbin/service sshd status

启动sshd服务(如果没有启动)

/sbin/service sshd start

或者您可以使用

简单地测试ssh
ssh localhost

成功完成测试后,您可以退出

exit

这些说明也在cloudera网站中定义。 如果你可以查看/ var / log / cloudera-scm-agent / cloudera-scm-agent-log或.out文件,看看是否存在持久性或hibernate相关

异常/错误,这意味着问题是关于postgresql数据库。可能数据库尚未设置。我们需要做的就是设置它。

不:仅管理员(主)节点需要postgresql。不需要奴隶。

通过检查服务状态

确保安装了postgresql实例
/etc/init.d/postgresql status

:以下说明需要配置!!!如果您不知道如何跳过脚本文件使用。

在Cloudera Manager Server主机上安装嵌入式PostgreSQL数据库包:

sudo yum install cloudera-manager-server-db

通过运行此命令

准备嵌入式PostgreSQL数据库以与Cloudera Manager Server一起使用
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-type 要连接到MySQL数据库,请指定mysql作为数据库类型,或指定postgresql连接到外部PostgreSQL数据库。

database-name 您要创建的Cloudera Manager Server数据库的名称。

用户名您要创建的Cloudera Manager Server数据库的用户名。

密码您要创建的Cloudera Manager Server数据库的密码。如果您未在命令行上指定密码,脚本将提示您输入密码。

您可以查看此页面了解详情https://ccp.cloudera.com/display/ENT/Installation+Path+B+-+Installation+Using+Your+Own+Method#InstallationPathB-InstallationUsingYourOwnMethod-Step5%3AConfigureaDatabasefortheClouderaManagerServer

启动postgresql如果它没有启动(你可以检查状态并确保重新启动它)

/etc/init.d/postgresql start

如果linux上存在rooting / firewall限制,那么代理的heartbeath将无法到达主节点(manager),因此我们需要消除安全性

的担忧。在这种情况下,有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 totaly。确保它在所有节点上都相同

sudo /etc/init.d/iptables stop

使用状态参数

检查iptables状态
/etc/init.d/iptables status

不是:每次机器重新启动时,iptables将再次激活,因此您可能需要一种方法来自动停止它。 由于iptables和selinuxun将在日志文件" cloudera-scm-agent.log"中发生Ay问题。您可能会看到一些"已弃用"关于

的警告 phyton代码,只是忽略它们。错误/异常通常是#34;没有到主机的路由"或类似的东西。

禁用selinux。但在上面的许多操作之前你可能需要这样做。特别是当您尝试安装cloudera manager时。 linux会给你关于selinux的警告。

sudo nano /etc/selinux/config
    (selinux=disabled)

为每台计算机设置唯一的主机名。所以在每个mahine编辑这个文件并给该机器命名。我们将在hosts文件中使用此名称。

sudo nano /etc/sysconfig/network

使用节点的所有ip值和主机名重新修改主机文件。在所有节点中执行此操作。您也可以简单地复制到其他节点。所有主机文件都是相同的

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

确保您的互联网连接足以满足所有节点的需求。因为经理将连接它们并开始对它们进行一系列的下载操作。如果经理遇到任何问题,它将回滚所有内容,这将花费你重新启动每一件事。相信我这部分花了太多时间!

如果您使用虚拟机作为节点(我这样做),您可以选择桥接网络模式。所以你可以为所有节点提供互联网连接,但这有一个缺点。如果重新启动物理机,则可能会丢失ip值并自动重新获取新值。哪个可以让你在每个节点上重新修改主机文件。但是,如果您使用NAT或其他内部网络,您可以为节点提供静态IP值,因此不需要重新配置。但是你应该为所有机器提供互联网接入网关ip。因为不仅仅是经理,代理商还需要上网才能下载文件。当你完成集群设置后,就可以省去代理(从属)节点的互联网访问。

启动虚拟机时,应该尝试使用ifconfig查看是否从网络获取ip值。如果不是,则必须更改VM应用程序上的虚拟机配置。如果您正在使用具有有线和无线连接的物理机,那么您将拥有多个以太网适配器选择。一定要选择正确的。错误的人不会给你ip地址。

请务必使用oracle JDK。

检查cloudera scm状态的时间。

sudo /sbin/service cloudera-scm-server status

检查7180并监听其他cloudera管理器实际端口。你可以使用" nmap"或" netstat --listen"

如果您无法将cloudera manager安装到主节点(可能是selinux,postgresql或下载问题。顺便说一下,下载是不可删除的),那么您可能需要清理并重新启动。

此行将清除cloudera实际文件,并允许您重新启动。

sudo rm -Rf /usr/share/{cmf,hue} /var/lib/cloudera* /var/cache/yum/cloudera*

如果您更改了任何内容并且besure进程正常工作,您可以在从属节点上重新启动cloudera-scm-agent。但是您要清理干净的日志文件以查看新配置是否正常工作。日志文件对于查看出错或正确的内容非常重要。

cd /var/log/cloudera-scm-agent
sudo rm *   

接下来的步骤是从cludera manager web界面添加主机:

在经理机器上,我使用了" localhost:7180"连接到mamanger gui。在主机部分,您将添加新主机到群集。只需在testbox中添加节点的名称,然后按"查找主机"按钮。如果您记得,主机的名称已在/ etc / hosts文件中定义。所以你可以在文本框中使用ip或hostname,如果它们设置正确,那么mamanger将找到合适的一个并在上面的列表中列出它们。如果他们还没有被管理(意味着他们还没有安装),"目前管理"列将显示" no"。否则它会显示"是"。

之后,您可以继续在选择的主机上安装cloudera agent和hadoop文件。但如果您已经安装了它们(如果它们是托管的),那么您可以开始在它们上添加服务。只需转到"服务"页面并继续您的过程。如果您正确设置主机并看到它们是受管理的,那么添加服务非常容易且没有问题。(至少对我而言)。

请发送有关我的回答的任何评论。这很长。也许是非必要的。但我试图添加每一个细节。

答案 2 :(得分:1)

我也有类似的问题。 Cloudera Manager能够安装所有组件,但主机未显示在托管主机列表中。

在我的情况下,ip / dns名称配置很好。我能够成功地进行查找。 后来我意识到Cloudera需要一堆端口来管理节点。各种Hadoop服务还需要额外的端口。只是为了查看问题是否是因为这个问题,您可以暂时关闭防火墙。如果这是问题,请参阅Cloudera的文档以获取端口列表。目前它位于: https://ccp.cloudera.com/display/ENT4DOC/Configuring+Ports+for+Cloudera+Manager

答案 3 :(得分:0)

为了解决这个错误,我做了三件事:

1)vim /etc/cloudera-scm-agent/config.ini    原来是

# Hostname of Cloudera SCM Server
   server_host=localhost

将主机名更改为:

server_host=manager

同时确保'经理'添加到/ etc / hosts文件中

2)在/usr/local/java/jdk1.7xxx目录中安装了java    在〜/ .bash_profile中    

包括在内
export JAVA_HOME=/usr/local/java/jdk1.7xxx

Soft Link也可用于此目的:

export PATH=$PATH:$JAVA_HOME:bin

Cloudera可能将java路径视为' / usr / java'。所以我在/ usr目录中创建了一个符号链接。

3)当它仍然无法工作时,我使用以下命令安装了MySQL Connector:

yum install mysql-connector-java

重新启动服务器并重新启动代理。那对我有用。

答案 4 :(得分:-1)

如果您尝试了所有建议,并且仍然无法将新主机添加到群集中,

请试试这个:

  1. 按照指南执行卸载的完整步骤 来自卸载Cloudera Manager Agent和托管软件
  2. Uninstalling Cloudera Manager and Managed Software
  3. 重新启动新主机。
  4. 原因:

    因为Cloudera-manage代理是用Python编写的。如果您之前未能安装,某些僵尸进程将留在您的新主机中,这很难实现。

答案 5 :(得分:-1)

你可以查看/ etc / hostname文件。它应该有主机名后跟fqdn。 HOSTNAME = hostname.fqdn 然后你也可以运行这个命令: 主机名more /etc/hostname(``not'')