好吧,我在虚拟机上实现了集群,所以我想分享我所做的一切。在我的集群中,我创建了一个管理器节点(仅用于 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 文件。但是,如果您已经安装了它们(如果它们是托管的),那么您可以开始在它们上添加服务。只需转到“服务”页面并继续您的流程。如果您正确设置主机并看到它们受到管理,那么添加服务非常容易且没有问题。(至少对我而言)。
请发送有关我的回答的任何评论。它很长。也许不必要。但我试图添加每一个细节。