我已按照here的安装程序进行操作,当我到达检查角色分配阶段时,我只看到一个托管主机:localhost.localdomain
。
任何后续添加其他主机的尝试都会产生相同的结果:
我错过了什么?
更新:我不想回答我自己的问题所以我在这里写答案。
解决方案是如此明显,以至于我没有看到它并且在相当长的一段时间内没有解决问题,直到它在做一些检查时遇到了我。
安装时提供的hostname
已设置为/etc/hosts
,因为IP 127.0.0.1
和localhost.localdomain
女孩误导了Cloudera设置并且基本上让所有主机都拥有相同的IP和主机名。
我已使用hostname.domain.local
重新设置设置,现在hosts
文件功能单独包含特定IP和主机名,/etc/resolv.conf
文件与search domain.local
一致
即使你在这种不愉快的经历之后,我认为installation documentation应该具有这些小细节,但是,这就像说明显的那样。
答案 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
或者您可以使用
简单地测试sshssh 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数据库的密码。如果您未在命令行上指定密码,脚本将提示您输入密码。
启动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)
如果您尝试了所有建议,并且仍然无法将新主机添加到群集中,
因为Cloudera-manage代理是用Python编写的。如果您之前未能安装,某些僵尸进程将留在您的新主机中,这很难实现。
答案 5 :(得分:-1)
你可以查看/ etc / hostname文件。它应该有主机名后跟fqdn。
HOSTNAME = hostname.fqdn
然后你也可以运行这个命令:
主机名more /etc/hostname
(``not'')