非计算机专业出身,未系统学习Linux系统,Hadoop也是边配置边写博客,博客主要作为学习笔记,若文章有错,欢迎指出。
转载请标明出处,谢谢。
Hadoop版本:2.6.0
0. 硬件准备
笔者在阿里云上申请了三台虚拟服务器做实验,因此操作系统,网络搭建等步骤省略。
操作系统:Ubuntu14.04 64位
内存:1G (起初512M最低配,但在hdfs格式化时报错,说内存分配失败,大概要700M内存,我改了几个有关内存的配置文件后依旧不成功,因此就直接升级到1G了,是否有最低内存限制求科普)
【注意】初学者请完全镜像的配置希望作为Hadoop节点的所有节点。
1. 用户创建及权限设置
adduser创建普通用户即可,sudo权限可添可不添。
2. 安装Java
Hadoop推荐使用Oracle的Java,但Ubuntu系统可能会默认装了OpenJdk等版本,因此,首先要卸载掉已存在版本。
apt-get purge openjdk-\*
解压从官网下载的Java包并解压到希望安装的目录,利用tar命令解压
tar -zxvf jre-7u71-linux-x64.gz
tar -zxvf jdk-7u71-linux-x64.gz
并导入类似环境变量
JAVA_HOME=/usr/local/java/jdk1.7.0_71
JRE_HOME=/usr/local/java/jre1.7.0_71
PATH=$PATH:$HOME/bin:$JAVA_HOME/bin:$JRE_HOME/bin
CLASSPATH=.:$CLASSPATH:$JAVA_HOME/lib:$JRE_HOME/lib
export JAVA_HOME
export JRE_HOME
export PATH
export CLASSPATH
一般可通过执行Java -version检验是否安装成功。
3. 单节点Hadoop
可参照官方文档Setting up a Single Node Cluster尝试搭建单节点集群。
Standalone 模式仅需按照文档中代码直接执行即可,基本不会出问题。
Pseudo-Distributed 伪分布式模式中,笔者认为有以下几个地方需要注意。
1. SSH免密码互信配置
无论是所谓的伪分布式,还是之后会详述的真分布式,Hadoop各节点之间的访问都需要用到ssh,而在工作中显然不可能手动输入密码,因此需要通过公钥、密钥的模式互相信任集群内的主机。
官方文档中即有添加公钥到授信列表的方式,其中第一步为生成公钥和密钥,第二步为添加公钥到授信列表。(钥这个字在这里居然读yue,涨姿势了)
设定后,ssh localhost时便不再需要输入密码。ssh-keygen -t dsa -P '' -f ~/.ssh/id_dsa cat ~/.ssh/id_dsa.pub >> ~/.ssh/authorized_keys
2.用户权限
在按照文档执行sbin/start-dfs.sh命令时,会发现用hadoop用户时报错,看报错内容发现,原因是无法创建log文件夹(用来记录运行日志),根因自然是hadoop用户没有在该路径写操作的权限。查看后发现,hadoop文件夹所属用户和用户组均为20000号这个不存在的值,因此,我将其都改为了创建的hadoop用户以及对应用户组,命令为:chgrp -R hadoop $HADOOP_HOME; chown -R hadoop $AHADOOP_HOME
4. 分布式Hadoop
总之,就是把所有要输入主机IP和端口的地方设置一下,让它知道在哪台机子上起服务即可。
此外,在该文件夹中还存在一个slaves文件,我在里面写了我的slaves的hostname,不知道实际上是否需要使用。
之后,按照文档中给的命令一个个启动各项服务,不出错就搞定啦。
5. 运行WordCount
WordCount官方教程在此,毕竟这一篇只是讲配置的,如果运算正确,就算搞定啦。
刚接触可能不熟悉hdfs命令,文档中省去了文件的放入操作,命令如下
创建文件夹 hdfs dfs -mkdir [路径]
将本地文件传入dfs内 hdfs dfs -put 本地文件路径 DFS文件路径
可以看到命令都是按着Linux来的所以上手很快。
第一篇暂时就到这。