JetsonTK1嵌入式开发板hadoop配置详细过程
实验环境
操作平台:Jetson TK1嵌入式开发板
操作系统:Ubuntu14.04
软件版本:hadoop-0.20.2, jdk-7u60-linux-arm
集群架构:包括4个节点:1个Master,3个Salve,节点之间局域网连接,可以相互ping通。节点IP地址分布如下:
主机名 |
IP |
系统版本 |
Hadoop node |
hadoop进程名 |
master |
211.68.39.143 |
Ubuntu14.04 |
master |
namenode,jobtracker |
slave1 |
211.68.39.144 |
Ubuntu14.04 |
slave |
datanode,tasktracker |
slave2 |
211.68.39.145 |
Ubuntu14.04 |
slave |
datanode,tasktracker |
slave3 |
211.68.39.146 |
Ubuntu14.04 |
slave |
datanode,tasktracker |
四个节点上均是Ubuntu系统,并且有一个相同的用户hadoop。master机器主要配置NameNode和JobTracker的角色,负责总管分布式数据和分解任务的执行;3个slave机器配置DataNode和TaskTracker的角色,负责分布式数据存储以及任务的执行。
配置过程:
下载资源:hadoop-0.20.2.tar.gz jdk-7u60-linux-arm-vfp-hflt.gz
1、 在每台主机上安装JDK
在/usr建立java文件夹(注意权限)
#mkdir /usr/java
将jdk-7u60-linux-arm-vfp-hflt.gz移到/usr/java下
解压文件(/usr/java)
#tar –zxvf jdk-7u60-linux-arm-vfp-hflt.gz
解压完毕查看目录会发现生成了文件夹jdk1.7.0_60即可
添加java环境变量:
#vim /etc/profile
#于该文件最后添加
export JAVA_HOME=/usr/java/jdk1.7.0_60/
export JRE_HOME=${JAVA_HOME}/jre
export CLASSPATH=.:${JAVA_HOME}/lib:${JRE_HOME}/lib
export PATH=${JAVA_HOME}/bin:$PATH
生效java变量:
#source/etc/profile
在终端输入java –version / javac测试安装JDK是否成功;
同时,在每台主机上配置/etc/hosts 以便快速访问。
#vim /etc/hosts
#增加内容如下
211.68.39.143 master
211.68.39.144 slave1
211.68.39.145 slave2
211.68.39.146 slave3
在所有的机器上都建立相同的目录,也可以就建立相同的用户,最好是以该用户的home路径来做hadoop的安装路径。安装路径都是:/home/hadoop/hadoop-0.20.2
在每台主机上创建hadoop用户
#useraddhadoop
#passwd hadoop
#mkdir /home/hadoop
#chown -R hadoop /home/hadoop
2、SSH配置
在Hadoop启动以后,Namenode是通过SSH(SecureShell)来启动和停止各个datanode上的各种守护进程的,这就须要在节点之间执行指令的时候是不须要输入密码的形式,故我们须要配置SSH运用无密码公钥认证的形式。以本文中的四台机器为例,现在Master是主节点,他须要连接Slave1、Slave2和Slave3。须确定每台机器上都安装了ssh,并且datanode机器上ssh服务已经启动。
切换到hadoop用户(保证用户hadoop可以无需密码登录,因为我们后面安装的hadoop属主是hadoop用户。)
#su hadoop
#ssh-keygen -t rsa
#此过程中如需输入 直接回车即可
这个命令生成一个密钥对:id_rsa(私钥文件)和id_rsa.pub(公钥文件)。默认被保存在~/.ssh/目录下。
2) 将Master公钥添加到远程主机Slave1的 authorized_keys 文件中
Slave1节点下,在/home/hadoop/.ssh/下创建authorized_keys
#vim authorized_keys
将刚才复制的公钥内容复制进去
权限设置为600.(这点很重要,没有设置600权限会导致登陆失败)
测试登陆:
#ssh Slave1
若无需密码登录,即设置成功
同样的方法,将Master 的公钥复制到其他节点。
3、安装Hadoop
1) master主节点下,切换为hadoop用户,下载安装包后,直接解压安装即可:
#su – hadoop
#将hadoop-0.20.2.tar.gz 移到/home/hadoop(注意权限)
#tar -zxvf hadoop-0.20.2.tar.gz
进入hadoop-0.20.2文件夹进行文件配置工作
1. 配置conf/hadoop-env.sh文件
配置conf/hadoop-env.sh文件,添加:
export JAVA_HOME= /usr/java/jdk1.7.0_75/
这里修改为你的jdk的安装位置,保存退出。
2.配置文件:conf/core-site.xml
保存退出。
fs.default.name是NameNode的URI。hdfs://主机名:端口/hadoop.tmp.dir :Hadoop的默认临时路径,这个最好配置,如果在新增节点或者其他情况下莫名其妙的DataNode启动不了,就删除此文件中的tmp目录即可。不过如果删除了NameNode机器的此目录,那么就需要重新执行NameNode格式化的命令。
3.配置文件:conf/mapred-site.xml
保存退出。
mapred.job.tracker是JobTracker的主机(或者IP)和端口。主机:端口。
4.配置文件:conf/hdfs-site.xml
保存退出。
dfs.name.dir是NameNode持久存储名字空间及事务日志的本地文件系统路径。当这个值是一个逗号分割的目录列表时,nametable数据将会被复制到所有目录中做冗余备份。
dfs.data.dir是DataNode存放块数据的本地文件系统路径,逗号分割的列表。当这个值是逗号分割的目录列表时,数据将被存储在所有目录下,通常分布在不同设备上。
dfs.replication是数据需要备份的数量,默认是3,如果此数大于集群的机器数会出错。
注意:此处的name1、name2、data1、data2目录不能预先创建,hadoop格式化时会自动创建,如果预先创建反而会有问题。
4) 配置masters和slaves主从结点
配置conf/masters和conf/slaves来设置主从结点,注意最好使用主机名,并且保证机器之间通过主机名可以互相访问,每个主机名一行。
#vim masters:
#内容如下
master
#vim slaves:
#内容如下
slave1
slave2
slave3
配置结束,把配置好的hadoop文件夹拷贝到其他集群的机器中,并且保证上面的配置对于其他机器而言正确,例如:如果其他机器的Java安装路径不一样,要修改conf/hadoop-env.sh
#scp -r/home/hadoop/hadoop-0.20.2 slave1:/home/hadoop/
#scp -r/home/hadoop/hadoop-0.20.2 slave2:/home/hadoop/
#scp -r/home/hadoop/hadoop-0.20.2 slave3:/home/hadoop/
5、hadoop启动
1) 格式化一个新的分布式文件系统
#cd /home/hadoop/hadoop-0.20.2
#bin/hadoopnamenode –format
查看输出保证分布式文件系统格式化成功执行完后可以到master机器上看到/home/hadoop/dfs/name目录。在主节点master上面启动hadoop,主节点会启动所有从节点的hadoop。
2)启动所有节点
#bin/start-all.sh
3) 关闭所有节点
从主节点master关闭hadoop,主节点会关闭所有从节点的hadoop。
#$ bin/stop-all.sh
6、测试
1) 用jps检验各后台进程是否成功启动
--在master节点查看后台进程
# /usr/java/jdk1.7.0_75/bin/jps
3180 Jps
2419SecondaryNameNode
2236 NameNode
2499 JobTracker
--在slave节点查看后台进程
# /usr/java/jdk1.7.0_75/bin/jps
2631 Jps
2277 DataNode
2365 TaskTracker