3月份的时候做了单机版的hadoop on arm的测试,最近又买了一个新的arm板子,就考虑把他们串起来组一个hadoop集群。而且由于产品更新换代的问题,硬件上是异构的。

基于arm架构单片机的hadoop服务器尝试

namenode是cubieboard一代,采用单核arm v7架构,1G内存,4G板载flash ROM

datanode采用cubietruck,双核armv7,2G内存,8G板载Flash ROM,挂了一个80G的2.5寸磁盘。

两个主板的操作系统均采用ubuntu server。

nn的操作系统装在SD卡上,把nand分区格式化掉当存储,所谓nand就是flash ROM。

dn操作系统直接刷在nand上,无SD卡,挂载一块硬盘当存储。

怎么把linux安装到nand上这次先不讲,以后单独说。

linaro@namenode:~$ df -h
Filesystem      Size  Used Avail Use% Mounted on
/dev/mmcblk0p2  1.8G  1.1G  600M  66% /
devtmpfs        408M  4.0K  408M   1% /dev
none            408M  128K  408M   1% /tmp
none             82M  164K   82M   1% /run
none            408M     0  408M   0% /var/tmp
none            5.0M     0  5.0M   0% /run/lock
none            408M     0  408M   0% /run/shm
none            100M     0  100M   0% /run/user
/dev/nand       3.8G   75M  3.5G   3% /opt
linaro@datanode-01:~$ df -h
Filesystem      Size  Used Avail Use% Mounted on
/dev/root       2.0G  1.3G  648M  67% /
devtmpfs        913M  4.0K  913M   1% /dev
none            4.0K     0  4.0K   0% /sys/fs/cgroup
none            183M  224K  183M   1% /run
none            5.0M     0  5.0M   0% /run/lock
none            913M     0  913M   0% /run/shm
none            100M     0  100M   0% /run/user
/dev/nandc      5.1G  139M  4.7G   3% /opt
/dev/sda1        74G  180M   70G   1% /data
linaro@datanode-01:~$

dd测试一下磁盘性能,nand读写可以忽略不计,flash ROM上读写数据的效率可以用惨不忍睹来性能。写数据只有每秒可怜的5M,读数据每秒7M,逆天的慢。

linaro@datanode-01:~$ sudo time dd if=/dev/zero of=/data/1GB bs=4096 count=250000
250000+0 records in
250000+0 records out
1024000000 bytes (1.0 GB) copied, 23.7274 s, 43.2 MB/s
0.28user 11.04system 0:23.73elapsed 47%CPU (0avgtext+0avgdata 776maxresident)k
8inputs+2000000outputs (0major+252minor)pagefaults 0swaps

如果使用磁盘的性能差不多,就可以拼凑出一个超级屌丝的Hadoop集群来用。

写数据性能,没有想象中的快,不过作为一个N年前的80G 2.5寸,5400转的SATA盘,这个成绩不错了。43.2MB/s

读数据性能超乎意料的好,惊了。338MB/s。

linaro@datanode-01:~$ sudo time dd if=/data/1GB of=/dev/null bs=4096 count=250000
250000+0 records in
250000+0 records out
1024000000 bytes (1.0 GB) copied, 3.02673 s, 338 MB/s
0.19user 2.80system 0:03.03elapsed 98%CPU (0avgtext+0avgdata 776maxresident)k
0inputs+0outputs (0major+252minor)pagefaults 0swaps

 

如果是这样,那么当成Hadoop服务器肯定是没啥大问题的,本来hadoop就是做一次写入多次读取来用的,写入慢一些不怕,只要读取够快就行了。哪怕做hbase的在线服务也可以将就。

有图有真相
黑色为cubieboard一代,红色板卡为cubietruck,CT下面是80G硬盘

供电和网络

硬盘连接

CPU info,datanode+tasktracker双核处理器

Namenode单核处理器

Namenode操作系统及cpu架构

Datanode操作系统及CPU架构

Pi冒烟测试,至少比我之前单片做Hadoop测试要快,如果把nand完全不当存储,全释放出来的话,可能还要更快。

namenode上nand当存储使。

datanode上挂载一个nand分区和硬盘共同存储数据。

两台tasktracker

两台datanode

总容量

arm因为现在只有32位CPU,所以处理能力很有限,但很高兴的是,这并不影响磁盘性能。我们至少可以组建一个基于arm的hadoop存储集群,作为冷数据的存储和备份使用。或者组建一个对线上提供查询服务的HBASE集群。这样做的主要好处是成本非常低廉,并且易于维护。

算笔账,一块arm板子几百块钱,去掉作为开发板的那些不必要外设,诸如wifi,火线,HDMI,蓝牙,GPIO口,SD卡口的话,还能便宜。1TB的2.5寸7200转sata盘淘宝售价不到500。1T存储的总成本不到1000,去买块1T的sas盘也不止这些钱了。

一台x86服务器,无硬盘也要10000多,假设用6块2T的sata盘,最便宜也要20000左右。而采用arm方案,12块arm板子加1T硬盘再加上电源设备和交换机设备只需要12000来块钱,硬件采购成本可以降低40%左右。

而更省的是电力成本,一个arm板子加硬盘的耗电量大概是750mA,使用12V电源换算成功率大概是9瓦/时,算算x86服务器是多少瓦的?现在PC机电源450瓦都是起步,Dell R720的电源功率是750瓦。12个arm板子加硬盘的功率才只有108瓦。电费节省600%!!

2U服务器 arm开发板
数量 1 12
磁盘 2Tx6=12TB 1Tx12=12TB
功率 750×1=750瓦 9×12=108瓦

至于维护方面,由于arm板卡硬盘和服务器一体化,如果有一块硬盘坏了,整体更换即可,无需关闭集群或者做热插拔。

不过还是那句话,arm现在计算能力不足,无法用做大规模分布式计算,但是这种方式提供冷数据存储备份或小规模hbase在线服务是绰绰有余的。但是,这个问题在2014年arm 64位芯片大规模出货后应该可以得到极大的改善,目前由于32 位处理器的内存寻址范围只能到4G,所以还没法做大规模的集群应用,64位到来后,一切都会好起来。

发表评论

*
*

Required fields are marked *