hadoop中的JBOD是什么?还有hadoop的COW?

hadoop中的JBOD是什么?还有hadoop的COW?,hadoop,raid,ext3,zfs,Hadoop,Raid,Ext3,Zfs,hadoop新手,只需设置一个3 debian服务器集群进行实践 我在研究hadoop的最佳实践时发现: JBOD无RAID 文件系统:ext3、ext4、xfs——这些都不是您在zfs和btrfs中看到的那些花里胡哨的东西 所以我提出这些问题 无论我读到哪里,JBOD都比hadoop中的RAID好,最好的文件系统是xfs、ext3和ext4。除了文件系统的东西,这完全有道理为什么这些是最好的。。。如何实现这个JBOD?如果你自己做谷歌搜索,你会看到我的困惑,JBOD暗指一个线性附件或一堆磁盘

hadoop新手,只需设置一个3 debian服务器集群进行实践

我在研究hadoop的最佳实践时发现: JBOD无RAID 文件系统:ext3、ext4、xfs——这些都不是您在zfs和btrfs中看到的那些花里胡哨的东西

所以我提出这些问题


无论我读到哪里,JBOD都比hadoop中的RAID好,最好的文件系统是xfs、ext3和ext4。除了文件系统的东西,这完全有道理为什么这些是最好的。。。如何实现这个JBOD?如果你自己做谷歌搜索,你会看到我的困惑,JBOD暗指一个线性附件或一堆磁盘的组合,有点像一个逻辑卷——至少有人这么解释,但hadoop似乎想要一个不组合的JBOD。没有人会在这上面展开

  • 问题1)hadoop世界中的每个人都说JBOD是什么意思?您如何实现它
  • 问题2)将每个磁盘装载到不同的目录是否简单
  • 问题3)这是否意味着hadoop在JBOD上运行得最好,在JBOD上,每个磁盘只需装载到不同的目录
  • 问题4)然后将hadoop指向那些data.dirs

  • 问题5) 我认为JBODS有两种方式,要么每个磁盘单独挂载,要么是磁盘的线性连接,这可以通过mdadm——线性模式来实现,我打赌lvm也可以,所以我不认为这有什么大不了的。。。如果是这样的话,可以使用mdadm--linear或lvm,因为人们所指的JBOD就是这个concat磁盘,那么对于hadoop来说,哪种是“JBOD”或linear concat磁盘的最佳方式


这是离题的,但有人能验证这是否正确吗?使用cow、写时拷贝(copy-on-write)的文件系统(如zfs和btrfs)只会减慢hadoop的速度,但这不仅是因为cow实现对hadoop来说是一种浪费

  • 问题6)为什么COW和RAID之类的东西在hadoop上是一种浪费? 我看到,如果你的系统崩溃,你使用的胆怯,如果你恢复它,在你恢复你的系统时,已经有这么多的变化,对HDFs,它可能会只是认为机器是错误的,它会更好地重新加入它从头开始(把它作为一个新的新数据阳极)…或者hadoop系统将如何看到旧的datanode?我猜它不会认为它是旧的或新的,甚至是一个数据节点,它只会把它看作垃圾。。。Idk

  • 问题7)如果hadoop看到一个datanode从集群上掉下来,然后datanode带着稍旧的数据重新联机,会发生什么?数据是否有一定程度的陈旧性???这个话题怎么样


重新研究问题1至4
  • 我刚刚意识到我的问题很简单,但我很难解释,所以我不得不把它分成4个问题,我仍然没有从听起来像是非常聪明的人那里得到我想要的答案,所以我必须以不同的方式重新提问

  • 在纸上,我可以很容易地或与图纸。。。我将再次尝试用语言表达

  • 如果对我在JBOD问题中提出的问题感到困惑

  • **只是想知道在hadoop世界中,每个人都在说什么样的JBOD才是全部**

  • JBODs与hadoop的定义与普通世界不同,我想知道实现hadoop的最佳方式是在JBODs的concat上(sda+sdb+sdc+sdd),还是只需将磁盘单独放置(sda、sdb、sdc、sdd)

  • 我认为下面的图形说明了我的最佳要求

(JBOD方法1)
  • 正常世界:jbod是一个包含磁盘的集合-如果你使用hadoop,你会将data.dir(hdfs虚拟站点)覆盖到这个包含磁盘的集合中的一个目录上,所有磁盘也会显示为1。。。因此,如果将sda、sdb和sdc作为节点中的数据磁盘,则会使em显示为某种实体1(使用主板硬件或mdadm或lvm),这是sda、sdb和sdc的线性连接。然后将该entity1装载到Unix命名空间中的一个文件夹中,如/mnt/jbod/,然后将hadoop设置为在其中运行

  • 文本摘要:如果磁盘1、磁盘2和磁盘3分别为100gb、200gb和300gb,则此jbod将为600gb,而此节点的hadoop将获得600gb的容量

*TEXTO-GRAPHICAL表示磁盘的线性连接为JBOD:
*disk1 2和Disk3用于hadoop的datanode
*disk1是sda 100gb
*disk2是SDB200GB
*disk3是SDC300GB
*sda+sdb+sdc=名称实体1的jbod
*不管怎样,JBOD还是做了——谁在乎呢——这不是我的问题:也许我们用lvm做了entity1的JBOD,或者用线性concat做了mdadm,或者用硬件JBOD驱动程序把磁盘组合起来,作为entity1显示给操作系统,这都没关系,不管怎样,它仍然是一个JBOD
*这是我习惯的JBOD类型,我在谷歌搜索JBOD时经常遇到这种类型的JBOD
*cat/proc/partitions会显示sda、sdb、sdc和entity1,或者如果我们使用硬件jbod,可能sda、sdb和sdc不会显示,只有entity1会显示,再说一遍,谁在乎它如何显示呢
*将entity1安装到/mnt/entity1
*运行“df”将显示entity1的大小为100+200+300=600gb
*然后,我们将hadoop设置为在/mnt/entity1上运行其datanodes,这样datadir属性指向/mnt/entity1,集群刚刚获得了600gb的容量

。另一种观点是

(JBOD方法2)
  • 在hadoop中,我觉得他们希望每个磁盘都是分开的。因此,我会将unix命名空间中的磁盘sda、sdb和sdc装载到/mnt/a和/mnt/b和/mnt/c。。。从网络上的阅读来看,很多hadoop专家将JBOD归类为只是一堆磁盘,所以对于unix来说,它们看起来像磁盘,而不是磁盘的集合。。。当然,我可以将它们组合成一个实体,或者与逻辑卷管理器组合成一个实体