一、说明:
到写本文时间为止,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"