目录

搭建环境:

一、前期准备

1.基础准备

2.服务器功能规划(提前规划好,有利于我们后面配置文件的修改和搭建)

3.搭建第一台虚拟机的Hadoop环境

4.克隆虚拟机

5.配置虚拟机之间的映射(三台虚拟机都需要配置)

6.设置SSH无密码登录

7.启动hadoop集群

(1)启动HDFS

(2)启动YARN

(3)查看对应主机的服务是否启动

(4)浏览器查看页面


这是一篇虚拟机上Linux环境下hadoop集群搭建的文章。

本文的思路是:在虚拟机上安装并部署Apache Hadoop 3.1.3版本,介绍它的集群架构组成、各模块协同工作原理、技术细节。

通过安装Hadoop集群,可以让你对它有更好的理解,这对于学习hadoop来说是很好的帮助。

搭建环境:

电脑配置----------Windows 10家庭版,8GB运行内存

(最近学习分布式架构和微服务架构,搭了好多台虚拟机后,明显感觉配置跟不上了,趁着双11,赶紧又下单了一条8GB的内存,回来后就是16GB运行内存了,感觉爽歪歪............)

Linux虚拟机------镜像为 CentOS-7-x86_64-DVD-1810.iso

jdk版本--------jdk-8u74-linux-x64

hadoop版本-------hadoop-3.1.3

(hadoop 官网下载地址:Apache Download Mirrors)

linux远程连接工具--------Xshell-6+FTP(注意:这两个版本需要对应,否则可能会无法使用

因为之前没上传百度网盘,所以上面环境的软件下载地址就不放了。如果有需要,可以留言。

一、前期准备

1.基础准备

在你电脑上装好虚拟机搭建环境,然后装好linux系统,在linux上装好JDK,并且配置好环境,之前我已经写过了,附上原文链接(安装教程:【亲测可用】Linux环境下搭建JDK环境_斗士(Carroll)的博客-CSDN博客),上传jdk(linux版本)安装包,还有hadoop安装包,这里就需要用到linux远程工具Xshell和ftp,所以你得先把工具提前安装好。

(可以分别装三台,也可以装一台,然后克隆两台)

不过克隆的话,需要修改IP地址和主机名,个人推荐先搭好一台的所有环境,然后克隆两台出来,比较省事


2.服务器功能规划(提前规划好,有利于我们后面配置文件的修改和搭建)

zookeeper1zookeeper2zookeeper3
NameNodeResourceManage
DataNodeDataNodeDataNode
NodeManagerNodeManagerNodeManager
HistoryServerSecondaryNameNode

3.搭建第一台虚拟机的Hadoop环境

(默认已经搭建好jdk,并且已经上传,并解压hadoop安装包,我的hadoop解压包放在了  /usr/local/  下

磨叽了这么多,终于开始配置环境了

(1)配置  hadoop-env.sh、mapred-env.sh、yarn-env.sh文件中的JDK路径:

      首先,进入到配置文件目录下 

(建议把 hadoop解压到  /usr/local/   文件夹下面,便于参考我的操作,一般企业中,约定 /usr/local/  目录下就是放安装的软件的)

cd /usr/local/hadoop/etc/hadoop   (修改的几乎所有hadoop配置文件都在这个目录)

然后分别进入hadoop-env.sh、mapred-env.sh、yarn-env.sh三个文件,进行编辑

vi  hadoop-env.sh
vi  mapred-env.sh
vi  yarn-env.sh

进入一个文件内,就将下面这句jdk配置路径放入,保存,关闭

export JAVA_HOME=/usr/lib/jvm/jdk1.8.0_74   (这是我的jdk  bin目录之前的路径,具体你的还需要看你jdk安装在了哪里)

(2)配置core-site.xml

(配置之前,你先要去 这儿 /usr/local/hadoop/  创建data文件夹,然后在data文件夹下创建tmp文件夹。

      具体可以直接在  FTP上操作(这个比较简单一点,和Windows环境下一模一一样),当然也可以拿命令行来操作)

vi  core-site.xml   (打开后,编辑文件,将下面的内容放入,下同)
<configuration>
<property>
   <name>fs.defaultFS</name>
   <value>hdfs://zookeeper1:9000</value>
 </property>
 <property>
   <name>hadoop.tmp.dir</name>
   <value>/usr/local/hadoop/data/tmp</value>
 </property>
</configuration>

注意:如果你的主机名不是 zookeeper1  ,上面的配置文件,你要改成你的主机名(下同)

fs.defaultFS为NameNode的地址。

hadoop.tmp.dir为hadoop临时目录的地址,默认情况下,NameNode和DataNode的数据文件都会存在这个目录下的对应子目录下。应该保证此目录是存在的,如果不存在,先创建。

(3)配置hdfs-site.xml

 vi   hdfs-site.xml   (打开后,编辑文件,将下面的内容放入)
<configuration>
<property>
   <name>dfs.namenode.secondary.http-address</name>
   <value>zookeeper3:50090</value>
 </property>
</configuration>

dfs.namenode.secondary.http-address是指定secondaryNameNode的http访问地址和端口号,因为在规划中,我们将zookeeper3规划为SecondaryNameNode服务器。

所以这里设置为:zookeeper3:50090

(4) 配置workers

vi  workers
zookeeper1
zookeeper2
zookeeper3

workers文件是指定HDFS上有哪些DataNode节点。

(5) 配置yarn-site.xml

 vi   yarn-site.xml
<configuration>
   <property>
        <name>yarn.nodemanager.aux-services</name>
        <value>mapreduce_shuffle</value>
    </property>
    <property>
        <name>yarn.resourcemanager.hostname</name>
        <value>zookeeper2</value>
    </property>
    <property>
        <name>yarn.log-aggregation-enable</name>
        <value>true</value>
    </property>
    <property>
        <name>yarn.log-aggregation.retain-seconds</name>
        <value>106800</value>
    </property>
</configuration>

根据规划yarn.resourcemanager.hostname这个指定resourcemanager服务器指向zookeeper2

yarn.log-aggregation-enable是配置是否启用日志聚集功能。

yarn.log-aggregation.retain-seconds是配置聚集的日志在HDFS上最多保存多长时间。

(6)配置mapred-site.xml

vi  mapred-site.xml
<configuration>
    <property>
        <name>mapreduce.framework.name</name>
        <value>yarn</value>
    </property>
    <property>
        <name>mapreduce.jobhistory.address</name>
        <value>zookeeper1:10020</value>
    </property>
    <property>
        <name>mapreduce.jobhistory.webapp.address</name>
        <value>zookeeper1:19888</value>
    </property>
</configuration>


mapreduce.framework.name设置mapreduce任务运行在yarn上。
mapreduce.jobhistory.address是设置mapreduce的历史服务器安装在zookeeper1机器上。
mapreduce.jobhistory.webapp.address是设置历史服务器的web页面地址和端口号。


(7)配置Hadoop在linux系统中的环境变量(和jdk一样的道理)

cd  /etc
vi  profile
添加下面的内容
export HADOOP_HOME=/usr/local/hadoop  (这儿也需要看你hadoop的安装路径)
export PATH=$PATH:$HADOOP_HOME/bin
export PATH=$PATH:$HADOOP_HOME/sbin

4.克隆虚拟机

(把搭建好的这台虚拟机在克隆2台出来,集群至少需要3台,而且集群的数量一般都奇数,是因为内部的选举机制)

克隆之后就是修改克隆好的两台虚拟机的主机名和ip了

修改主机名:  

vi  /etc/sysconfig/network

  将    HOSTNAME= ****    改为    HOSTNAME=zookeeper1(这里你可以改为你想要的主机名)

下文我的主机名分别为 zookeeper1、zookeeper2、zookeeper3(因为之前我已经搭建过zookeepr集群环境,所以主机名就懒的改了)

修改ip地址

vi /etc/sysconfig/network-scripts/ifcfg-ens33
TYPE=Ethernet
PROXY_METHOD=none
BROWSER_ONLY=no
BOOTPROTO=static   (这儿改为static,也就是静态ip,负责重启虚拟机ip地址可能就会变)
DEFROUTE=yes
IPV4_FAILURE_FATAL=no
IPV6INIT=yes
IPV6_AUTOCONF=yes
IPV6_DEFROUTE=yes
IPV6_FAILURE_FATAL=no
IPV6_ADDR_GEN_MODE=stable-privacy
NAME=ens33
UUID=9624e7ae-2a9d-4ba5-a20a-902971af602a
DEVICE=ens33
ONBOOT=yes      (这儿改为 yes)
IPADDR=192.168.25.132  (这儿改为你自己的ip地址)
NETMASK=255.255.255.0
GATEWAY=192.168.25.1
DNS1=119.29.29.29

5.配置虚拟机之间的映射(三台虚拟机都需要配置

vi /etc/hosts

文件内,添加如下内容(具体还要看你的三台虚拟机的主机名和ip地址对应分别为,下面的只是我自己的

192.168.25.132  zookeeper1
192.168.25.131  zookeeper2
192.168.25.128  zookeeper3

6.设置SSH无密码登录

Hadoop集群中的各个机器间会相互地通过SSH访问,每次访问都输入密码是不现实的,所以要配置各个机器间的

SSH是无密码登录的。

1、 在zookeeper1上生成公钥

ssh-keygen -t rsa

一路回车,都设置为默认值,然后再当前用户的Home目录下的.ssh目录中会生成公钥文件(id_rsa.pub)和私钥文件(id_rsa)

2、 分发公钥(分别输入,分发到三台)

ssh-copy-id zookeeper1
ssh-copy-id zookeeper2
ssh-copy-id zookeeper3

3、 分别设置zookeeper2、zookeeper3到其他机器的无密钥登录

同样的在zookeeper2、zookeeper3上生成公钥和私钥后,将公钥分发到三台机器上。

到这儿,三台虚拟机的hadoop环境已经搭建好了,集群也已经创建好了

7.启动hadoop集群

三台主机都 进入到  /usr/local/hadoop   目录下

(1)启动HDFS

在zookeeper1主机中分别输入

sbin/hadoop-daemon.sh start namenode

sbin/hadoop-daemon.sh start datanode

在zookeeper2主机中输入

sbin/hadoop-daemon.sh start datanode

在zookeeper3主机中输入

sbin/hadoop-daemon.sh start  datanode

sbin/hadoop-daemon.sh start  secondarynamenode

(2)启动YARN

在zookeeper2中分别输入

sbin/yarn-daemon.sh start resourcemanager

sbin/yarn-daemon.sh start nodemanager

在zookeeper1中输入

sbin/yarn-daemon.sh start nodemanager

在zookeeper3中输入

bin/yarn-daemon.sh start nodemanager

sbin/yarn-daemon.sh start  secondarynamenode

(3)查看对应主机的服务是否启动

    输入   jps

   看看是否和  2.服务器功能规划  对应的服务一样

(4)浏览器查看页面

   查看HDFS Web页面

   http://192.168.25.128:50090/

   查看YARN Web 页面

   http://192.168.25.132:9870/

至此,hadoop集群搭建完毕!!!

当然,以上只是我自己的搭建过程,相信会有很多人在搭建过程中遇到各种各样的问题,欢迎大家留言

我会尽我所能,尽量帮大家解决....

如有其它问题,欢迎大家留言,我们一起讨论,一起学习,一起进步 

GitHub 加速计划 / li / linux-dash
10.39 K
1.2 K
下载
A beautiful web dashboard for Linux
最近提交(Master分支:2 个月前 )
186a802e added ecosystem file for PM2 4 年前
5def40a3 Add host customization support for the NodeJS version 4 年前
Logo

旨在为数千万中国开发者提供一个无缝且高效的云端环境,以支持学习、使用和贡献开源项目。

更多推荐