一、说明:
到写本文时间为止,3.0没有发布稳定的版本,所以本文基于2.7.3
系统为centOS ,用 debian核心的linux(比如ubuntu) 基本设置相同,只要把yum
换成apt-get
,推荐使用更稳定的centOS
二、集群部署
1、 准备
理论实验室没有服务器,我利用自己的电脑和舍友的电脑搭建了1个namenode 7个datanode的分布式集群,虚拟机为VMware Workstation,虚拟机部分有问题可以找虚拟机教程,这里不过多讲解
第一步创建新的虚拟机:
我的配置如下:
这里cpu内存根据自己的机器配置,但是注意,网络适配器一定设置成桥接
第二步 安装系统:
在centOS官网下载centOS 下载minimal版本,也就是只有linux内核和少量软件的版本,因为节点只用来计算,所以尽可能的少运行不必要的程序
VMware中选择虚拟机创建位置尽可能选择SSD,hadoop处理数据会大量读取磁盘,ssd在随机存储上会显著加快性能
第三步 配置CentOS:
请直接用root用户登录,如果没有root用户登录,使用
$ sudo passwd
输入密码:
确认密码:
$ su
输入root密码:
获取root权限,在root用户下会省去许多麻烦
设置网卡的IP地址、网关、DNS(此处CentOS跟ubuntu不一样,ubuntu直接在界面右上角选择网络设置就行)
# vi /etc/sysconfig/network-scripts/ifcfg-eno16777736
下面是我的设置:
注意IP地址、网关设置成自己网络的,如果用路由器wifi上网,那么网关就是路由器ip地址,本机ip一定记住
然后安装神器vim:
# yum install vim
配置host:
#vim /etc/hosts
我的配置如下:
这里前面的ip地址是集群节点的ip,后面是名称,以后可以直接用后面的名称访问,等效于ip地址
2、设置SSH免密登录
确认是否安装ssh,即使是minimal版本,CentOS也安装了ssh,如果没有用下面命令安装
# yum install ssh
ssh协议是hadoop集群节点之间通信的根本
首先在root根目录下创建.ssh文件夹:
# mkdir /root/.ssh
# cd ~/.ssh
然后,生成秘钥,此处一定用RSA!!!!!尤其是ubuntu用户,因为ssh服务器配置文件里很可能没有DSA的相关设置
# ssh-keygen
然后一路回车,默认生成了一个无密码的RSA公钥和RSA私钥分别为 id_rsa.pub id_rsa
使用ls命令可以看见生成了三个文件,(其中authorized_keys一般没有):
known_hosts是用来写入信任节点的,否则每次会进行询问
新建authorized_keys文件:
# touch authorized_keys
这个文件用来写入其他节点的rsa公钥,这样,通过非对称加密实现免密登录
首先将本机公钥写入
# cat id_rsa.pub >> authorized_keys
然后ssh登录本机
# ssh master
如果出现(yes/no)输入yes,这是写入known_hosts,只要这一次,以后不需要
这样就成功了:
3、 安装java环境
无论是debain核心还是redhat核心的linux系统都已经安装了openJDK,可以直接使用,但是Oracle有一部分并未开放给openJDK,所以我们还是安装一下Oracle的JDK,去官网下载linux版本的JDK:jdk-8u111-linux-x64.rpm,这里注意要一次下完,因为下载地址不是静态的,并不支持断点续传
卸载openJDK
# rpm -qa | grep
你的openjdk版本
#yum -y remove 上面显示的版本
安装Oracle JDK
# rpm -ivh jdk-8u111-linux-x64.rpm
添加环境变量
# vim /etc/profile
在最后追加
export JAVA_HOME=/usr/java/jdk1.8.0_111
export PATH=$JAVA_HOME/bin:$PATH
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
注意 JAVA_HOME这个变量的路径可能有所不同,写成自己系统的
然后使其生效:
# source /etc/profile
验证:
java -version
出现如下画面表示成功,我安装的时候还是_101现在应该是_111了
4、配置hadoop
在hadoop官网下载-编译好的二进制文件,如果想要学习hadoop的源码,请下载-src的原码版本
# cd
# wget http://mirror.bit.edu.cn/apache/hadoop/common/hadoop-2.7.3/hadoop-2.7.3.tar.gz
解压
# tar -zvf hadoop-2.7.3.tar.gz
配置hadoop环境,这里依然可以用/etc/profile
一样的
# vim ~/.bashrc
追加
export HADOOP_HOME=/root/hadoop-2.7.3
PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin
生效:
source ~/.bashrc
这一步没有也是可以的,但是设置环境变量以后使用/bin 和/sbin中的脚本命令就不用进入这两个文件夹内了
然后我们需要配置hadoop的一些设置
首先进入hadoop文件夹:
# cd /root/hadoop-2.7.3/etc/hadoop
我们需要修改这几个文件:
hadoop-env.sh
yarn-env.sh
core-site.xml
hdfs-site.xml
mapred-site.xml
yarn-site.xml
slaves
一一展开:
1
# vim hadoop-env.sh
javahome这行去掉注释并改成自己的
export JAVA_HOME=/usr/java/jdk1.8.0_111
2
# vim yarn-env.sh
javahome这行去掉注释并改成自己的
export JAVA_HOME=/usr/java/jdk1.8.0_111
3
# vim core-site.xml
改成如下
<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
<!--
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License. See accompanying LICENSE file.
-->
<!-- Put site-specific property overrides in this file. -->
<configuration>
<