2016-07-22 129 views
2

我有12个节点集群。其硬件信息如下:Hadoop客户端节点安装

NameNode: CPU Core i3 2.7 Ghz | 8GB RAM | 500 GB HDD

DataNode: CPU Core i3 2.7 Ghz | 2GB RAM | 500 GB硬盘

我已经安装了hadoop 2.7.2。我在Ubuntu上使用正常的hadoop安装过程,它工作正常。但是我想添加客户端机器。我不知道如何添加客户端机器。

问:

  1. 安装客户端机器的过程。 ?
  2. 如何在该客户机上运行猪/配置单元的任何脚本?
+0

请将您的帖子限制为一个问题。你所要求的信息是相当广泛的 –

回答

2

客户端应该有相同的Hadoop分发和配置副本,它出现在Namenode上,然后只有Client会知道Job Tracker/Resourcemanager正在运行哪个节点,以及Namenode的IP访问HDFS数据。

此外,您需要更新客户端机器的/ets/hosts IP地址和主机名namenode和datanode。 请注意,您不应该在客户端计算机上启动任何hadoop服务。

要遵循的步骤客户机上:

  • 创建群集上的用户账号,说user1
  • 创建客户端机器上的帐户具有相同名称:user1
  • 配置客户机访问群集机器(ssh w \ out口令即密码少登录)
  • 复制/获得与群集相同的hadoop分配给客户机并将其提取到/home/user1/hadoop-2.x.x
  • 从群集的Namenode复制(或编辑)hadoop配置文件(* -site.xml) - 从此客户端将知道Namenode/resourcemanager正在运行的位置。
  • 设置环境变量:JAVA_HOMEHADOOP_HOME/home/user1/hadoop-2.x.x
  • 设置Hadoop的bin添加到您的路径:export PATH=$HADOOP_HOME/bin:$PATH

测试出来:hadoop fs -ls /应该列出集群HDFS的根目录。

您可能会遇到一些特权问题,可能需要在客户机上设置JAVA_HOME位置,如conf/hadoop-env.sh。更新/评论你得到的任何错误。

答案从评论更多的问题:

  1. 如何从客户端节点的数据加载到HDFS? - 只需运行来自客户端机器的hadoop fs命令:hadoop fs -put /home/user1/data/* /user/user1/data - 如果需要多次运行这些命令,还可以编写运行这些命令的shell脚本。
  2. 为什么我在客户端安装hadoop,如果我们只使用ssh远程连接到主节点?

    • ,因为客户需要与集群的通信,并且需要知道 哪里群集节点。
    • 客户将运行Hadoop作业 Hadoop等FS命令,蜂巢查询,Hadoop的罐子commnads,火花 工作,开发MapReduce作业等,为哪个客户需要客户端节点上的Hadoop 二进制文件。
    • 基本上,您不仅使用ssh至 连接,但您正在对来自 客户端节点的hadoop群集执行一些操作,因此您需要hadoop二进制文件。
    • ssh被客户端节点上的 hadoop二进制文件使用,当您从客户端节点到群集运行诸如hadoop fs -ls/之类的操作时。 (记得加入$HADOOP_HOME/binPATH如上安装过程的一部分)
    • 当你说:“我们只用ssh” - 这听起来对我来说,当你想从集群更改/访问Hadoop配置文件使用的是ssh连接喜欢到集群节点 - 您将其作为管理工作的一部分,但是当您需要根据客户端节点的集群运行hadoop命令/作业时,您不需要手动执行ssh-客户端节点上的hadoop安装将会处理它。
    • 没有hadoop instalations如何运行hadoop命令/作业/查询从客户端节点到群集?

    3.应用户名 'user1的' 必须是一样的吗?如果它不同? - 它会工作。您可以在群组用户say:qadev下的客户机节点上安装hadoop,并将客户机节点上的所有用户都安装在该群组下的sudo下。比客户端节点上的user1需要运行群集上的任何hadoop作业:user1应该能够sudo -i -u qa,然后从中运行hadoop命令。

+0

确定它工作正常。但是1.如何将数据从客户端节点加载到hdfs? –

+0

2.为什么我要在客户端上安装hadoop,如果我们只使用ssh远程连接到主节点? –

+0

3.用户名'user1'必须相同吗?如果它不同? –