ARM平台搭建Hadoop集群

/*

Hadoop是Apache旗下主流的大数据计算和存储框架之一,在近年来应用的越来越广泛。常规意义上的Hadoop集群都是搭建在商业服务器上的,利用大规模柜式服务器的强劲硬件资源进行大数据分布式计算。同时Hadoop是由Java编写的,运行在JVM之上。而Java是跨平台的,可以“run everywhere”,这就给在ARM平台上搭建Hadoop集群带来了希望。事实上,已经有多家大厂和个人爱好者做出了此类尝试,Cubieboard制作出了一个相当漂亮的8节点Hadoop集群(http://cubieboard.org/2013/08/01/hadoophigh-availability-distributed-object-oriented-platform-on-cubieboard/)。由于实际项目需求,我在64位ARM平台上搭建出了一个三节点的Hadoop集群。比算力当然比不过商业服务器,只作为一次有趣的尝试。

*/

0. 硬件资源和软件版本介绍

此案例中选用的嵌入式开发板型号是Firefly-RK3399,官网的产品介绍可点击http://www.t-firefly.com/product/rk3399.html。

硬件资源:

– Firefly-RK3399×3,6 核,2GHz主频,4GB DDR3 RAM,120G eMMC

– 散热风扇×3,用来超频后的散热

– HDMI 线×1,显示屏x1

– 4口路由器,修改设置当成交换机用,用来给3块开发板联网

– 网线×3

软件版本:

– 操作系统:Ubuntu16.04

– Java 环境:jdk for ARM 8u172

– Hadoop 2.7.6


1. 准备工作

1.1 配置本地hosts

规定集群一共有三台设备,一台主机和两台从机。主节点的主机名改成Master,两个从节点分别改成Slave1和Slave2。IP地址从192.168.1.50依次往后排到192.168.1.52(IP地址可以自定义)。若再增加一个从机,则继续添加slave节点。注意在每个设备上都要进行以下操作。

#进入hosts文件

sudo gedit /etc/hosts

#将以下内容添加到文本中:

192.168.1.50    Master

192.168.1.51    Slave1

192.168.1.52    Slave2

1.2 更改本机IP地址

在主机上执行以下操作,这里的网关和dns都是192.168.1.1,因为我最终连入互联网的那个路由器是192.168.1.1。若实际情况不同可作出相应修改。

#修改配置文件

sudo gedit /etc/network/interfaces

#在文本末尾添加以下内容:

auto eth0             

iface eth0 inet static     

address 192.168.1.50     

netmask 255.255.255.0    

gateway 192.168.1.1   

dns-nameservers 192.168.1.1

#重启网络,使配置生效

sudo /etc/init.d/networkin restart

然后在各个从机上也按规定更改为对应的ip地址

使用ping指令在Master主机中进行测试,使用类似指令在Slave上测试,确保两两之间一定可以ping通。

ping -c4 Slave1

ping -c4 Slave2

1.3 更改主机名

为更直观的区分每个节点,修改每个设备的主机名。进入以下文件中

sudo gedit /etc/hostname

把原来的主机名删除

然后添加各自的主机名

Master 或者Slave1或者Slave2


2. 设置ssh免密码登录

因为Hadoop各个节点之间的管理通信使用的是ssh,所以要求主节点必须能够ssh免密登录到所有从节点。下面配置root用户下的ssh免密登录,所有操作都是在root权限下。

2.1 修改sshd_config配置

gedit/etc/ssh/sshd_config

#在文件中添加:

RSAAuthentication yes

PubkeyAuthentication yes

#然后把PermitRootLogin prohibit改成

PermitRootLogin yes

#重启ssh服务:

sudo /etc/init.d/ssh restart

2.2 生成key

ssh-keygen -t rsa

一直回车,/root就会生成.ssh文件夹。

2.3 合并公钥到authorized_keys文件

cd /root/.ssh

cat id_rsa.pub >> authorized_keys

这时就能在本机免密码登录。

ssh localhost

2.4 在从机上进行1、2、3步实现本机免密码登录

2.5 拷贝key

#把Master的authorized_keys、known_hosts、id_rsa.pub通过ssh复制到Slave1和Slave2的/root/.ssh目录。

scp authorized_keys known_hosts id_rsa.pub root@Slave1:/root/.ssh

scp authorized_keys known_hosts id_rsa.pub root@Slave2:/root/.ssh

2.6 完成之后在主机上重启ssh服务后即可免密码登录

service ssh restart

2.7 检证免密登陆

ssh Slave1

ssh Slave2

至此,免密登录的工作已经完成


3. 安装Hadoop

3.1 将安装包下载到Master上,/usr/local/目录下,解压

tar -zxvf hadoop-2.7.6.tar.gz

3.2 将解压出来的文件夹改名为hadoop

       mv hadoop-2.7.6 hadoop

3.3 在/usr/local/hadoop目录下创建数据存放的文件夹tmp

mkdir tmp

3.4 配置core-site.xml

此文件是Hadoop的核心文件

gedit/usr/local/hadoop/etc/hadoop/core-site.xml


ARM平台搭建Hadoop集群_第1张图片

3.5 配置hdfs-site.xml

此配置文件设置hdfs的一些属性。dfs.namenode.secondary.http-address是主节点的IP地址和端口号;dfs.replication是备份系数,指每个block在hadoop集群中有几份,系数越高,冗余性越好,但是占用存储也越多,默认为3,可以设置为和从节点数相同;dfs.namenode.name.dir和dfs.datanode.data.dir规定了主节点保存整个文件系统的文件目录树的目录。dfs.socket.timeout是hdfs的读写超时时间限制。

gedit/usr/local/hadoop/etc/hadoop/hdfs-site.xml


ARM平台搭建Hadoop集群_第2张图片

3.6 配置mapred-site.xml

这是规定MapReduce计算属性的文件。mapreduce.framework.name规定采用yarn资源管理器进行分布式计算时的资源调度;下面两个属性与历史任务查看有关。

gedit /usr/local/hadoop/etc/hadoop/mapred-site.xml


ARM平台搭建Hadoop集群_第3张图片

3.7 配置yarn-site.xml

gedit/usr/local/hadoop/etc/hadoop/yarn-site.xml


ARM平台搭建Hadoop集群_第4张图片

此文件规定了yarn调度器的一些参数。yarn.resourcemanager.hostname写主节点(namenode)的主机名;yarn.nodemanager.resource.memory-mb是分布式集群分配给yarn的最大内存空间,单位是MB,此参数要按照集群的具体情况设置,本集群三个设备内存均是4GB,酌情分配2/3左右,此值必须大于1024,否则影响进程。

3.8 配置Hadoop环境属性

修改/usr/local/hadoop/etc/hadoop目录下hadoop-env.sh、yarn-env.sh的JAVA_HOME,不设置的话,启动不了:

export JAVA_HOME=/usr/local/java

3.9 配置slaves

    gedit /usr/local/hadoop/etc/hadoop/slaves

删除默认的localhost,增加从节点:

Slave1

Slave2

注意:若再增加一个从机,再继续添加slave主机名

3.10 配置环境变量:

gedit~/.bashrc

添加:

#HADOOP

exportHADOOP_HOME=/usr/local/Hadoop

exportPATH=$PATH: /usr/local/hadoop/bin:/usr/local/hadoop/sbin

使配置生效:

source~/.bashrc

3.11 传送Hadoop至其它节点

(从机不需下载安装包,由主机传送过去即可,环境变量从机要配置)

将配置好的Hadoop复制到各个节点对应位置上,通过scp传送:

scp -r/usr/local/hadoop root@Slave1:/usr/local/

scp -r/usr/local/hadoop root@Slave2:/usr/local/

3.12 启动Hadoop

在Master服务器启动hadoop,从节点会自动启动。

进入/usr/local/hadoop目录,初始化,输入命令:

(格式化只能在搭hadoop的时候在主机初始化一次,后来添加的从节点只能在slave上自己启动,不能进行格式化):

bin/hdfsnamenode -format

(1)在主机上全部启动:

sbin/start-all.sh

(2)添加从节点的时候在从机上自己启动:

/usr/local/hadoop/sbin/hadoop-daemon.shstart datanode

/usr/local/hadoop/sbin/yarn-daemon.shstart nodemanager

3.13 验证Hadoop

1.jps运行成功结果:


ARM平台搭建Hadoop集群_第5张图片

2.测试Web访问:

http://Master:50070/


致谢

安装过程中参考了

https://yq.aliyun.com/ziliao/60550

https://blog.csdn.net/laohuang1122/article/details/9953083

等多篇文章,以及来自项目组小伙伴的指导,感谢他们的付出!


Hear me roar!

你可能感兴趣的:(Big,data,is,coming)