Hadoop单节点示例搭建
大数据已经成为现在热门中的热门,逢人必说Hadoop,作为初学者最好的学习方式是一步一步的搭建属于自己的Hadoop环境,网络上也有很多这方面的教程,但是还是缺少从最原始的操作系统环境开始到最后Hadoop环境部署的文章,因此才有了本文。
本文从最基础的操作系统环境到系统环境变量到具体的软件安装,hadoop安装流程源自自hadoop官方英文手册。
基础环境
操作系统
我的主机是Gentoo,hadoop主机采用ubuntu因此需要安装virtualbox,首先从virtualbox官网下载虚拟机软件
https://www.virtualbox.org/wiki/Linux_Downloads
根据各自的平台下载适合的软件包,rpm、deb等等我下载的是run格式的软件包
下载好后给软件包添加执行权限
chomod 755 VirtualBox-5.1.22-115126-Linux_amd64.run
这样就完成了虚拟机软件的安装,但是很多时候会出现建好了虚拟机但是无法启动的问题,最典型的就是这种
VBoxNetAdpCtl: Error while adding new interface: failed to open /dev/vboxnetctl: No such file or directory.
出现这种情况很多时候都是由于virtualbox的模块没有加载造成的,通常你可以手动的方式启动相应的模块,例如
modprobe vboxnetflt
但是每次重启机器都会手动加载一次模块所以可以采用系统自动加载的方式
在/etc/modules-load.d/这个目录下建立一个virtualbox.conf文件
jacky@gentoo ~ $ vi /etc/modules-load.d/virtualbox.conf
然后在这个配置文件中加入需要自动加载的模块名称
vboxdrv
vboxnetadp
vboxnetflt
vboxpci
这四个是我目前用到的模块,保存后重启系统就能实现自动加载模块了
虚拟机安装ubuntu我就不说了,我采用的ubuntu版本是ubuntu-16.04.2-server-amd64,服务器版本的好处就是没有图形界面所以消耗资源较少
安装万系统后可以选择更新一下源,先保存旧的文件再更新
root@node:~# cp /etc/apt/sources.list /etc/apt/sources.list.bak
修改sources.list内容为
# deb cdrom:[Ubuntu 16.04 LTS _Xenial Xerus_ - Release amd64 (20160420.1)]/ xenial main restricted
deb-src http://archive.ubuntu.com/ubuntu ,本文首先示例最基础的单节点环境的配置xenial main restricted #Added by software-properties
deb http://mirrors.aliyun.com/ubuntu/ xenial main restricted
deb-src http://mirrors.aliyun.com/ubuntu/ xenial main restricted multiverse universe #Added by software-properties
deb http://mirrors.aliyun.com/ubuntu/ xenial-updates main restricted
deb-src http://mirrors.aliyun.com/ubuntu/ xenial-updates main restricted multiverse universe #Added by software-properties
deb http://mirrors.aliyun.com/ubuntu/ xenial universe
deb http://mirrors.aliyun.com/ubuntu/ xenial-updates universe
deb http://mirrors.aliyun.com/ubuntu/ xenial multiverse
deb http://mirrors.aliyun.com/ubuntu/ xenial-updates multiverse
deb http://mirrors.aliyun.com/ubuntu/ xenial-backports main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ xenial-backports main restricted universe multiverse #Added by software-properties
deb http://archive.canonical.com/ubuntu xenial partner
deb-src http://archive.canonical.com/ubuntu xenial partner
deb http://mirrors.aliyun.com/ubuntu/ xenial-security main restricted
deb-src http://mirrors.aliyun.com/ubuntu/ xenial-security main restricted multiverse universe #Added by software-properties
deb http://mirrors.aliyun.com/ubuntu/ xenial-security universe
deb http://mirrors.aliyun.com/ubuntu/ xenial-security multiverse
如果在安装ubuntu出现问题可以参考我另外的Gentoo安装virtualbox这篇文章
注:,本文首先示例最基础的单节点环境的配置
安装好后配置双网卡,一个用于访问互联网(nat)一个用于主机访问ubuntu(仅主机网络)
配置SSH
安装好操作系统后需要配置ssh,ssh是什么我就不介绍了,直接上安装命令
root@node:~# apt-get install openssh-server
安装好后需要进行相应的配置
root@node:~# vi /etc/ssh/sshd_config
修改其中的
PermitRootLogin prohibit-password
注释掉添加
PermitRootLogin yes
//这样就能远程ssh root用户了
随后重启ssh服务
root@node:~# /etc/init.d/ssh restart
Hadoop部署
配置java环境
下载jdk包并解压到/usr/lib/jvm目录,如果没有这个目录则创建,随后修改配置文件
root@node:~# vi /etc/profile
添加以下内容
export JAVA_HOME=/usr/lib/jvm/jdk1.8.0_131
export JRE_HOME=${JAVA_HOME}/jre
export CLASSPATH=.:$JAVA_HOME/lib:$JAVA_HOME/jre/lib:$CLASSPATH
export PATH=$JAVA_HOME/bin:$JAVA_HOME/jre/bin:$PATH
随后使环境变量生效
root@node:~# source /etc/profile
//可以用
java -version
如果出现以下内容则配置成功
root@node:~# java -version
java version "1.8.0_131"
Java(TM) SE Runtime Environment (build 1.8.0_131-b11)
Java HotSpot(TM) 64-Bit Server VM (build 25.131-b11, mixed mode)
安装配置hadoop
下载hadoop,我这里采用的是2.8.0版本选择一个镜像用wget下载
root@node:~# wget http://mirror.bit.edu.cn/apache/hadoop/common/hadoop-2.8.0/hadoop-2.8.0.tar.gz
我选择将hadoop安装到/opt目录,因此软件也下载到/opt目录,下载完成后解压缩
root@node:/opt# tar -zxvf hadoop-2.8.0.tar.gz
root@node:/opt# mv hadoop-2.8.0 hadoop
修改hadoop配置文件
root@node:/opt# vi /opt/hadoop/etc/hadoop/hadoop-env.sh
检查是否存在这句话,与java的集成
export JAVA_HOME=${JAVA_HOME}
随后执行hadoop指令
root@node:/opt# /opt/hadoop/bin/hadoop version
查看是否出现如下语句
Hadoop 2.8.0
Subversion https://git-wip-us.apache.org/repos/asf/hadoop.git -r 91f2b7a13d1e97be65db92ddabc627cc29ac0009
Compiled by jdu on 2017-03-17T04:12Z
Compiled with protoc 2.5.0
From source with checksum 60125541c2b3e266cbf3becc5bda666
This command was run using /opt/hadoop/share/hadoop/common/hadoop-common-2.8.0.jar
出现了则表示安装成功
单节点测试
直接上命令运行hadoop提供的测试用例
root@node:~# cd /opt/hadoop/
root@node:/opt/hadoop# mkdir input
root@node:/opt/hadoop# cp etc/hadoop/*.xml input
root@node:/opt/hadoop# bin/hadoop jar share/hadoop/mapreduce/hadoop-mapreduce-examples-2.8.0.jar grep input output ‘dfs[a-z.]+’
等待命令执行,执行完后
root@node:/opt/hadoop# cat output/*
1 dfsadmin
至此完成了单节点的部署