hadoop集群搭建详细过程(完全分布式)

目录

 

一、准备

二、具体过程

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:

hadoop集群搭建详细过程(完全分布式)hadoop集群搭建详细过程(完全分布式)

接着打开NAT设置查看网关地址,然后打开机器的网络设置(没有图形界面的只能百度怎么用命令行改本机IP了),更改本机的IP地址:

hadoop集群搭建详细过程(完全分布式)

点击设置按钮后出现下图界面,切换到IPv4的选项卡,按照图片设置(这的IP需要你根据自己vmvare的IP去设置,不然会出现上不了网的情况),重启后IP更新。

hadoop集群搭建详细过程(完全分布式)

在克隆完三台机器后按上述操作将对应机器再次修改。

注:网上的教程有的会让新建用户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-****** -t rsa -P ''

在.ssh文件夹下会有id_rsa与id_rsa.pub两个文件,执行:

cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys

将公钥保存到认证文件中(认证文件名一定不能打错),最后将其余两台机器的公钥也复制进来,组成免密访问。

结果如下:

hadoop集群搭建详细过程(完全分布式)

使用“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

成功信息:

hadoop集群搭建详细过程(完全分布式)

 

4.安装Hadoop

Hadoop有三种运行模式,这只讲完全分布式的配置。

具体三种模式可见:https://blog.csdn.net/zane3/article/details/79829175

解压官网下载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集群搭建详细过程(完全分布式)

接着配置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文件系统

出现下面结果就算成功

hadoop集群搭建详细过程(完全分布式)

②使用start-all.sh启动Hadoop集群

从日志可以看出集群配置是否成功:

hadoop集群搭建详细过程(完全分布式)

输入:jps  查看集群的Hadoop进程

master上:

hadoop集群搭建详细过程(完全分布式)

slave上:

hadoop集群搭建详细过程(完全分布式)

stop-all.sh停止集群(具体命令可以看Hadoop包下的/etc/hadoop目录)

三、参考文章

[1] 详解VMware12使用三台虚拟机Ubuntu16.04系统搭建hadoop-2.7.1+hbase-1.2.4(完全分布式)

https://www.jb51.net/article/104427.htm

[2] Hadoop2.7.3+Spark2.1.0完全分布式集群搭建过程

https://www.cnblogs.com/zengxiaoliang/p/6478859.html

[3] Ubuntu系统环境变量详解

https://blog.csdn.net/netwalk/article/details/9455893