搭建红外遥控arm-hadoop集群过程

很多人玩开发板用树莓派,树莓派的确很好,但是对于hadoop来说,内存有点小,只有512MB。所以我找了一圈,最后用的是国内一个开源硬件团队的产品叫CubieTruck。内存有2G,板载存储有8G,千兆网口,可以挂载2.5寸机械或SSD硬盘。

先简述一下大体步骤。

1. 刷系统,做系统

由于CubieTruck(以下简称CT)默认系统安装的是安卓4.2,所以需要变更一下。换成ubuntu 的 linaro server 13.08。

2. 安装部署Hadoop

这个没啥可简介的,由于hadoop是java语言编写的,CPU指令集的问题是由JVM解决的,所以,理论上,Hadoop可以工作在任何一个平台下,包括arm。所以直接用apache官方的tar或者deb即可,我用32位的deb安装,需要做一些调整,重新打包再安装,安装过程没有问题,计算也没发现错误。

3. 挂载红外接口驱动,编写红外控制脚本。

下面详述整个步骤

一、刷系统

名词解释:

linaro:AMD,高通等arm研发厂商共同研制的ubuntu on arm操作系统,其实就是ubuntu。

nand:板载的存储芯片,在linux里被识别的设备名称。

用全志的PhoenixSuit工具,现在最新版本好像是1.0.8。下载CT官方的linaro server镜像,所谓linaro,是当初amd,高通等公司联合开发的ubuntu on arm。

然后按照软件的每一步提示,可以很方便把板载系统替换为ubuntu server。

连接显示器,键盘,网线等一切需要的外设,这里不需要鼠标,因为linux server是完全命令行操作的,任何在server上装xwindows和gnome的都是傻缺的行为。

当然你也可以使用Desktop版把它作为mini pc使用,官方甚至还提供了fedora和arch linux供使用。

这时候工作刚刚开始,由于linux的镜像没有完全把8G的空间全部利用上,所以我们还要对nand进行重新划分和格式化。刷机的linux img会将nand划分为3个分区,nanda-nandc,在默认情况下,只用到了nanda和nandb,nandc完全没利用,所以我们要把nandc格式化并挂载上。查看方式是ls /dev/nand*,默认直接进系统,如果提示用户名密码,用linaro/linaro即可。可sudo su -为root

#cd /dev#mkfs.ext4 /dev/nandc#echo “mount /dev/nandc /opt” >> /etc/rc.local#mount /dev/nandc /opt#df -h

格式化并挂载之后,df -h查看,多了5.1G左右的空间。

假设挂载了硬盘,CT可无障碍挂载SATA 2.5寸硬盘,在linux中硬盘识别为sda设备,CT硬盘供电口有两个,黄黑的是12V供电,红黑的是5V供电。接入2.5寸盘需要把两个接口都插上。12V供电口在靠近网卡一侧,5V为远离网卡一侧。看红色主板的接法,CT里面提供SATA硬盘线,无需单买。

然后分区格式化挂载硬盘,注意:硬盘插线需要在断电情况下进行,不要带电插拔。

#fdisk /dev/sda#mkfs.ext4 /dev/sda1#mkdir -p /data#echo “mount /dev/sda1 /data” >> /etc/rc.local#mount /dev/sda1 /data

fdisk具体操作看提示,m是帮助,正常情况下新硬盘用n创建新的primary分区。旧硬盘需要用d命令先删除旧分区。然后再n一个primary分区,剩下的一路回车。最后用w将分区信息保存,退出后执行格式化。

这时应该是把硬盘挂载到/data路径下了,第一步刷机的工作完成。如果喜欢的话,可以执行以下apt-get update和upgrade。

二、安装部署Hadoop

可直接用官方的tar包安装,也可使用deb安装,我使用官方提供的deb安装,但是需要做一些改造的操作,默认官方提供i386和amd64的deb包。这个在arm上无法安装,,会提示cpu arch问题,但是实际是可以使用的,这个可以自己做一个deb包出来,过程如下,官方下载i386的deb。

然后执行改造和重打包

#dpkg -x hadoop_1.2.1-1_i386.deb hadoop_1.2.1-1_all#dpkg -e hadoop_1.2.1-1_i386.deb hadoop_1.2.1-1_all#cd hadoop_1.2.1-1_all/DEBIAN#vi control #将里面的Architecture: i386改成Architecture: all,或者是#Architecture: armhf,其他不动,保存退出#cd ../../#dpkg -b hadoop_1.2.1-1_all#dpkg -i hadoop_1.2.1-1_all.deb

hadoop包会创建两个用户hdfs和mapred。

分别给hdfs和mapred用户建立ssh免密码通道,剩下的就是看配置分布式hadoop的官方手册了。这里不再赘述hadoop的部署过程。跟在x86的过程一模一样。

最后配置完了就是能够用如下命令顺利启动即可。

#sudo -u hdfs start-dfs.sh#sudo -u mapred start-mapred.sh

三、红外口编程。

红外口编程需要加载红外口的内核模块,lsmod看一下,如果没有sun4i_ir,就执行一下modprobe sun4i_ir驱动。

然后编辑一个ir.py的文件,做红外的接收和相应控制。在我的电视遥控器上,按2捕获到的是键盘的1,按3捕获的是键盘2,以此类推。之前可以先测试一下,启动该脚本后是否可以在tty1上捕获到红外输入。注意,必须是tty1,也就是显示器接到CT上的那个控制台。在这个脚本里,按2是启动hdfs,按3是停止,按4是启动mapred,按5是停止mapred,按6是启动balancer,按7是停止balancer,按8是启动一个mapred的冒烟测试。

import selectimport os, sys, timeimport termiosdef ir_catch():fd = sys.stdin.fileno()r = select.select([sys.stdin],[],[],0.01)rcode = ”if len(r[0]) >0:rcode = sys.stdin.read(1)return rcodefd = sys.stdin.fileno()old_settings = termios.tcgetattr(fd)new_settings = old_settingsnew_settings[3] = new_settings[3] & ~termios.ICANONnew_settings[3] = new_settings[3] & ~termios.ECHONLprint ‘old setting %s’%(repr(old_settings))termios.tcsetattr(fd,termios.TCSAFLUSH,new_settings)while True:c = ir_catch()if len(c) !=0 :#print ‘input: %s’%(ord(c))if(ord(c) == 10):print ‘Power’os.popen(‘reboot’)elif(ord(c) == 49):print ‘2’f = os.popen(‘sudo -u hdfs /usr/sbin/start-dfs.sh’).readlines()for a in f:print aelif(ord(c) == 50):print ‘3’f = os.popen(‘sudo -u hdfs /usr/sbin/stop-dfs.sh’).readlines()for a in f:print aelif(ord(c) == 51):print ‘4’f = os.popen(‘sudo -u mapred /usr/sbin/start-mapred.sh’).readlines()for a in f:print aelif(ord(c) == 52):print ‘5’f = os.popen(‘sudo -u mapred /usr/sbin/stop-mapred.sh’).readlines()for a in f:print aelif(ord(c) == 53):print ‘6’f = os.popen(‘sudo -u hdfs /usr/sbin/start-balancer.sh’).readlines()for a in f:print aelif(ord(c) == 54):print ‘7’f = os.popen(‘sudo -u hdfs /usr/sbin/stop-balancer.sh’).readlines()for a in f:print aelif(ord(c) == 55):print ‘8’f = os.popen(‘sudo -u mapred hadoop jar /usr/share/hadoop/hadoop-examples-1.2.1.jar pi 10 100’).readlines()for a in f:print aelse:print ‘Unknown’else:#print ‘Sleep 1’time.sleep(1)

四、赘述

开启红外和gpio的操作以后,可以做的事情很多,不仅仅是遥控hadoop集群,甚至家里的电器都可以遥控。这只是一个很简单的测试,开发板能干的事很多。

本文出自 “实践检验真理” 博客,谢绝转载!

怀着淡定从容的心态去面对,也就没有了真正意义上的寂寞了。

搭建红外遥控arm-hadoop集群过程

相关文章:

你感兴趣的文章:

标签云: