15

我从这里开始执行安装过程,当我到达Inspect Role Assignments阶段时,我只看到一个托管主机:localhost.localdomain.

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

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

我错过了什么?

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

解决方案非常明显,以至于我看不到它,并且在很长一段时间内都没有解决问题,直到在进行一些检查时遇到了问题。

hostname安装时提供的 IP 是为 IP 设置的,/etc/hosts127.0.0.1localhost.localdomainCloudera 设置具有误导性,基本上使所有主机都具有相同的 IP 和主机名。

我已经重新进行了设置,hostname.domain.local现在该hosts文件具有一个单独的行,其中包含特定的 IP 和主机名,并且该/etc/resolv.conf文件具有与search domain.local.

即使你经历了这次不愉快的经历,我认为安装文档应该包含这些小细节,但这就像是在陈述显而易见的事情。

4

6 回答 6

9

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

$ host -v -t A `hostname`

我的解决方案涉及设置本地 DNS 服务器,但也许在每个节点上拥有相同的 /etc/hosts 就足够了。YMMV。

于 2012-03-01T20:57:09.230 回答
8

好吧,我在虚拟机上实现了集群,所以我想分享我所做的一切。在我的集群中,我创建了一个管理器节点(仅用于 cloudera 管理器)、一个名称节点、两个数据节点。这使得将新节点添加到集群更容易且没有问题。我还准备了简单的说明文件。它可能有点夏天,但工作正常。大多数代码都取自不同的网站,所以我尽量让它们尽可能简单。我在这里添加了这个答案,因为我的实现还包括向集群添加新主机。

注意:我对 linux 环境非常陌生,我尽力做事,我期待任何人可以纠正我对使用或解释的评论。

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

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

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

我还在 Windows 7 企业版上使用 Oracle VirtualBox 作为虚拟机环境。

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

首先手动下载这些文件:

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

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

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

一定要卸载“open jdk”:

yum remove java-1.6.0-openjdk

手动安装“oracle jdk” 请注意,可以更改 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可以从所有终端执行,//充当所有(任何)用户,并运行所有(任何)命令。

安装“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 文件并查看是否存在持久性或休眠相关

表示问题与 postgresql 数据库有关的异常/错误。可能尚未设置数据库。我们需要做的就是设置它。

不是:只有管理器(主)节点需要 postgresql。不需要奴隶。

通过检查服务状态确保安装了 postgresql 实例

/etc/init.d/postgresql status

不是:下面的指令需要 repo 配置!!!如果你不知道如何然后跳到脚本文件使用。

在 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 数据库的名称。

username 您要创建的 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 上存在 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

使用 status 参数检查 iptables 状态

/etc/init.d/iptables status

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

phyton 代码,请忽略它们。错误/异常通常是“没有路由到主机”或类似的东西。

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

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

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

sudo nano /etc/sysconfig/network

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

sudo nano /etc/hosts

示例:127.0.0.1 本地主机 192.168.1.2 主节点 192.168.1.3 名称节点 192.168.1.4 数据节点 1 192.168.1.5 数据节点 2

检查 cloudera 管理器状态,如果需要,可以重新启动它

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 manager realted 端口是否被监听。你可以使用“nmap”或“netstat --listen”

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

此行将清除 cloudera realted 文件并允许您再次重新启动。

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 管理器 Web 界面添加主机:

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

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

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

于 2012-04-04T08:31:29.020 回答
1

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

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

于 2012-07-24T22:53:01.350 回答
0

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

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

# Hostname of Cloudera SCM Server
   server_host=localhost

将主机名更改为:

server_host=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

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

于 2015-06-20T03:26:30.027 回答
-1

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

请试试这个:

  1. 按照从卸载 Cloudera Manager 代理和托管软件中卸载 Cloudera Manager 和托管软件的指南执行完整的卸载步骤
  2. 重新启动新主机。

原因:

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

于 2016-05-29T23:36:41.747 回答
-1

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

于 2017-01-12T06:41:33.467 回答