设为首页 加入收藏

TOP

Hadoop——分布式集群搭建
2019-05-10 00:21:19 】 浏览:71
Tags:Hadoop 分布式 集群 搭建
版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/weixin_37490221/article/details/80913647

基础概念

Hadoop集群具体来说包含两个集群:

  • HDFS 集群
  • YARN 集群

HDFS集群负责海量数据的存储,集群中的角色主要有:

  • NameNode
  • DataNode
  • SecondaryNameNode

YARN集群负责海量数据运算时的资源调度,集群中的角色主要有:

  • ResourceManager
  • NodeManager

这篇博文的目的是让我们的hadoop集群跑起来,因为后面的所有hadoop的操作都基于它。原理和知识点博主会在后面章节铺开来说,这里先做了解。

1.准备服务器

- 192.168.214.150   centos6-1
- 192.168.214.151   centos6-2
- 192.168.214.152   centos6-3

先安装一台虚拟机:使用VMware安装CentOS
再克隆两台虚拟机:VMware虚拟机克隆CentOS系统

2.检查虚拟机网络

如果严格按照博主使用VMware安装CentOS教程走,网络配置在系统安装完成后即设置成功。如果网络还是ping不通,可以通过修改ifcfg-eth0文件重新配置,只要能够做到虚拟机之间能够互相ping通,同时能够ping通外网即可

vi /etc/sysconfig/network-scripts/ifcfg-eth0

3.自定义主机名

//修改文件内容
[root@centos6-1 ~]# vi /etc/sysconfig/network
//修改内容如下
NETWORKING=yes
HOSTNAME=centos6-1  //centos6-1是博主自己的设置,博主本来想设置成zaomianbao6-1的

三台虚拟机均设置,博主的设置为:centos6-1、centos6-2、centos6-3

4.主机名IP映射

//修改一下文件
[root@centos6-1 ~]# vi /etc/hosts
//在文件末尾追加以下内容
192.168.214.150 centos6-1
192.168.214.151 centos6-2
192.168.214.152 centos6-3

三台虚拟机设置相同

5.关闭防火墙

//关闭防火墙
[root@centos6-1 ~]# service iptables stop
//关闭防火墙开机启动
[root@centos6-1 ~]# chkconfig iptables off
//查看防火墙状态
[root@centos6-1 ~]# service iptables status
iptables: Firewall is not running.
[root@centos6-1 ~]# chkconfig iptables --list
iptables        0:off   1:off   2:off   3:off   4:off   5:off   6:off
[root@centos6-1 ~]# 

博主防火墙已关闭,你们看到的信息和我的有可能不一样,因为你们防火墙有可能没有关闭,但是不管怎样,只要执行以上命令即可

6.ssh免密登录

ssh免密登录是为3台虚拟机之间无需登录即可自由通信设置的,因为在hadoop集群中需要保证虚拟机之间能够互相访问

生成rsa公私钥对(三台服务器均需执行)

[root@centos6-1 ~]# ssh-keygen -t rsa   //输入该指令然后一路回车即可
[root@centos6-2 ~]# ssh-keygen -t rsa
[root@centos6-3 ~]# ssh-keygen -t rsa

拷贝公钥

//输入指令后需要输入密码即可(三台服务器均需执行)
[root@centos6-1 ~]# ssh-copy-id centos6-1
[root@centos6-1 ~]# ssh-copy-id centos6-2
[root@centos6-1 ~]# ssh-copy-id centos6-3
[root@centos6-2 ~]# ssh-copy-id centos6-1
[root@centos6-2 ~]# ssh-copy-id centos6-2
[root@centos6-2 ~]# ssh-copy-id centos6-3
[root@centos6-3 ~]# ssh-copy-id centos6-1
[root@centos6-3 ~]# ssh-copy-id centos6-2
[root@centos6-3 ~]# ssh-copy-id centos6-3

7.同步集群时间

查询集群各主机的时间

[root@centos6-1 ~]# date
Tue Jul  3 23:21:04 CST 2018
[root@centos6-2 ~]# date
Tue Jul  3 23:21:11 CST 2018
[root@centos6-3 ~]# date
Tue Jul  3 23:20:51 CST 2018
//可以发现博主3台虚拟机的时间不一致

同步网络时间

//如果集群时间不一致则使用ntpdate指令进行网络同步
[root@centos6-1 ~]# ntpdate cn.pool.ntp.org
[root@centos6-2 ~]# ntpdate cn.pool.ntp.org
[root@centos6-3 ~]# ntpdate cn.pool.ntp.org
//如果没有该指令可以yum安装
yum install -y ntpdate

8. 安装JDK

上传已经下载好的JDK压缩包(三种方式实现Linux的文件上传下载)

[root@centos6-1 servers]# rz
rz waiting to receive.
Starting zmodem transfer.  Press Ctrl+C to cancel.
Transferring jdk-8u65-linux-x64.tar.gz...
  100%  177012 KB    16092 KB/sec    00:00:11       0 Errors  
[root@centos6-1 servers]#

解压安装

[root@centos6-1 servers]# tar -zvxf jdk-8u65-linux-x64.tar.gz
[root@centos6-1 servers]# ll
total 8
drwxr-xr-x.  8 root root 4096 Jun 29 01:54 jdk1.8.0_65
drwxr-xr-x. 10 root root 4096 Jun 29 01:36 zookeeper-3.4.5
[root@centos6-1 servers]# 

配置环境变量

//修改文件
[root@centos6-1 ~]# vi /etc/profile
//文件末尾追加以下内容
export JAVA_HOME=/export/servers/jdk1.8.0_65
export PATH=$PATH:$JAVA_HOME/bin
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
//保存后更新环境变量
[root@centos6-1 ~]# source /etc/profile
//检查
[root@centos6-1 ~]# java -version
java version "1.8.0_65"
Java(TM) SE Runtime Environment (build 1.8.0_65-b17)
Java HotSpot(TM) 64-Bit Server VM (build 25.65-b01, mixed mode)
[root@centos6-1 ~]# 

9.解压安装hadoop

这里安装博主编译好的hadoop2.7.6安装包,教程:Hadoop——源码编译

  • 注:hadoop官网是有提供hadoop的编译版本的安装包的,但是hadoop的这个编译后的安装包是兼容各个操作系统的最大公约数版本,如果你使用官网提供的安装包,在使用的过程中有可能会遇到一些本地库异常等问题,所以博主建议大家自己下载源码包,在自己的系统上编译,做到最大程度上与自己的系统兼容
[root@centos6-1 ~]# cd /export/servers/hadoop-2.7.6-src/hadoop-dist/target/
[root@centos6-1 target]# ll
total 584076
drwxr-xr-x. 2 root root      4096 Jul  3 22:31 antrun
drwxr-xr-x. 3 root root      4096 Jul  3 22:31 classes
-rw-r--r--. 1 root root      1872 Jul  3 22:31 dist-layout-stitching.sh
-rw-r--r--. 1 root root       645 Jul  3 22:31 dist-tar-stitching.sh
drwxr-xr-x. 9 root root      4096 Jul  3 22:31 hadoop-2.7.6
-rw-r--r--. 1 root root 198929351 Jul  3 22:31 hadoop-2.7.6.tar.gz
-rw-r--r--. 1 root root     26521 Jul  3 22:31 hadoop-dist-2.7.6.jar
-rw-r--r--. 1 root root 399032461 Jul  3 22:31 hadoop-dist-2.7.6-javadoc.jar
-rw-r--r--. 1 root root     24049 Jul  3 22:31 hadoop-dist-2.7.6-sources.jar
-rw-r--r--. 1 root root     24049 Jul  3 22:31 hadoop-dist-2.7.6-test-sources.jar
drwxr-xr-x. 2 root root      4096 Jul  3 22:31 javadoc-bundle-options
drwxr-xr-x. 2 root root      4096 Jul  3 22:31 maven-archiver
drwxr-xr-x. 3 root root      4096 Jul  3 22:31 maven-shared-archive-resources
drwxr-xr-x. 3 root root      4096 Jul  3 22:31 test-classes
drwxr-xr-x. 2 root root      4096 Jul  3 22:31 test-dir
[root@centos6-1 target]# cp hadoop-2.7.6.tar.gz /export/servers/
[root@centos6-1 target]# cd /export/servers/
[root@centos6-1 servers]# ll
total 240184
drwxr-xr-x.  6 root   root       4096 Jul  3 21:39 apache-maven-3.5.4
drwxr-xr-x. 19 root   root       4096 Apr 18 09:17 hadoop-2.7.6-src
-rwxrwxrwx.  1 root   root   46994526 Jul  2 17:02 hadoop-2.7.6-src.tar.gz
-rw-r--r--.  1 root   root  198929351 Jul  6 00:09 hadoop-2.7.6.tar.gz
drwxr-xr-x.  8 uucp     143      4096 Oct  7  2015 jdk1.8.0_65
drwxr-xr-x. 10 109965  5000      4096 Jul  3 21:54 protobuf-2.5.0
drwxr-xr-x. 10    501 games      4096 Nov  5  2012 zookeeper-3.4.5
[root@centos6-1 servers]# tar -zvxf hadoop-2.7.6.tar.gz

10.配置hadoop

注:hadoop2.x的配置文件目录:$HADOOP_HOME/etc/hadoop。博主的在/export/servers/hadoop-2.7.6/etc/hadoop下

  • 以下会提到一些专业词汇,一开始可以不用关注,我们第一目的是先让hadoop运行起来
[root@centos6-1 ~]# cd /export/servers/hadoop-2.7.6/etc/hadoop/
[root@centos6-1 hadoop]# ll
total 152
//以下都是hadoop的配置文件,我们只需配置其中的6个文件
-rw-r--r--. 1 root root  4436 Jul  3 22:31 capacity-scheduler.xml
-rw-r--r--. 1 root root  1335 Jul  3 22:31 configuration.xsl
-rw-r--r--. 1 root root   318 Jul  3 22:31 container-executor.cfg
-rw-r--r--. 1 root root   774 Jul  3 22:31 core-site.xml
-rw-r--r--. 1 root root  3670 Jul  3 22:31 hadoop-env.cmd
-rw-r--r--. 1 root root  4224 Jul  3 22:31 hadoop-env.sh
-rw-r--r--. 1 root root  2598 Jul  3 22:31 hadoop-metrics2.properties
-rw-r--r--. 1 root root  2490 Jul  3 22:31 hadoop-metrics.properties
-rw-r--r--. 1 root root  9683 Jul  3 22:31 hadoop-policy.xml
-rw-r--r--. 1 root root   775 Jul  3 22:31 hdfs-site.xml
-rw-r--r--. 1 root root  1449 Jul  3 22:31 httpfs-env.sh
-rw-r--r--. 1 root root  1657 Jul  3 22:31 httpfs-log4j.properties
-rw-r--r--. 1 root root    21 Jul  3 22:31 httpfs-signature.secret
-rw-r--r--. 1 root root   620 Jul  3 22:31 httpfs-site.xml
-rw-r--r--. 1 root root  3518 Jul  3 22:31 kms-acls.xml
-rw-r--r--. 1 root root  1527 Jul  3 22:31 kms-env.sh
-rw-r--r--. 1 root root  1631 Jul  3 22:31 kms-log4j.properties
-rw-r--r--. 1 root root  5540 Jul  3 22:31 kms-site.xml
-rw-r--r--. 1 root root 11801 Jul  3 22:31 log4j.properties
-rw-r--r--. 1 root root   951 Jul  3 22:31 mapred-env.cmd
-rw-r--r--. 1 root root  1383 Jul  3 22:31 mapred-env.sh
-rw-r--r--. 1 root root  4113 Jul  3 22:31 mapred-queues.xml.template
-rw-r--r--. 1 root root   758 Jul  3 22:31 mapred-site.xml.template
-rw-r--r--. 1 root root    10 Jul  3 22:31 slaves
-rw-r--r--. 1 root root  2316 Jul  3 22:31 ssl-client.xml.example
-rw-r--r--. 1 root root  2697 Jul  3 22:31 ssl-server.xml.example
-rw-r--r--. 1 root root  2191 Jul  3 22:31 yarn-env.cmd
-rw-r--r--. 1 root root  4567 Jul  3 22:31 yarn-env.sh
-rw-r--r--. 1 root root   690 Jul  3 22:31 yarn-site.xml
[root@centos6-1 hadoop]# 

配置hadoop-env.sh

//修改文件
[root@centos6-1 hadoop]# vi hadoop-env.sh
//在文件末尾追加
export JAVA_HOME=/export/servers/jdk1.8.0_65

配置core-site.xml

//修改文件
[root@centos6-1 hadoop]# vi core-site.xml
//指定HADOOP所使用的文件系统schema(URI),HDFS的NameNode的地址(在configuration标签内配置)。和指定hadoop运行时产生文件的存储目录,默认/tmp/hadoop-${user.name}
<configuration>
<property>
        <name>fs.defaultFS</name>
        <value>hdfs://centos6-1:9000</value>
</property>
<property>
    <name>hadoop.tmp.dir</name>
    <value>/export/data/hadoopdata</value>
</property>
</configuration>

配置hdfs-site.xml

//修改文件
[root@centos6-1 hadoop]# vi hdfs-site.xml
//在configuration标签内配置一下内容
<!-- 指定HDFS副本的数量 -->
<configuration>
<property>
    <name>dfs.replication</name>
    <value>3</value>
</property>
<!-- secondary namenode 所在主机的主机名和端口 -->
<property>
    <name>dfs.namenode.secondary.http-address</name>
    <value>centos6-2:50090</value>
</property>
</configuration>

配置mapred-site.xml

[root@centos6-1 hadoop]# cp mapred-site.xml.template mapred-site.xml
[root@centos6-1 hadoop]# vi mapred-site.xml
//在configuration标签内配置一下内容
<!-- 指定mapreduce运行时框架,这里指定在yarn上,默认是local -->
<configuration>
<property>
        <name>mapreduce.framework.name</name>
        <value>yarn</value>
</property>
</configuration>

配置yarn-site.xml

[root@centos6-1 hadoop]# vi yarn-site.xml
//在configuration标签内配置一下内容
<!-- 指定YARN的ResourceManager所在的地址 -->
<property>
    <name>yarn.resourcemanager.hostname</name>
    <value>centos6-1</value>
</property>

<!-- NodeManager上运行的附属服务。需配置成mapreduce_shuffle,才可运行MapReduce程序,默认值:"" -->
<property>
    <name>yarn.nodemanager.aux-services</name>
    <value>mapreduce_shuffle</value>
</property>

配置slaves文件

[root@centos6-1 hadoop]# vi slaves
//删除里面的localhost
//并添加一下内容(集群主机名,一行一个)
centos6-1
centos6-2
centos6-3

11.配置hadoop环境变量

[root@centos6-1 hadoop-2.7.6]# vi /etc/profile
//在文件末尾追加
export HADOOP_HOME=/export/servers/hadoop-2.7.6
export PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin
//更新环境变量
[root@centos6-1 hadoop-2.7.6]# source /etc/profile
//检查
[root@centos6-1 hadoop-2.7.6]# hadoop version
Hadoop 2.7.6
Subversion Unknown -r Unknown
Compiled by root on 2018-07-03T14:18Z
Compiled with protoc 2.5.0
From source with checksum 71e2695531cb3360ab74598755d036
This command was run using /export/servers/hadoop-2.7.6/share/hadoop/common/hadoop-common-2.7.6.jar
[root@centos6-1 hadoop-2.7.6]# 

13.分发hadoop到centos6-1和centos6-2

如果不执行此操作,则需要在各个虚拟机上重新再执行以上操作,此操作可以节省大量时间

//分发JDK
[root@centos6-1 hadoop-2.7.6]# scp -r /export/servers/jdk1.8.0_65 root@centos6-2:/export/servers/
[root@centos6-1 hadoop-2.7.6]# scp -r /export/servers/jdk1.8.0_65 root@centos6-3:/export/servers/
//分发hadoop
[root@centos6-1 hadoop-2.7.6]# scp -r /export/servers/hadoop-2.7.6/ root@centos6-2:/export/servers/
[root@centos6-1 hadoop-2.7.6]# scp -r /export/servers/hadoop-2.7.6/ root@centos6-3:/export/servers/
//分发环境变量的配置文件
[root@centos6-1 hadoop-2.7.6]# scp -r /etc/profile root@centos6-2:/etc/
[root@centos6-1 hadoop-2.7.6]# scp -r /etc/profile root@centos6-3:/etc/
//更新环境变量
[root@centos6-2 servers]# source /etc/profile
[root@centos6-3 servers]# source /etc/profile

14.格式化namenode

[root@centos6-1 servers]# hdfs namenode -format
[root@centos6-2 servers]# hdfs namenode -format
[root@centos6-3 servers]# hdfs namenode -format

15.启动hadoop

在centos6-1上执行以下命令

//启动HDFS
[root@centos6-1 ~]# start-dfs.sh
//启动YARN
[root@centos6-1 ~]# start-yarn.sh 

16.查看集群各个主机进程

//centos6-1进程状态
[root@centos6-1 ~]# jps
3024 Jps
2596 ResourceManager
2700 NodeManager
2207 NameNode
2335 DataNode
[root@centos6-2 ~]# 
//centos6-1进程状态
[root@centos6-2 ~]# jps
2306 NodeManager
2114 DataNode
2214 SecondaryNameNode
2444 Jps
[root@centos6-2 ~]# 
//centos6-3进程状态
[root@centos6-3 ~]# jps
2240 NodeManager
2375 Jps
2120 DataNode
[root@centos6-3 ~]# 

进程分布

主机 NameNode DataNode SecondaryNameNode ResourceManager NodeManager
centos6-1
centos6-2
centos6-3

注:以上进程与主机的分布是通过上面的配置实现的,这篇博文不做讲解,后面章节会展开来说。

17.web访问hadoop

192.168.214.150:8088访问ResourceManager服务
这里写图片描述
192.168.214.150:50070访问NameNode服务
这里写图片描述

18.总结

hadoop的集群已经搭建起来了,后面我们将开始深入hadoop的底层架构。今天就到这,睡了,明天会更好。

】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
上一篇深入hadoop1-1 hadoop-hdfs 下一篇Hadoop提交作业------>hadoop..

最新文章

热门文章

Hot 文章

Python

C 语言

C++基础

大数据基础

linux编程基础

C/C++面试题目