【问题标题】:file block replication allocation on virtual machines hadoop虚拟机hadoop上的文件块复制分配
【发布时间】:2013-02-23 08:50:41
【问题描述】:

我想尝试实现我从 IEEE“虚拟云中的位置感知 MapReduce”获得的这篇论文。这里总结一下:8台物理机,每台机器包含4台虚拟机,每台VM安装hadoop hdfs。假设我们有一个包含 p 台物理机的集群,每台都有一个硬盘,副本数为 3。那么 n 个文件块从集群外的另一台计算机放入集群或在集群中随机生成。该模型是关于具有一定数据模式的数据模式生成和任务模式生成。每个块都有相同的概率被放置在托管相同数量虚拟机的物理机上。可能会出现数据模式,使用 hadoop 策略,文件块副本所有堆栈在一台物理机器上,因为 hadoop 的策略数据分配是随机的。 http://imageshack.us/photo/my-images/42/allstack.png/

建议的策略是循环分配和蛇形分配,理论上是这样的:http://imageshack.us/photo/my-images/43/proposed.png/

如何让hadoop知道一些虚拟机在一台物理机上?

让hadoop不将文件块的第二个和第三个副本复制到同一物理机上的虚拟机上??? 我问过如何实现这样的,并得到答复,它使用机架感知配置。但我仍然感到困惑,需要更多关于此的参考。

我如何跟踪这些数据,那些文件块复制均匀分布在物理机器上,确保没有文件块副本全部堆叠在一台物理机器上? 确定我是否按照机架意识进行配置,文件块副本均匀分布在物理机上吗?

【问题讨论】:

    标签: hadoop replication allocation


    【解决方案1】:

    假设:我们知道哪个虚拟机是在哪个物理机上创建的。

    这种假设在公共云环境中不成立。因此,下面描述的解决方案不能在那里工作。下面描述的解决方案将在私有云中工作

    实施货架感知包括 2 个步骤

    1. 在 core-site.xml 中设置脚本文件名

       <property>
            <name>topology.script.file.name</name>
            <value>core/rack-awareness.sh</value>
       </property>
      
    2. 实现脚本

      样例 rack-awareness.sh 可以如下所示

      HADOOP_CONF=/etc/hadoop/conf
      while [ $# -gt 0 ] ; do
        nodeArg=$1
        exec< ${HADOOP_CONF}/cluster.data
        result=”" 
        while read line ; do
           ar=( $line ) 
           if [ "${ar[0]}” = “$nodeArg” ] ; then
             result=”${ar[1]}”
           fi
        done 
        shift 
        if [ -z "$result" ] ; then
           echo -n “/default/rack “
        else
           echo -n “$result “
        fi
      done
      

      而且cluster.data的内容可以是

      hadoopdata1.ec.com     /dc1/rack1
      hadoopdata1            /dc1/rack1
      10.1.1.1               /dc1/rack2
      

    如您所见,Hadoop 完全依赖于我们提供的机架值。您可以利用这一事实将数据块分布在存在于不同物理机上的虚拟机上。

    例如。

    Virtual Machine 1 (VM1) 10.83.51.2 is on Physical Machine 1 (PM1)
    Virtual Machine 2 (VM2) 10.83.51.3 is on Physical Machine 1 (PM1)
    Virtual Machine 2 (VM2) 10.83.51.4 is on Physical Machine 2 (PM2)
    

    您可以将 cluster.data 设置为

    10.83.51.2 /DC1/rack1
    10.83.51.3 /DC1/rack1
    10.83.51.4 /DC1/rack2
    

    【讨论】:

      猜你喜欢
      • 2018-09-12
      • 2019-08-21
      • 2018-05-15
      • 2018-09-06
      • 1970-01-01
      • 2021-06-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多