3月份的时候做了单机版的hadoop on arm的测试,最近又买了一个新的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位到来后,一切都会好起来。