Hadoop 客户端和集群分离

Hadoop client and cluster separation

我是hadoop的新手,linux也是。我的教授要求我们使用端口映射或 VPN 将 Hadoop 客户端和集群分开。我不明白这种分离的意义。有人可以给我提示吗?

现在我明白了集群客户端分离的想法了。我认为需要在客户端机器上也安装 hadoop。当客户端提交一个 hadoop 作业,它被提交给集群的主人。

还有一些天真的想法:

1.Create 一台客户端机器并安装 hadoop .

2.set fs.default.name 成为 hdfs://master:9000

3.set dfs.namenode.name.dir 成为 file://master/home/hduser/hadoop_tmp/hdfs/namenode 正确吗?

4.Then不知道dfs.namenode.name.dir等配置怎么设置

5.I 认为主要思想是设置 配置文件 以使 工作 运行 hadoop集群,但我不知道具体怎么做。

用户不应该能够破坏集群的功能。就是这个意思。想象一下,有一大群数据科学家从集群的一个主人那里开始他们的工作。如果有人启动内存密集型操作,同一台机器上 运行 的主进程可能会因没有内存而崩溃。这将使整个集群处于失败状态。

如果将客户端节点与 master/slave 个节点分开,用户仍可能使客户端崩溃,但集群会保持运行。

首先..这个link有关于客户端如何与namenode通信的详细信息

http://www.informit.com/articles/article.aspx?p=2460260&seqNum=2

据我了解,您的教授希望有一个单独的节点作为客户端,您可以从中 运行 hadoop 作业,但该节点不应该是 hadoop 集群的一部分。

考虑一个场景,您必须从客户端计算机提交 Hadoop 作业,而客户端计算机不是现有 Hadoop 集群的一部分。预计该作业将在 Hadoop 集群上执行。

Namenode和Datanode组成Hadoop Cluster,Client向Namenode提交作业。 为此,客户端应具有与 Namenode 上相同的 Hadoop 分发和配置副本。 然后Only Client会知道Job tracker在哪个节点上运行ning,以及Namenode的IP来访问HDFS数据。

在 Namenode 上完成配置,

core-site.xml 会有这个 属性-

<code><property>
        <name>fs.default.name</name>
        <value>192.168.0.1:9000</value>
</property> 

mapred-site.xml 会有这个 属性-

<code><property>
      <name>mapred.job.tracker</name>
      <value>192.168.0.1:8021</value>
 </property>
这是必须复制到客户端机器的 Hadoop 配置中的两个重要属性。 并且你需要在 mapred-site.xml 文件中设置一个 addtinal 属性,以克服 Privileged Action Exception.

<code><property>
      <name>mapreduce.jobtracker.staging.root.dir</name>
      <value>/user</value>
</property>
您还需要使用名称节点和数据节点的 IP 地址和主机名更新 /ets/hosts 客户端计算机。

现在您可以使用 hadoop jar 命令从客户端计算机提交作业,作业将在 Hadoop 集群上执行。请注意,您不应在客户端计算机上启动任何 hadoop 服务。