hadoop2.x单机搭建分布式集群超详细教程

Posted wy_0928

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了hadoop2.x单机搭建分布式集群超详细教程相关的知识,希望对你有一定的参考价值。

【前言】

1.个人PC机配置:戴尔,笔记本,内存8G,硬盘西数500G,CPU酷睿i5

2.由于工作中需要经常在集群上做测试,另外我一直想学习大数据,因此结合百度+同事,有了此篇教程,初学者,不足之处,可在下方留言


【准备工作】

下载如下5个软件:

1.VMware,版本10

2.CentOS系统iso镜像,版本6.5

3.Xshell软件

4.jdk,linux版本1.8

5.hadoop软件包,版本2.7

【注:为方便起见,教程中所有密码均设置为123456】


【搭建步骤】

1.安装VMware软件

详见我博客:

http://blog.csdn.net/wy_0928/article/details/51320437

http://blog.csdn.net/wy_0928/article/details/51320549

 

2.安装CentOS虚拟机系统以及配置网络和远程连接

详见我博客:

网络设置为NAT模式

http://blog.csdn.net/wy_0928/article/details/51320640

博客中用的是SecureCRT工具,个人目前偏爱Xshell,连接方法很简单,这里不赘述

此时ifconfig查看网卡,应该直接有ip了,试着在虚拟机和本地宿主机ping下:



切换root用户:


3.关闭虚拟机防火墙

首先查看当前防火墙状态:


关闭防火墙:


查看iptables服务是否开启:


重启虚拟机:


4.安装并配置jdk

这部分用root权限操作

(1)先输入jave-version查看当前jdk版本,不是1.8就先删除已有版本的jdk软件包:


(2)去oracle官网下载jdk1.8的Linux版本(记得下载rpm自安装版本),然后上传到/usr/local/src目录;


 (3)输入如下命令开始安装jdk:

rpm -i jdk-8u91-linux-i586.rpm

等待安装完成


在/usr/java路径下查看是否有jdk1.8文件夹:


有就安装成功了。

 

(3)配置环境变量,让系统用1.8版本的jdk:

首先修改系统配置文件:vi /etc/profile


在文件末尾加上如下几行(注意等号前后不要留空格):


保存退出

 

(4)设置修改后的配置文件生效:


 

(5)查看服务器当前jdk版本:


至此jdk安装配置结束。

 

5.创建hadoop相应的文件系统

这部分在root权限下操作

(1)配置hosts文件,路径在/etc/hosts:


之后在虚拟机ping master看看是否通:


 

(2)查看虚拟机系统中是否安装lvm工具


这就表示已安装。

 

(3)在虚拟机中添加3块硬盘(均为20G)

虚拟机先关机

a)点击 “编辑虚拟机设置”---“添加”---“硬盘”---“下一步”,然后一直点击 “下一步”直到完成:


b)接着,重复此操作2遍,会得到以下图片。最后,点击“确定”并开启虚拟机:


开启后fdisk -l查看硬盘是否开启成功:



可以看到3个20G的硬盘(sdb、sdc、sdd)

 

(4)创建物理卷

(pvcreate指令用于将物理硬盘分区初始化为物理卷,以便被LVM使用。)

a)使用sdb创建基于sdb的物理卷

pvcreate /dev/sdb

b)使用sdc创建基于sdc的物理卷

   pvcreate /dev/sdc

c)使用sdd创建基于sdd的物理卷

   pvcreate /dev/sdd


d)查看物理卷是否创建成功

   pvdisplay



 

(5)创建卷组和添加新的物理卷到卷组

a)创建一个卷组

   vgcreate test_document /dev/sdb

  (vgcreate 命令第一个参数是指定该卷组的逻辑名,后面参数是指定希望添加到该卷组的所有分区和磁盘)

b)将sdc物理卷添加到已有的卷组(注意vgcreate与vgextend用法的区别)

   vgextend test_document /dev/sdc

c)将sdd物理卷添加到已有的卷组(注意vgcreate与vgextend用法的区别)

   vgextend test_document /dev/sdd


d)查看卷组大小(发现已经60G了)


 

(6)激活卷组


(7)创建逻辑卷

a)lvcreate -L5120 -n lvhadooptest_document

   (该命令是在卷组test_document上创建名字为lvhadoop,大小为5120M的逻  辑卷,并且设备入口为/dev/test_document/lvhadoop ,test_document为卷组名,lvhadoop为逻辑卷名)

 

b)lvcreate -L51200 -n lvdatatest_document

   (该命令是在卷组test_document上创建名字为lvdata,大小为51200M的逻  辑卷,并且设备入口为/dev/test_document/lvdata ,test_document为卷组名,lvdata为逻辑卷名)


注意,如果分配过大的逻辑卷lvcreate -L10240 -n lvhadoop test_document会提示剩余空间不足,此时可用命令vgdisplay去产查看剩余空间的大小。


 

(8)创建文件系统

a) mkfs -t ext4/dev/test_document/lvhadoop


b) mkfs -t ext4/dev/test_document/lvdata


(9)创建文件夹

a)在linux根目录下创建hadoop文件夹   mkdir -p /hadoop

b)在linux根目录下创建data文件夹     mkdir -p /data


 

(10)挂载

a)mount /dev/test_document/lvhadoop /hadoop

b)mount /dev/test_document/lvdata /data

c)挂载后,再使用 df -kh 命令查看


(11)修改自动挂载的配置文件

如果下次重启linux系统后,挂载设备就又看不到了,我们需要把这个文件写入到fstab 分区表文件里面。

a)vi /etc/fstab


在文件末尾加上如上两行,然后按“ESC”---“shirt”+“:”---输入“x”---回车,之后reboot重启虚拟机。

 

6.创建hadoop组和用户

(1)创建组

groupadd -g 3000 cloudadmin

(2)创建用户

useradd -u3001 -g cloudadmin hadoop


(3)修改密码

passwd hadoop        密码改为:123456(与root用户的密码一致)


(4)修改文件的系统权限

a)修改hadoop文件的系统权限   chown -Rhadoop:cloudadmin /hadoop

b)修改data文件的系统权限     chown -Rhadoop:cloudadmin /data

c)查看  ls -l / | grep cloudadmin


7.下载hadoop软件包

打开hadoop官网http://hadoop.apache.org


点击左侧的Download Hadoop


单击releases


单击binary,注意source是源码,不要下载错了


单击上图的链接进行下载


上图中-src是源码文件,我们用另外一个。

8.在虚拟机中解压hadoop

(1)将下载的压缩包上传到/hadoop目录下(rz命令):


(2)切换到hadoop用户

重启虚拟机,用hadoop用户登录,注意Xshell远程连接的时候,新建个hadoop用户登录窗口

(退出hadoop用户exit,查看当前用户whoami)


(3)解压hadoop压缩包:tar -zxvfHadoop-2.7.3-src.tar.gz,解压完成后出现hadoop文件夹:


之后ll查看:


9.创建集群(规划1个主节点,2个从节点)

为了看着舒服,将当前虚拟机改名为hm(直接在VMware右键重命名即可);

(1)克隆2台虚拟机

在VMware虚拟机中右键-管理-克隆



直接下一步


直接下一步


选择创建完整克隆,下一步,将名称改为hd001:


点完成开始克隆,克隆完成后:


点关闭即可,用同样的方法再克隆一台虚拟机(注意名称为hd002)。


克隆的时候,新虚拟机ip自动更新1,就是比如第一台虚拟机ip为192.168.99.1,那么克隆出第二台,ip自动更新为192.168.99.2,以此类推。

 

(2)修改3台虚拟机的主机名

开启3台虚拟机,用Xshell连接的时候注意ip不同,之后3台虚拟机都切换成root用户:


其中hostname是查看当前主机名,hostname hm是将主机名改为hm,但是这么做重启会失效,因此我们修改配置文件network,之后reboot重启此虚拟机。

其余所有虚拟机都重复上述操作,注意主机名hm改为hd001和hd002。

(3)修改3台虚拟机的ip和mac

全部用root用户登录!


先修改第一台虚拟机的ip和mac,输入cat/etc/udev/rules.d/70-persistent-net.rules查看,如果不是下图的样子,将其余网卡注释掉,另外复制它的MAC地址:


进入network-scripts目录,编辑其内的ifcfg-eth0文件,将该虚拟机的ip和刚刚复制的mac地址覆盖上:


重启网卡


至此,第一台虚拟机的ip和mac配置完毕,接着配置第二台虚拟机的ip和Mac地址,输入vi /etc/udev/rules.d/70-persistent-net.rules修改,因为上面的MAC地址与第一台虚拟机相同,因此我们用下一个,并将网卡修改为eth0:


后续步骤同上,接着同理配置第三台虚拟机的ip和Mac地址。

(4)修改映射关系

用root登录第一台虚拟机,输入vi /etc/hosts,按照下图配置,图中的ip为各个虚拟机的ip:


进入/etc文件夹:

scp hosts192.168.102.129://etc/  

将hm etc文件夹下的hosts传到192.168.102.128 的etc下

scp hosts192.168.102.130://etc/

将hm etc文件夹下的hosts传到192.168.102.130 的etc下

有提示时,输入yes,密码是刚设置的123456


再去另外2台虚拟机查看文件是否传输成功cat /etc/hosts


在每台虚拟机中进行ping通测试,这里每台虚拟机都需要测试与另外所有虚拟机是否通,且ping ip和ping 主机名都要测试(这里很容易漏测):


10.在集群中配置SSH免密登录

(1)重启所有虚拟机,均用hadoop用户登录

(2)在主节点hm的Xshell里输入ssh-keygen -t rsa命令,然后一直按回车即可


在主节点hm上执行如下命令:

cd ~

cd .ssh

catid_rsa.pub >> authorized_keys

scp authorized_keys192.168.102.129:/root/.ssh/

scpauthorized_keys 192.168.102.130:/root/.ssh/

出现提示就输入yes,密码是之前设置的123456这里如果在scp时提示Permission denied,是因为当前登录的hadoop用户没有权限,解决办法3个:其一是为hadoop用户授权,其二是切换成root用户进行操作,其三是将authorized_keys从主节点下载到本地再逐一上传到所有从节点。

(3)SSH免密码登录验证

ssh hd001date

ssh hd002date

第一次输入会有提示,输入yes,后面就正常


11.修改hadoop集群的配置文件

在hadoop用户下进行以下操作:

(1)在集群中的所有节点上创建相应的文件目录

a)创建tmp文件,mkdir -p /data/tmp

b)创建name文件,mkdir -p /data/name

c)创建data文件,mkdir -p /data/data

d)进入data目录,cd /data

e)查看data文件夹下的文件,ls


(2)在主节点上修改配置文件

a)进入根目录cd /

b)进入hadoop配置文件所在目录cd /hadoop/hadoop-2.7.3/etc/hadoop/


c)修改hadoop-env.sh文件vi hadoop-env.sh


这里JAVA_HOME的地址是之前配置JDK那里的地址

d)修改core-site.xml文件vi core-site.xml


注意主机名hm和路径是之前设置好的,不要配错了

e)修改hdfs-site.xml文件vi hdfs-site.xml


注意这里的路径是之前设置好的,不要配错了,另外有几台从节点就写几,我这里写2

f)修改mapred-site.xml.template文件vi mapred-site.xml.template


注意主节点名hm是之前设置好的,不要配错了

g)复制文件,将mapred-site.xml.template复制一份并重新命名为mapred-site.xml存放在当前路径:


同理将mapred-queues.xml.template复制一份并重新命名为mapred-queues.xml存放在当前路径:


注:hadoop1.x版本直接有这两个文件,而hadoop2.x版本需要复制重命名一下

h)继续修改hdfs-site.xml文件

因为hadoop2.x删除了1.x版本的masters文件,因此将master在hdfs-site.xml里面


i)修改slaves文件vi slaves

这里写入所有从节点的主机名


(3)同步时钟

ntpdate

(4)分发hadoop软件包到从节点上

注意这步是hadoop用户在/hadoop目录下操作,时间较长,请耐心等待

scp -r hadoop-2.7.3hd001:/hadoop/

scp -rhadoop-2.7.3 hd002:/hadoop/

12.格式化HDFS

(1)在hadoop用户下进入主节点的/hadoop/hadoop2.7.3目录

(2)格式化hdfs

 bin/hadoop namenode -format


如果有提示,输入大写的Y,小写的报错,没有就算了


格式化出错的解决方法

a、查看端口9000的信息(需要在root用户下查看)

    netstat -anp|grep 9000

b、格式化只能1次,如果后面再次格式化则会导致不成功,需要将所有节点上根目录下data目录下的datanametmp文件删除,再新建datanametmp空的文件夹。

13.启动hadoop 系统

(1)用hadoop用户登录主节点,进入/hadoop/hadoop2.7.3目录

(2)启动hadoop系统

bin/start-all.sh或sbin/start-all.sh

(关闭集群sbin/stop-all.sh)

版本不同,apache的2.x版本启动脚本是在sbin文件夹内。


输入yes


(3)检查hadoop的相关进程是否启动成功

a)主节点jps


b)所有从节点jps


(4)检查集群状态

a)在hadoop用户下进入主节点的/hadoop/hadoop2.7.3目录

b)输入bin/hadoop dfsadmin -report命令




(5)查看监控界面

a)在浏览器地址栏输入192.168.102.128:8088回车


hadoop1.x端口是50030,后来2.x改为8088了。

【后记】

1.开启hadoop集群方法

所有虚拟机开机-Xshell远程登录所有虚拟机(建议用hadoop用户)-在主节点用hadoop用户进入/hadoop2.7.3目录,输入/sbin/start-all.sh回车。

2.关闭hadoop集群方法

在主节点用hadoop用户进入/hadoop2.7.3目录,输入sbin/stop-all.sh回车。

3.网页监控

192.168.102.128:8088


以上是关于hadoop2.x单机搭建分布式集群超详细教程的主要内容,如果未能解决你的问题,请参考以下文章

Hadoop 3.1.3 分布式集群搭建,超详细,保姆级教程

Hadoop2.X分布式集群部署

伪分布式Hadoop2.x集群的搭建

Hadoop 2.x安装教程_单机/伪分布式配置_Ubuntu14.04 64bitx

Solr集群搭建详细教程

zookeeper集群搭建超详细教程