我从这里开始遵循安装过程,当我到达Inspect Role Assignments阶段时,我只看到一个托管主机: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.
即使您在这种不愉快的经历之后,我认为安装文档应该包含这些小细节,但是,这就像说明显的那样.
小智 9
看起来像Cloudera(可能最近)在他们的文档中添加了一个关于这一点的模糊.我已经有一段时间遇到这个问题了,关键是我得到以下命令来给出正确的结果:
$ host -v -t A `hostname`
Run Code Online (Sandbox Code Playgroud)
我的意思是设置一个本地DNS服务器,但也许在每个节点上只有相同的/ etc/hosts就足够了.因人而异.
好吧我在虚拟机上实现了集群,所以我想分享我所做的一切.在我的集群中,我创建了一个管理器节点(仅用于cloudera管理器),一个namenode,两个datanode.这使得向集群添加新节点更容易且没有问题.我还准备了简单的文件说明.它可能很少总结,但工作正常.大多数代码都来自不同的网站,所以我尽量保持简单,就像我理解的那样.我在这里添加了这个答案,因为我的实现还包括向集群添加新主机.
注意:我对linux环境很新,我尽我所能做的事情,我期待任何能纠正我对使用或解释的评论的人.
================================================== ================================
这些说明在cenTOS 6.2 x64(非实时桌面版)上实现.如果您使用服务器版本,则可能需要自己配置网络配置.
尽可能在所有机器上使用相同的版本.有人说机器的IP值很重要,但我用不同的IP范围实现,例如一台机器使用192.168.12.13,其他机器使用192.168.13.144.它不会造成问题.
我还在Windows 7企业版上使用Oracle VirtualBox进行虚拟机环境.
建议:当您创建一个常见的cenTOS安装时,如果发生任何错误配置,您应该创建一个克隆.始终保留备份克隆.
首先手动下载这些文件:
cloudera经理(您可以下载社区版).我们需要这个主节点,但这并不意味着主节点是集群的一部分.一世
在没有namenode或工作跟踪器的机器上使用经理,只是mamanger应用程序.
Oracle JDK.你可以从oracle网站下载一个正确的.只需去那里从浏览器下载或复制链接并使用wget下载它.这是你的选择.
一定要卸载"打开jdk":
yum remove java-1.6.0-openjdk
Run Code Online (Sandbox Code Playgroud)
安装"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
Run Code Online (Sandbox Code Playgroud)
让我们的系统和浏览器使用我们的新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
Run Code Online (Sandbox Code Playgroud)
将用户添加为sudoers
nano /etc/sudoers
Run Code Online (Sandbox Code Playgroud)
找到"root ALL =(ALL)ALL"这一行并在下面添加这一行
username ALL=(ALL) ALL
Run Code Online (Sandbox Code Playgroud)
//这一行意味着用户root可以从所有终端执行,//充当所有(任何)用户,并运行ALL(任何)命令.
安装"ssh服务器"
sudo yum install openssh-server
Run Code Online (Sandbox Code Playgroud)
检查ssh服务器状态以确保它正在运行
/sbin/service sshd status
Run Code Online (Sandbox Code Playgroud)
如果没有启动sshd服务,请启动它
/sbin/service sshd start
Run Code Online (Sandbox Code Playgroud)
或者您可以简单地测试ssh
ssh localhost
Run Code Online (Sandbox Code Playgroud)
成功测试后,您可以退出
exit
Run Code Online (Sandbox Code Playgroud)
这些说明也在cloudera网站中定义.如果你可以检查/ var/log/cloudera-scm-agent/cloudera-scm-agent-log或.out文件,看看是否存在持久性或hibernate相关
异常/错误,这意味着问题是关于postgresql数据库.可能数据库尚未设置.我们需要做的就是设置它.
不是:只有经理(主)节点需要postgresql.不需要奴隶.
通过检查服务状态确保安装了postgresql实例
/etc/init.d/postgresql status
Run Code Online (Sandbox Code Playgroud)
不是:下面的说明需要回购配置!如果您不知道如何跳过脚本文件使用.
在Cloudera Manager Server主机上安装嵌入式PostgreSQL数据库包:
sudo yum install cloudera-manager-server-db
Run Code Online (Sandbox Code Playgroud)
通过运行此命令,准备嵌入式PostgreSQL数据库以与Cloudera Manager Server一起使用
sudo /sbin/service cloudera-scm-server-db initdb
Run Code Online (Sandbox Code Playgroud)
运行以下命令启动嵌入式PostgreSQL数据库:
sudo /sbin/service cloudera-scm-server-db start
Run Code Online (Sandbox Code Playgroud)
脚本文件用法:下面的说明是使用脚本文件手动设置postgresql
/usr/share/cmf/schema/scm_prepare_database.sh database-type [options] database-name username password
Run Code Online (Sandbox Code Playgroud)
必需参数和说明
database-type 要连接到MySQL数据库,请将mysql指定为数据库类型,或指定postgresql以连接到外部PostgreSQL数据库.
database-name 要创建的Cloudera Manager Server数据库的名称.
username 要创建的Cloudera Manager Server数据库的用户名.
password 要创建的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
Run Code Online (Sandbox Code Playgroud)
如果linux上存在rooting/firewall限制,那么代理的heartbeath将无法到达主节点(manager),因此我们需要消除安全性
关注.在这种情况下,有Selinux和iptables可以产生问题.Cloudera说完全禁用iptables但是如果你有经验的话
关于iptables配置然后你可以添加这样的规则.
打开iptables并设置7180端口访问规则
nano /etc/sysconfig/iptables
Run Code Online (Sandbox Code Playgroud)
添加此行:
-A RH-Firewall-1-INPUT -m state –state NEW -m tcp -p tcp –dport 7180 -j ACCEPT
Run Code Online (Sandbox Code Playgroud)
或简单地(cloudera方式)禁用iptables totaly.确保它在所有节点上都是相同的
sudo /etc/init.d/iptables stop
Run Code Online (Sandbox Code Playgroud)
使用status参数检查iptables状态
/etc/init.d/iptables status
Run Code Online (Sandbox Code Playgroud)
不是:每次机器重新启动时,iptables将再次激活,因此您可能需要一种方法来自动停止它.由于iptables和selinuxun将在日志文件"cloudera-scm-agent.log"中发生Ay问题.您可能会看到一些"已弃用"的警告
phyton代码,只是忽略它们.错误/异常通常是"没有主机路由"或类似的东西.
禁用selinux.但在上面的许多操作之前你可能需要这样做.特别是当您尝试安装cloudera manager时.linux会给你关于selinux的警告.
sudo nano /etc/selinux/config
(selinux=disabled)
Run Code Online (Sandbox Code Playgroud)
为每台计算机设置唯一的主机名.所以在每个mahine编辑这个文件并给该机器命名.我们将在hosts文件中使用此名称.
sudo nano /etc/sysconfig/network
Run Code Online (Sandbox Code Playgroud)
使用节点的所有ip值和主机名重新修改主机文件.在所有节点中执行此操作.您也可以简单地复制到其他节点.所有主机文件都是相同的
sudo nano /etc/hosts
Run Code Online (Sandbox Code Playgroud)
示例: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
Run Code Online (Sandbox Code Playgroud)
确保您的互联网连接足以满足所有节点的要求.因为经理将连接它们并开始对它们进行一系列的下载操作.如果经理遇到任何问题,它将回滚所有内容,这将花费你重新启动每一件事.相信我这部分花了太多时间!
如果您使用虚拟机作为节点(我这样做),您可以选择桥接网络模式.所以你可以为所有节点提供互联网连接,但这有一个缺点.如果重新启动物理机,则可能会丢失ip值并自动重新获取新值.哪个可以让你在每个节点上重新修改主机文件.但是,如果您使用NAT或其他内部网络,您可以为节点提供静态IP值,因此不需要重新配置.但是你应该为所有机器提供互联网接入网关ip.因为不仅仅是经理,代理商还需要上网才能下载文件.当你完成集群设置后,你可以省去代理(从属)节点的互联网访问.
您应该在启动虚拟机时尝试ifconfig以查看它是否从网络获取ip值.如果不是,则必须更改VM应用程序上的虚拟机配置.如果您正在使用具有有线和无线连接的物理机,那么您将拥有多个以太网适配器选择.一定要选择正确的.错误的一个不会给你IP地址.
一定要使用oracle JDK.
检查cloudera scm状态的时间.
sudo /sbin/service cloudera-scm-server status
Run Code Online (Sandbox Code Playgroud)
检查7180和其他cloudera管理器实际端口是否被监听.你可以使用"nmap"或"netstat --listen"
如果您无法将cloudera manager安装到主节点(可能是selinux,postgresql或下载问题.顺便说一下,下载是不可删除的),那么您可能需要清理并重新启动.
此行将清除cloudera已实现的文件,并允许您再次重新启动.
sudo rm -Rf /usr/share/{cmf,hue} /var/lib/cloudera* /var/cache/yum/cloudera*
Run Code Online (Sandbox Code Playgroud)
你可以在奴隶节点上重新启动cloudera-scm-agent,如果你改变任何东西并且besure进程正常工作.但是你要清理干净的日志文件以查看新配置是否正常工作.日志文件对于查看出错或正确的内容非常重要.
cd /var/log/cloudera-scm-agent
sudo rm *
Run Code Online (Sandbox Code Playgroud)
接下来的步骤是从cludera manager web界面添加主机:
在经理机器上我使用"localhost:7180"连接到mamanger gui.在主机部分,您将添加新主机到群集.只需在testbox中添加节点的名称,然后按"查找主机"按钮.如果您记得,主机的名称已在/ etc/hosts文件中定义.所以你可以在文本框中使用ip或hostname,如果它们设置正确,那么mamanger将找到合适的一个并在上面的列表中列出它们.如果它们尚未管理(意味着尚未安装),"当前管理"列将显示"否".否则会显示"是".
之后,您可以继续在选择的主机上安装cloudera代理和hadoop文件.但如果您已经安装了它们(如果它们是托管的),那么您可以开始在它们上添加服务.只需转到"服务"页面并继续您的流程.如果您正确设置主机并看到它们是受管理的,那么添加服务非常容易且没有问题.(至少对我而言).
请发送关于我的答案的任何评论.这很长.也许是非必要的.但我试图添加每一个细节.
| 归档时间: |
|
| 查看次数: |
23200 次 |
| 最近记录: |