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 服务。
我是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 会有这个 属性-
这是必须复制到客户端机器的 Hadoop 配置中的两个重要属性。 并且你需要在 mapred-site.xml 文件中设置一个 addtinal 属性,以克服 Privileged Action Exception.<code><property>
<name>mapred.job.tracker</name>
<value>192.168.0.1:8021</value>
</property>
您还需要使用名称节点和数据节点的 IP 地址和主机名更新 /ets/hosts 客户端计算机。<code><property>
<name>mapreduce.jobtracker.staging.root.dir</name>
<value>/user</value>
</property>
现在您可以使用 hadoop jar 命令从客户端计算机提交作业,作业将在 Hadoop 集群上执行。请注意,您不应在客户端计算机上启动任何 hadoop 服务。