目录
一、准备
二、具体过程
1.三台虚拟机的初始设置
2.配置SSH免密登录
3.安装JDK
4.安装Hadoop
三、参考文章
一、准备
1.vmvare虚拟机工具
2.Ubuntu系统镜像
3.hadoop安装包(官网下载:https://hadoop.apache.org/releases.html,要适配机器就下载源码自己编译,否则下载已经编译的,会减少工作量)
4.Ubuntu下的jdk(官网下载:https://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html)
二、具体过程
1.三台虚拟机的初始设置
搭建分布式主要用三台虚拟机:master、slave1、slave2,可以先不进行克隆,等一台机器配置好后克隆再到相应的机器去修改。
(1)配置名称:
sudo gedit /etc/hostname
(重启后生效,可以用source /etc/hostname立即生效)
注:使用
hostname 机器名
只是临时起作用,重启后机器还是原先的名称
(2)配置IP
使用如下命令(使用sudoers是为了让用户获得修改权限):
sudo gedit /etc/hosts
192.168.78.151 master
192.168.78.152 slave1
192.168.78.153 slave2
上述是对应机器的IP,为了机器能找到集群中的其他机器,这的IP的子网地址不能随便写必须先打开你的vmvare查看自己的网卡的子网网段和子网网关后设置本机IP:
接着打开NAT设置查看网关地址,然后打开机器的网络设置(没有图形界面的只能百度怎么用命令行改本机IP了),更改本机的IP地址:
点击设置按钮后出现下图界面,切换到IPv4的选项卡,按照图片设置(这的IP需要你根据自己vmvare的IP去设置,不然会出现上不了网的情况),重启后IP更新。
在克隆完三台机器后按上述操作将对应机器再次修改。
注:网上的教程有的会让新建用户Hadoop,然后给该用户加权限,编辑/etc/sudoers文件(复制root那一行,并将root改为你的用户名放在root行下)。如果你真的不小心编辑了,恭喜你,很可能出错,编辑该文件必须使用系统自带的visudo工具,进入后的操作标签在下方会给出,注意是Ctrl+命令名。
2.配置SSH免密登录
打开终端输入"ssh"若是没有出现命令提示代表没有安装,则按如下步骤安装。
sudo apt-get install ssh
查看当前用户目录是否存在".ssh"文件夹,不存在则新建一个(当前路径不在该目录,可使用“cd ~”切换或使用路径查看)
ls -la .ssh #查看.ssh隐藏目录是否存在
注:正常用当前用户创建该文件夹是不会有权限问题的,若有使用"sudo chmod -R 用户名 .ssh",添加权限
使用下面的命令生成公私秘钥
ssh-keygen -t rsa -P ''
在.ssh文件夹下会有id_rsa与id_rsa.pub两个文件,执行:
cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
将公钥保存到认证文件中(认证文件名一定不能打错),最后将其余两台机器的公钥也复制进来,组成免密访问。
结果如下:
使用“ssh master/slave1/slave2”测试是否配置成功。
注:章节一已交代JDK与Hadoop压缩包下载地址
3.安装JDK
解压下载的jdk文件
tar -zxvf jdk.tar.gz
移动解压的jdk文件夹到/usr/lib目录(也可放在/usr/local目录下,目录可自定义)
mv ./jdk /usr/lib
配置JDK的环境变量(Ubuntu环境变量内容详解,参见参考文章3)
编辑profile文件,在文件尾部加入
sudo gedit /etc/profile
下面的代码
#set java environment
export JAVA_HOME=/usr/lib/jvm/jdk1.8.0_191 #注意jdk的安装目录为你自己设置的目录,Hadoop的同理
export JRE_HOME=${JAVA_HOME}/jre
export CLASSPATH=.:${JAVA_HOME}/jre
PATH=${JAVA_HOME}/bin:$PATH
若是没有编辑保存权限,可能该文件对当前用户仅是可读的
sudo chmod 777 /etc/profile
添加权限后重复环境变量的设置
PS:/etc/environment是设置整个系统的环境,而/etc/profile是设置所有用户的环境,前者与登录用户无关,后者与登录用户有关。
对于用户的SHELL初始化而言是先执行/etc/profile, 再读取文件/etc/environment.
对整个系统而言是先执行/etc/environment
/etc/enviroment -->/etc/profile --> $HOME/.profile -->$HOME/.env (如果存在)
/etc/profile 是所有用户的环境变量
/etc/enviroment是系统的环境变量
登陆系统时shell读取的顺序应该是
/etc/profile ->/etc/enviroment -->$HOME/.profile-->$HOME/.env
输入下面的命令测试是否配置成功:
java -version
成功信息:
4.安装Hadoop
Hadoop有三种运行模式,这只讲完全分布式的配置。
具体三种模式可见:
解压官网下载Hadoop的压缩包
tar -zxvf hadoop.tar.gz
将Hadoop移动到/usr/local目录下
mv ./hadoop /usr/local
打开/etc/profile文件编辑
export HADOOP_HOME=/usr/local/hadoop-2.7.7
PATH=${JAVA_HOME}/bin:$HADOOP_HOME/bin:$HADOOP_HOME/sbin:$PATH
最后结果如下:
#set java environment
export JAVA_HOME=/usr/lib/jvm/jdk1.8.0_191
export JRE_HOME=${JAVA_HOME}/jre
export CLASSPATH=.:${JAVA_HOME}/jre
export HADOOP_HOME=/usr/local/hadoop-2.7.7
PATH=${JAVA_HOME}/bin:$HADOOP_HOME/bin:$HADOOP_HOME/sbin:$PATH
编辑Hadoop目录下的子目录/etc/Hadoop目录文件:
Hadoop-env.sh文件:
将JAVA_HOME设为jdk所在绝对路径(否则运行时可能会出现找不到的情况)
接着配置Hadoop的四个配置文件(core-site.xml ,mapred-site.xml,hdfs-site.xml,yarn-site.xml,对应Hadoop的四个主要组成部分:核心包,HDFS文件系统,MapReduce模型,yarn资源调度框架)
若是没有该文件,使用复制命令从当前目录下模板复制
cp hadoop/etc/hadoop/xxx.site.xml.template hadoop/etc/hadoop/xxx.site.xml
core-site.xml的配置:
<configuration>
<property>
<name>fs.default.name</name>
<value>hdfs://master:9000</value>
</property>
<property>
<name>hadoop.tmp.dir</name>
<value>/usr/local/hadoop-2.7.7/tmp</value> //配置为/tmp目录,重启后会出现namenode不启动情况,原因是/tmp目录重启后被清空
</property>
</configuration>
hdfs-site.xml配置:
<configuration>
<property>
<name>dfs.replication</name>
<value>2</value>//节点数
</property>
</configuration>
mapred-site.xml配置:
<configuration>
<property>
<name>mapred.job.tracker</name>
<value>master:9001</value>
</property>
</configuration>
yarn-site.xml配置(初始可不设置):
<configuration>
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
<property>
<name>yarn.resourcemanager.address</name>
<value>Master:8032</value>
</property>
<property>
<name>yarn.resourcemanager.scheduler.address</name>
<value>Master:8030</value>
</property>
<property>
<name>yarn.resourcemanager.resource-tracker.address</name>
<value>Master:8031</value>
</property>
<property>
<name>yarn.resourcemanager.admin.address</name>
<value>Master:8033</value>
</property>
<property>
<name>yarn.resourcemanager.webapp.address</name>
<value>Master:8088</value>
</property>
</configuration>
在该目录下(/etc/hadoop)添加master与slaves文件(所有者为当前用户)
master文件内容:
master
slaves文件内容:
slaves1
slaves2
最后使用克隆将从机复制并按上述步骤重新命名
结果测试:
①在master节点输入
hadoop namenode -format #格式化HDFS文件系统
出现下面结果就算成功
②使用start-all.sh启动Hadoop集群
从日志可以看出集群配置是否成功:
输入:jps 查看集群的Hadoop进程
master上:
slave上:
stop-all.sh停止集群(具体命令可以看Hadoop包下的/etc/hadoop目录)
三、参考文章
[1] 详解VMware12使用三台虚拟机Ubuntu16.04系统搭建hadoop-2.7.1+hbase-1.2.4(完全分布式)
[2] Hadoop2.7.3+Spark2.1.0完全分布式集群搭建过程
[3] Ubuntu系统环境变量详解