在同一台机器上运行多个datanode

时间:2014-11-19 05:45:23

标签: hadoop mapreduce

我几乎没有与hadoop相关的问题,我们计划在生产环境中实施

我们拥有大型机器集群,每台机器都是具有大RAM和8核心的服务器机器。每台40台机器每5分钟收集大约60 GB的数据。这些机器也分布在世界各地的多个地点。 有一台服务器机器分开,它将作为hadoop环境中的名称节点。休息所有40台数据收集器的机器我将它们作为数据节点的hadoop集群的一部分。

由于每台计算机上的数据收集都非常高,我不希望我的数据跨越地理位置跨越服务器。所以这是我的2个要求

1)我想要的是将我的60 gb数据拆分成块但应在本地处理。为此,我想在同一台服务器上有多个datanode deomons。 是否可以在同一台服务器上运行多个datanode deomons?

2)是否可以处理指定数据节点上的块。

我会举一个例子来澄清我的观点 假设我有服务器机器为A,B,C,D ............

一台机器每5分钟就会有60 GB的数据。 我可以在A机器上运行多个datanode守护程序吗? 如果可能的话,我可以告诉我的namemode只将块发送到服务器A上运行的datanode守护进程,而不是其他机器。

我不希望数据具有高可用性,也不需要故障安全,因此无需复制数据。

2 个答案:

答案 0 :(得分:4)

要在单个节点上启动多个数据节点,首先下载/构建hadoop二进制文件。

1)从hadoop源下载hadoop二进制文件或构建hadoop二进制文件。

2)准备hadoop配置以在单个节点上运行(将/ tmp中的Hadoop默认tmp目录位置更改为其他可靠位置)

3)将以下脚本添加到$ HADOOP_HOME / bin目录并将其chmod为744。

4)格式化HDFS - bin / hadoop namenode -format(对于Hadoop 0.20及以下),bin / hdfs namenode -format(对于版本> 0.21)

5)启动HDFS bin / start-dfs.sh(这将启动Namenode和1个数据节点),可在http://localhost:50070上查看

6)使用bin / run-additionalDN.sh More Details

启动其他数据节点

<强> run-additionalDN.sh

#!/bin/sh
# This is used for starting multiple datanodes on the same machine.
# run it from hadoop-dir/ just like 'bin/hadoop' 

#Usage: run-additionalDN.sh [start|stop] dnnumber
#e.g. run-datanode.sh start 2

DN_DIR_PREFIX="/path/to/store/data_and_log_of_additionalDN/"

if [ -z $DN_DIR_PREFIX ]; then
echo $0: DN_DIR_PREFIX is not set. set it to something like "/hadoopTmp/dn"
exit 1
fi

run_datanode () {
DN=$2
export HADOOP_LOG_DIR=$DN_DIR_PREFIX$DN/logs
export HADOOP_PID_DIR=$HADOOP_LOG_DIR
DN_CONF_OPTS="\
-Dhadoop.tmp.dir=$DN_DIR_PREFIX$DN\
-Ddfs.datanode.address=0.0.0.0:5001$DN \
-Ddfs.datanode.http.address=0.0.0.0:5008$DN \
-Ddfs.datanode.ipc.address=0.0.0.0:5002$DN"
bin/hadoop-daemon.sh --script bin/hdfs $1 datanode $DN_CONF_OPTS
}

cmd=$1
shift;

for i in $*
do
run_datanode  $cmd $i
done

我希望这会对你有所帮助

答案 1 :(得分:0)

数据节点和名称节点只是软件,可以在任何商用机器上运行。因此有可能,但是在现实世界中很少使用。如果您推测风险涉及服务器中的数据不可用,那么您可能会想到将数据节点分布在不同服务器上的想法。

除此之外,apache官方网站还提到:

  

Blockquote架构并不排除在同一台机器上运行多个DataNode,而是在实际部署中很少出现这种情况。   引用

源:https://hadoop.apache.org/docs/r1.2.1/hdfs_design.html#NameNode+and+DataNodes