基础概念
Hadoop集群具体来说包含两个集群:
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、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 ~]
// 关闭防火墙开机启动
[root@centos6 -1 ~]
// 查看防火墙状态
[root@centos6 -1 ~]
iptables : Firewall is not running.
[root@centos6 -1 ~]
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 ~]
[root@centos6 -2 ~]
[root@centos6 -3 ~]
拷贝公钥
//输入指令后需要输入密码即可(三台服务器均需执行)
[root@centos6 -1 ~]
[root@centos6 -1 ~]
[root@centos6 -1 ~]
[root@centos6 -2 ~]
[root@centos6 -2 ~]
[root@centos6 -2 ~]
[root@centos6 -3 ~]
[root@centos6 -3 ~]
[root@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
同步网络时间
//如果集群时间不一致则使用ntpdate指令进行网络同步
[root@centos6 -1 ~]
[root@centos6 -2 ~]
[root@centos6 -3 ~]
//如果没有该指令可以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-8 u65-linux-x64.tar .gz ...
100 % 177012 KB 16092 KB/sec 00 :00 :11 0 Errors
[root@centos6-1 servers]#
解压安装
[root@centos6 -1 servers]
[root@centos6 -1 servers]
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运行起来
[ - ] - . .
[ - ]
- - - - - - . - .
- - - - - - . .
- - - - - - . - .
- - - - - - . - .
- - - - - - . - .
- - - - - - . - .
- - - - - - . - .
- - - - - - . - .
- - - - - - . - .
- - - - - - . - .
- - - - - - . - .
- - - - - - . - .
- - - - - - . - .
- - - - - - . - .
- - - - - - . - .
- - - - - - . - .
- - - - - - . - .
- - - - - - . - .
- - - - - - . .
- - - - - - . - .
- - - - - - . - .
- - - - - - . - . .
- - - - - - . - . .
- - - - - - .
- - - - - - . - . .
- - - - - - . - . .
- - - - - - . - .
- - - - - - . - .
- - - - - - . - .
[ - ]
配置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标签内配置一下内容
<configuration >
<property >
<name > dfs.replication</name >
<value > 3</value >
</property >
<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标签内配置一下内容
<configuration >
<property >
<name > mapreduce.framework.name</name >
<value > yarn</value >
</property >
</configuration >
配置yarn-site.xml
[root@centos6-1 hadoop]# vi yarn-site.xml
//在configuration标签内配置一下内容
<property >
<name > yarn.resourcemanager.hostname</name >
<value > centos6-1</value >
</property >
<property >
<name > yarn.nodemanager.aux-services</name >
<value > mapreduce_shuffle</value >
</property >
配置slaves文件
[root@centos6-1 hadoop]# vi slaves
centos6-1
centos6-2
centos6-3
11.配置hadoop环境变量
[root@centos6 -1 hadoop-2.7 .6 ]
// 在文件末尾追加
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 ]
// 检查
[root@centos6 -1 hadoop-2.7 .6 ]
Hadoop 2.7 .6
Subversion Unknown -r Unknown
Compiled by root on 2018 -07 -03 T14 :18 Z
Compiled with protoc 2.5 .0
From source with checksum 71e2695531 cb3360ab74598755d036
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
如果不执行此操作,则需要在各个虚拟机上重新再执行以上操作,此操作可以节省大量时间
[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/
[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]
[root@centos6 -2 servers]
[root@centos6 -3 servers]
15.启动hadoop
在centos6-1上执行以下命令
[root@centos6-1 ~]# start-dfs.sh
[root@centos6-1 ~]# start-yarn.sh
16.查看集群各个主机进程
//centos6-1 进程状态
[root@centos6 -1 ~]
3024 Jps
2596 ResourceManager
2700 NodeManager
2207 NameNode
2335 DataNode
[root@centos6 -2 ~]
//centos6-1 进程状态
[root@centos6 -2 ~]
2306 NodeManager
2114 DataNode
2214 SecondaryNameNode
2444 Jps
[root@centos6 -2 ~]
//centos6-3 进程状态
[root@centos6 -3 ~]
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的底层架构。今天就到这,睡了,明天会更好。