Hadoop集群的搭建

记录下hadoop2.6.5集群的整个搭建流程,以免自己忘了,集由于Hadoop是依赖java的,所以我们也需要准好jdk。

前期准备:

需要准备好服务器,jdk,hadoop安装包,可以去官网下载,在学习搭建的时候用的是centos6.8,jdk1.8,hadoop2.6.5,如果不知道怎么下载可以去下边的地址下载。
centos6.8的包:https://pan.baidu.com/s/1VTuIR7k8qXrL9tn5qJN-cA
jdk1.8安装包:https://pan.baidu.com/s/1t8b1g30gYYisQSuyKXvzAQ
hadoop安装包:https://pan.baidu.com/s/1B1g1S_rE5RiBzZDjtZguAQ
这些都是在默认装好了VM或者其他虚拟机的前提下进行的。

hadoop集群的规划
集群搭建的具体步骤:

注意:一下的步骤出了改主机名需要针对每台来设置外,其他的均只需要在第一台上设置就好了,配置好第一台之后,我们会用scp命令来远程copy到另外两台,因为搭建的集群,所有服务器的配置必须一样,这样可以减少错误。当然,主机名需要单独配置。

一、硬件准备
1、服务器准备
  1. VMware
  2. CentOS6.8 ,为了能呈现一个集群效果,所以至少准三台虚拟机(安装3个相同的centos)(hadoop01、hadoop02、hadoop03)。
2、网络环境准备
  1. 在装系统的时候,选择NAT模式,这是最简单的,只要宿主机器能上网就可以,省去设置IP地址、子网掩码、网关、DNS(外网)
二、linux系统环境的准备
1、 修改主机名(root用户下)

使用命令

[root@bogon ~]# vim /etc/sysconfig/network

然后修改HOSTNAME值,这里设置为了hadoop01

修改完成,Esc热键进入末行模式,输入“:wq”保存退出。

2、配置ip地址(root用户)

(1)这里提供了两种利用命令来设置ip的方式
方法1、 直接修改配置文件,需要root权限

[root@hadoop01 ~]# vim /etc/sysconfig/network-scripts/ifcfg-eth0
DEVICE="eth0" 
BOOTPROTO="static"  #这里把DHCP改为static 
HWADDR="00:0C:29:0D:13:1D" 
IPV6INIT="yes" 
NM_CONTROLLED="yes" 
ONBOOT="yes" 
TYPE="Ethernet" 
UUID="cdd018ae-b9d3-430c-8823-758460032e29" 
IPADDR=192.168.157.130   #设置ipv4地址,这个根据自己的实际ip来写 
NETMASK=255.255.255.0    #子网掩码 
GATEWAY=192.168.157.2    #默认网关,一般是ip的前三个字段.2 
DNS1=192.168.157.2       #DNS服务器之一,就写成网关的地址就行

修改红框中部分,如果,如果没有这个条目,则添加,一个新的虚拟机系统,第一个框中是将dhcp修改为static,最后的红框中的所有都是需要自己添加的。

注意:这里的ip是根据自己的实际情况来设置的,每个人的是不一样的

方法2、利用命令setup,在命令终端输入 setup 选择“Network Configuration” ,然后按回车键, 选择“Device Configuration”,按回车键,选中“eth0”,按回车键。

[root@hadoop01 ~]# setup

回车之后会看到这个界面

选中第四个,回车,然后接着两个回车,到这个界面

原本进去的时候Use DHCP后边是[*],这时候我们需要选中它,按空格键取消这个*,这样才能够配置下边的ip,根据实际情况,配置好ip、子网掩码、认网关、DNS服务器,然后选中ok回车保存,然后选择save

然后选择save&quit,这样退出来之后,重启网络,这样一样是可以改ip的。

改完之后可以ping一下看看是否成功,如果不成功,看一下网关、子网掩码、DNS是否配置正确。这样一般就不会有问题了。

(2按照上述步骤之一修改完成,重启网络服务,使用命令:

[root@hadoop01 ~]#service network restart

(3)检查是否修改成功,使用命令:

[root@hadoop01 ~]#ifconfig

如果ip改过来了,则说明成功了。

3、关闭防火墙(root用户)

(1)查看防火墙状态:service iptables status

[root@hadoop01 ~]# service iptables status

(2)关闭防火墙:service iptables stop

[root@hadoop01 ~]# service iptables stop  

这种方式是一次性的,重启虚拟机之后失效


(3)开机不启动:chkconfig iptables off(永久有效)

[root@hadoop01 ~]# chkconfig iptables off
4、添加内网域名映射(root用户)

修改配置文件,使用命令:vim /etc/hosts
格式:IP地址 [至少一个空格]主机名

[root@hadoop01 ~]# vim /etc/hosts
5、同步网络时间(root用户)

一般如果我们没有做任何设置,时间是不对的,所以需要改一下时间。
(1)修改时区,使用命令:
针对我们需要的时区,里边只有上海的时区(并不是只有这一个时区),没有北京,所以我们就用上海也是一样的

[root@hadoop01 ~]# cp /usr/share/zoneinfo/Asia/Shanghai  /etc/localtime 

把本地的时区修改为上海,直接把/usr/share/zoneinfo/Asia/里的Shanghai复制过去就行
(2)同步网络时间,使用命令:ntpdate cn.pool.ntp.org(中国国家授时中心服务器地址)

[root@hadoop01 ~]# ntpdate cn.pool.ntp.org

(3)查看系统当前时间进行测试,使用命令:

[root@hadoop01 ~]# date
6、安装jdk(普通用户,我的是cj)

这里用普通用户的原因是:如果是在公司里边,公司的服务器一般是不会只有自己一个人用,可能别人不需要jdk这些环境,所以用普通用户,配置用户自己需要的环境变量,当然也可以通过配置/etc/profile来设置这个环境变量,按需求来就好。
(1)准备软件:jdk-8u73-linux-x64.tar.gz
(2)把软件传到 Linux 服务器上去(我的上传目录是/home/cj/Desktop/software)
(3)把软件解包解压缩到当前目录下,使用命令:

[cj@hadoop01 software]$ tar -zxvf jdk-8u73-linux-x64.tar.gz

(4)配置环境变量,使用命令:

[cj@hadoop01 software]$ vim /home/cj/.bash_profile

在最后加入两行信息,如下图所示:

(5)让配置文件立即生效,使用命令:

[cj@hadoop01 software]$ source /home/cj/.bash_profile
注意:

(1)修改 /etc/profile 文件当本机仅仅作为开发使用时推荐使用这种方法,因为此种配置时所有用户的 Shell 都有权使用这些环境变量,可能会给系统带来安全性问题。
(2)export 是把这三个变量导出为全局变量。
(3)大小写必须严格区分。

(6)检测JDK是否安装成功,使用命令:

[cj@hadoop01 software]$ java -version

看到如上图的信息,则说明jdk配置成功

7、配置SSH免密登录(普通用户cj)

这是因为后期集群会操作一些从节点,所以配置一下免密登录。只需要配置hadoop01到另外两台的免密登录就可以了。如果需要配置hadoop02或者hadoop03到另外两台的免密登录,那这时候要注意个问题,在写authorized_keys的时候,需要追加(>>),别把原本的覆盖了.
(1)在3台虚拟机开启的情况下,在主节点 hadoop01 上使用命令:

[cj@hadoop01 ~]$ ssh-keygen 或 ssh-keygen -t rsa

之后会发现在hadoop01的/home/cj/.ssh目录下生成了公钥文件。
(2)复制公钥文件到授权列表文件 authorized_keys中,使用命令:

[cj@hadoop01 .ssh]$ cp id_rsa.pub authorized_keys

(3)修改授权列表文件权限,使用命令:

[cj@hadoop01 .ssh]$chmod 600 ./authorized_keys

(4)将该授权列表文件 authorized_keys 复制到hadoop02和hadoop03上,使用命令:$PWD代表(远程主机的(hadoop02 or hadoop03))当前路径(/home/cj/.ssh/)

[cj@hadoop01 .ssh]$scp authorized_keys cj@hadoop02:$PWD 
[cj@hadoop01 .ssh]$scp authorized_keys cj@hadoop03:$PWD

(5)验证免密登录是否设置成功,如下所示:

达到这个效果则说明ssh免密登录设置成功了。
到此,hadoop集群的准备工作就已经完成了,接下来就是hadoop集群的正式搭建。

三、Hadoop2.6.5 分布式集群搭建
1、集群的简介
1. hadoop集群

(1) HDFS集群(负责海量数据的存储)
NameNode(老大)
DataNode(小弟)
(2)YARN集群(负责海量数据运算时的资源调度)
ResourceManager (老大)
NodeManager(小弟)
为什么没有MapReduce集群呢?
因为它是一个应用程序开发包

2.集群规划
2、安装包准备

(1)准备安装包:hadoop-2.6.5.tar.gz
(2)上传到 Linux 服务器上去(我的上传目录是/home/cj/Desktop/software/)
(3)把软件解包解压缩到当前目录下,使用命令:

[cj@hadoop01 software]$ tar  -zxvf  hadoop-2.6.5.tar.gz
3、主要配置文件详解

配置文件所在路径:/home/cj/Desktop/software/hadoop-2.6.5/etc/hadoop
进入到配置文件所在路径

[cj@hadoop01 ~]$cd  /home/cj/Desktop/software/hadoop-2.6.5/etc/hadoop

(1)配置环境变量 hadoop-env.sh
编辑配置文件,使用命令:

[cj@hadoop01 hadoop]$ vim hadoop-env.sh

把第25行修改为自己的jdk路径

修改完成后保存退出
(2)配置核心组件 core-site.xml
编辑配置文件,使用命令:

[cj@hadoop01 hadoop]$ vim core-site.xml

将如下代码添加到<configuration></configuration>中间:

core-site.xml
<property>
<name>fs.defaultFS</name>
<value>hdfs://hadoop01:9000</value>    #HDFS文件系统路径(NameNode所在的路径),默认为file:///
</property>
<property>
<name>hadoop.tmp.dir</name>
<value>/home/cj/hadoopData/temp</value>  #Hadoop运行时产生文件的临时存储目录
</property>

如图:

修改完成后保存退出。
(3)配置文件系统 hdfs-site.xml
将下面的代码加入<configuration></configuration>中间:

hdfs-site.xml
<property>
<name>dfs.namenode.name.dir</name>
<value>/home/cj/hadoopData/name</value>  # NameNode存放元数据和日志位置
</property>
<property>
<name>dfs.datanode.data.dir</name>
<value>/home/cj/hadoopData/data</value>  # DataNode存储数据块的目录
</property>
<property>
<name>dfs.replication</name>
<value>2</value>  # 数据块副本的数量,默认保存3份
</property>
<property>
<name>dfs.secondary.http.address</name>
<value>hadoop02:50090</value> # SecondaryNameNode安装节点和默认的web管理端口
</property>

如图:

修改好后保存退出。
(4)配置计算框架 mapred-site.xml
1)复制文件,因为目录下只有mapred-site.xml.template,所以我们需要复制一份,使用命令:

[cj@hadoop01 hadoop]$ cp mapred-site.xml.template mapred-site.xml
  1. 编辑配置文件,使用命令:
[cj@hadoop01 hadoop]$ vim mapred-site.xml

3)将下面的代码加入<configuration></configuration>中间:

mapred-site.xml
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>

mapreduce.framework.name:指定使用YARN运行MapReduce程序,默认为local
4)添加完成,保存退出

如图:

(5)配置YARN系统 yarn-site.xml
1)编辑配置文件,使用命令:

[cj@hadoop01 hadoop]$ vim  yarn-site.xml

2)将下面的代码加入<configuration></configuration>中间:

yarn-site.xml
<property>
<name>yarn.resourcemanager.hostname</name>
<value>hadoop01</value>
</property>
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>

yarn.resourcemanager.hostname:指定YARN集群老大所在节点
yarn.nodemanager.aux-services:NodeManager上运行的附属服务,也可以理解为reduce获取数据的方式
3)添加完成,保存退出。
如图:

(6) 配置slaves文件
1)编辑配置文件,使用命令:

[cj@hadoop01 hadoop]$ vim slaves

2)将内容修改为(里边会有个localhost,把它删掉):

slaves
hadoop01
hadoop02
hadoop03

记录的是集群里所有DataNode节点
3)修改完成,保存退出。

如图:
4、分发到从节点

分别分发到从节点hadoop02和hadoop03上,使用命令:

[cj@hadoop01 Desktop]$  scp -r /home/cj/Desktop/sorftware/ hadoop02:$PWD
[cj@hadoop01 Desktop]$  scp -r /home/cj/Desktop/sorftware/ hadoop03:$PWD

或者用

[cj@hadoop01 ~]$ scp -r /home/cj/Desktop/software/ cj@hadoop02:/home/cj/Desktop/
[cj@hadoop01 ~]$  scp -r /home/cj/Desktop/sorftware  cj@hadoop03:/home/cj/Desktop/

两种方式都是可以的

5、配置Hadoop系统环境变量
[cj@hadoop01 ~]$ vim  /home/cj/.bash_profile

添加hadoop的安装目录
我的安装目录是/home/cj/Desktop/software/hadoop-2.6.5

如图:

添加好后,保存退出。
让配置文件立即生效,使用命令:

[cj@hadoop01 ~]$ source  /home/cj/.bash_profile

此时,jdk和hadoop的环境变量都已经配置好了,这时候,就可以把.bash_profiile文件通过scp拷贝给hadoop02和hadoop03了。

[cj@hadoop01 ~]$ scp .bash_profile cj@hadoop02:$PWD
[cj@hadoop01 ~]$ scp .bash_profile cj@hadoop03:$PWD
6、启动Hadoop集群

初始化文件系统
(1)该操作需要在主节点hadoop01上执行,使用命令:

[cj@hadoop01 ~]$ hdfs namenode -format

(2)看到下图的打印信息表示初始化成功,如果出现Exception/Error,则表示出问题:
启动HDFS集群

(1)使用命令:

[cj@hadoop01 ~]$  start-dfs.sh

(2)使用jps查看集群的状态

在主节点hadoop01上启动了NameNode守护进程
在3个节点上都启动了DataNode守护进程
在配置的一个特定节点hadoop02上启动SecondaryNameNode 进程

(3)使用命令查看根目录信息,因为我之前用过,创建过文件,所以会是如下的状态

也可以通过UI页面查看:http://hadoop01:50070
或者:http://192.168.157.130:50070,这里的ip是NameNode所在的ip。我的NameNode是放在hadoop01(192.168.157.130)上的。
要想直接用主机名(hadoop01)代替ip,那么除了在linux中的地址映射,还需要在windows的hosts文件中也添加地址映射,windows的hosts配置文件在C:\Windows\System32\drivers\etc下,打开,加入如图红框中的内容

这里这个配置是和linux里的地址映射要保持一致,否则容易乱套了。
添加完成过后,保存。
如果改windows的hosts文件时,提示说权限不够的话,可以先把hosts文件拷贝到桌面,然后再打开加入要加入的,然后再拷贝回去覆盖原来的hosts文件即可。
这时候,就可以通过UI界面查看集群状态了。
输入地址:http://hadoop01:50070
看到的效果:

查看HDFS文件系统:

可以发现这跟我们直接使用命令看到的效果是一样的。

启动yarn集群

使用命令:

[cj@hadoop01 ~]$ start-yarn.sh 

可以发现yarn集群的ResourceManager和NodeManager都已经启动起来了。

通过jps查看启动的状态

也可以使用地址:http://hadoop01:8088 通过UI界面来查看集群的信息

这样hadoop的整个集群就算是跑起来了,也可以去做个例子实验一下,hadoop自带了一些例子,路径是hadoop里边的/share/hadoop/mapreduce/,我的是在/home/cj/Desktop/software/hadoop-2.6.5/share/hadoop/mapreduce,因为我把hadoop解压(安装)到了Desktop的software里边。进入这个路径,可以看到有如下的文件:

这里用example这个文件做个例子,用来算一下π的值,命令如下:

[cj@hadoop01 ~]$ hadoop jar /home/cj/Desktop/software/hadoop-2.6.5/share/hadoop/mapreduce/hadoop-mapreduce-examples-2.6.5.jar pi 1 1

回车去计算,由于可能是机器的原因,我设置的是1 1跑出来的结果是4,这两个值是大点会准确点。这里只截取了最后的部分,如图:

这样,hadoop集群就算是搭建完成了。

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 203,362评论 5 477
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,330评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,247评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,560评论 1 273
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,580评论 5 365
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,569评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,929评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,587评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,840评论 1 297
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,596评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,678评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,366评论 4 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,945评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,929评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,165评论 1 259
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 43,271评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,403评论 2 342

推荐阅读更多精彩内容