【发布时间】:2013-07-15 16:30:22
【问题描述】:
刚接触hadoop,只设置了3个debian服务器集群来练习。
我在研究 hadoop 的最佳实践时遇到了: JBOD 无 RAID 文件系统:ext3、ext4、xfs - 没有你在 zfs 和 btrfs 中看到的那些花哨的 COW 东西
所以我提出这些问题...
我在任何地方读到 JBOD 都比 hadoop 中的 RAID 好,最好的文件系统是 xfs 和 ext3 和 ext4。除了文件系统的东西,这完全有道理,为什么那些是最好的......你如何实现这个 JBOD?如果你自己进行谷歌搜索,你会看到我的困惑,JBOD 暗示了一个线性附件或只是一堆磁盘的组合,有点像逻辑卷,至少有些人是这样解释的,但 hadoop 似乎想要一个不结合的 JBOD。没有人在这上面展开...
- 问题 1) Hadoop 世界中的每个人都对 JBOD 意味着什么?您如何实现它?
- 问题 2) 是不是就像把每个磁盘挂载到不同的目录一样简单?
- 问题 3) 这是否意味着 hadoop 在 JBOD 上运行最好,其中每个磁盘都简单地挂载到不同的目录?
问题 4)然后您只需将 hadoop 指向那些 data.dirs?
问题5) 我看到 JBODS 有两种方式,要么每个磁盘单独挂载,要么磁盘线性连接,可以通过 mdadm --linear 模式完成,或者 lvm 我打赌也可以,所以我看不出有什么大不了的那...如果是这种情况,可以使用 mdadm --linear 或 lvm 因为JBOD人们指的是磁盘的连接,那么这是“JBOD”或hadoop线性连接磁盘的最佳方法?
这是题外话,但是有人可以验证这是否正确吗?使用cow,写时复制的文件系统,如zfs和btrfs只会减慢hadoop,但不仅cow实现对hadoop来说是浪费。
问题 6) 为什么 COW 和 RAID 之类的东西在 hadoop 上是一种浪费? 我认为它好像您的系统崩溃了,并且您使用 if 来恢复它,当您恢复系统时,hdfs 已经发生了如此多的更改,它可能只会认为那台机器有故障,最好从头开始重新加入它(将它作为一个新的数据节点启动)......或者hadoop系统将如何看到旧的数据节点?我的猜测是它不会认为它是旧的或新的,甚至是数据节点,它只会将其视为垃圾...... Idk......
问题 7) 如果 hadoop 发现一个数据节点从集群中脱落,然后该数据节点重新上线,数据稍旧,会发生什么情况?数据必须有多旧?这个题目怎么样?
重新提出问题 1 到 4
我刚刚意识到我的问题是如此简单,但我很难解释它,我不得不将它分成 4 个问题,但我仍然没有得到我正在寻找的答案,来自听起来像是非常聪明的人,所以我必须以不同的方式重新询问..
在纸上我可以轻松地或通过绘图...我会再次尝试用文字..
如果对我在 JBOD 问题中提出的问题感到困惑...
** 只是想知道大家在 hadoop 世界中一直提到的 JBOD 是什么类型的都是 **
JBOD 与 hadoop 的定义不同,然后在正常世界中,我想知道实现 hadoop 的最佳方法是在 jbods(sda+sdb+sdc+sdd) 的 concat 上如何实现,或者只保留磁盘(sda,sdb,sdc,sdd)
我认为下面的图形表示最能解释我的要求
(JBOD 方法 1)
普通世界:jbod 是磁盘的串联 - 如果您要使用 hadoop,您会将 data.dir(hdfs 虚拟站点所在的位置)覆盖到此磁盘串联内的目录上,以及所有磁盘将显示为 1... 因此,如果您将 sda 和 sdb 和 sdc 作为节点中的数据磁盘,您将使 em 显示为某个实体 1(使用主板的硬件或 mdadm 或 lvm),这是一个线性 concat sda 和 sdb 和 sdc。然后,您可以将此 entity1 挂载到 Unix 命名空间中的文件夹,例如 /mnt/jbod/,然后设置 hadoop 以在其中运行。
-
文本摘要:如果磁盘 1 和磁盘 2 和磁盘 3 分别为 100gb 和 200gb 和 300gb,那么这个 jbod 将是 600gb 大,来自这个节点的 hadoop 将获得 600gb 的容量
李>
* TEXTO-GRAPHICAL OF LINEAR CONCAT OF DISKS BEING A JBOD:
* disk1 2 and 3 used for datanode for hadoop
* disk1 is sda 100gb
* disk2 is sdb 200gb
* disk3 is sdc 300gb
* sda + sdb + sdc = jbod of name entity1
* JBOD MADE ANYWAY - WHO CARES - THATS NOT MY QUESTION: maybe we made the jbod of entity1 with lvm, or mdadm using linear concat, or hardware jbod drivers which combine disks and show them to the operating system as entity1, it doesn't matter, either way its still a jbod
* This is the type of JBOD I am used to and I keep coming across when I google search JBOD
* cat /proc/partitions would show sda,sdb,sdc and entity1 OR if we used hardware jbod maybe sda and sdb and sdc would not show and only entity1 would show, again who cares how it shows
* mount entity1 to /mnt/entity1
* running "df" would show that entity1 is 100+200+300=600gb big
* we then setup hadoop to run its datanodes on /mnt/entity1 so that datadir property points at /mnt/entity1 and the cluster just gained 600gb of capacity
..另一个视角是这个..
(JBOD 方法 2)
-
在 hadoop 中,在我看来,他们希望每个磁盘都是分开的。因此,我会将 unix 命名空间中的磁盘 sda 和 sdb 和 sdc 挂载到 /mnt/a 和 /mnt/b 和 /mnt/c ......从网上阅读看来,许多 hadoop 专家将 jbods 归类为只是一个一堆磁盘,所以对于 unix,它们看起来像磁盘而不是磁盘的连接......然后当然我可以结合成为一个实体,或者使用逻辑卷管理器(lvm)或 mdadm(以 raid 或线性方式, jbod 首选线性)......但是......不,我们不要将它们组合起来,因为在 hadoop 世界中,jbod 似乎只是它们自己坐在一堆磁盘......
李> 如果磁盘 1 和磁盘 2 和磁盘 3 分别为 100gb 和 200gb 和 300gb,则每个挂载 disk1->/mnt/a 和 disk2->/mnt/b 和 disk3->/mnt/c 将每个分别为 100gb 和 200gb 和 300gb 大,来自该节点的 hadoop 将获得 600gb 容量
TEXTO-GRAPHICAL OF LINEAR CONCAT OF DISKS BEING A JBOD
* disk1 2 and 3 used for datanode for hadoop
* disk1 is sda 100gb
* disk2 is sdb 200gb
* disk3 is sdc 300gb
* WE DO NOT COMBINE THEM TO APPEAR AS ONE
* sda mounted to /mnt/a
* sdb mounted to /mnt/b
* sdc mounted to /mnt/c
* running a "df" would show that sda and sdb and sdc have the following sizes: 100,200,300 gb respectively
* we then setup hadoop via its config files to lay its hdfs on this node on the following "datadirs": /mnt/a and /mnt/b and /mnt/c.. gaining 100gb to the cluster from a, 200gb from b and 300gb from c... for a total gain of 600gb from this node... nobody using the cluster would tell the difference..
问题摘要
** 大家指的哪个方法是hadoop的BEST PRACTICE这个组合jbod还是磁盘分离 - 根据在线文档,这仍然是一个jbod? **
- 这两种情况都将获得 hadoop 600gb...它只是 1。看起来像一个 concat 或一个实体,它是所有磁盘的组合,我一直认为这是一个 jbod...或者它会像 2系统中的每个磁盘都挂载到不同的目录,最终结果与 hadoop 容量方面的结果都是一样的......只是想知道这是否是提高性能的最佳方式
【问题讨论】: