hadoop-2.7.3学习之分布式集群安装实践

注:本文的主要目的是为了记录自己的学习过程,也方便与大家做交流。

1. 理论部分

1.1 Hadoop是什么?

  是一款可靠、可扩展、用于分布式计算的开源软件。
 解决问题: 海量数据的存储(HDFS);海量数据的分析(MapReduce);资源管理调度(YARN)。
其他参考百度百科Hadoop词条或者《Hadoop基础教程》之初识Hadoop    

1.2 Hadoop 生态圈


1.3 Hadoop和虚拟化的差异点


1.4 HDFS的架构

l. 主从结构
    •主节点, namenode
    •从节点,有很多个:datanode
l. namenode负责:
    •接收用户操作请求
    •维护文件系统的目录结构
    •管理文件与block之间关系,block与datanode之间关系
l. datanode负责:
    •存储文件
    •文件被分成block存储在磁盘上
    •为保证数据安全,文件会有多个副本

2. 实践部分

2.1 电脑配置 

由于我是用于学习,所以通过虚拟机环境安装hadoop集群,这里介绍下我自己电脑的配置情况:
cpu:Intel(R) Pentium(R) CPU G3250 @ 3.20GHz
内存:8G
硬盘:500G
系统:Windows 10专业版 64位

2.2 hadoop安装前的准备工作

2.2.1 安装Vmware WorkStation软件

这是一个VM公司提供的虚拟机工作平台,后面将在这个平台安装所需要的Linxu操作系统,我安装的版本是:VMware® Workstation 12 Pro,版本号:12.5.0 build-4352439,具体安装过程很简单,网上有很多安装教程。

2.2.2 在虚拟机上安装Linux操作系统

我选择安装CentOS 7 ,因为比较熟悉此版本的命令,所以选择这个版本的Linux系统,安装教程网上也有很多,这里就不多说废话了。安装完之后,为了减少系统内存开销,可以把每台虚拟机的内存调整为512M,并启动命令行界面,如下图所示,我安装了四台虚拟机,但只开启三台虚拟机用于搭建集群。

后面可以通过安装secureCRT连接,方便操作。

2.2.3 规划节点

按照hadoop集群的基本要求,其中一个是master结点,主要是用于运行hadoop程序中的NameNodeSecondaryNameNodeResourceManager。另外两个结点均为slave结点,其中一个是用于冗余目的,如果没有冗余,就不能称之为hadoop了,所以模拟hadoop集群至少要有3个结点,如果电脑配置非常高,可以考虑增加一些其它的结点。slave结点主要将运行hadoop程序中的DataNodeNodeManager。

所以,在准备好这3个结点之后,需要分别将linux系统的主机名重命名,重命名主机名的步骤:

1. 停止与主机名相关的软件运行,比如MySQL。(新装系统,这步可以跳过)
2. 先使用 hostname newname 设置主机名。
3. 在/etc/hosts中修改或增加 ip newname 行,并检查原来127.0.0.1行localhost回环的设置。

4. 在/etc/sysconfig/network中修改HOSTNAME=newname。
5. 重新启动机器并确认是否修改成功。

以下是我对三个结点的CentOS系统主机分别命名为:centos01, centos02, centos03,其中centos01规划为主节点,其他为从节点。

注:上面需要先配置下Linux操作系统的ip,   参考 vm下NAT模式连接网络的设置

以下是我个人参考网上教程的配置图

虚拟机网关设置为192.168.3.1


设置物理机上的虚拟机网卡IP为192.168.3.2,并指定网关192.1683.1 


设置三个节点的IP地址分别为192.168.3.3、 192.168.3.5、192.168.3.6


2.3 hadoop集群搭建

一、配置hosts文件,查看2.2.3 规划节点

二、建立hadoop 运行账号

即为hadoop集群专门设置一个用户组及用户,这部分比较简单,参考示例如下:

sudo groupadd hadoop    //设置hadoop用户组

sudo useradd –s /bin/bash –d /home/yellow –m yellow–g hadoop –G admin   //添加一个yellow用户,此用户属于hadoop用户组,且具有admin权限。

sudo passwd 1234   //设置用户yellow登录密码

su yellow//切换到yellow用户中 

上述3个虚机结点均需要进行以上步骤来完成hadoop运行帐号的建立。

三、配置SSH无密登录

原理:A要无密登录B,则将A的公钥加入到B的授权列表,这样A就能免密登录B

SSH主要通过RSA算法来产生公钥与私钥,在数据传输过程中对数据进行加密来保障数据的安全性和可靠性,公钥部分是公共部分,网络上任一结点均可以访问,私钥主要用于对数据进行加密,以防他人盗取数据。总而言之,这是一种非对称算法,想要破解还是非常有难度的。Hadoop集群的各个结点之间需要进行数据的访问,被访问的结点对于访问用户结点的可靠性必须进行验证,hadoop采用的是ssh的方法通过密钥验证及数据加解密的方式进行远程安全登录操作,当然,如果hadoop对每个结点的访问均需要进行验证,其效率将会大大降低,所以才需要配置SSH免密码的方法直接远程连入被访问结点,这样将大大提高访问效率。

步骤:

1、首先在客户端生成密钥对 ssh-keygen -t rsa 紧接着一直回车
2、新建文件 touch authorized_keys,更改权限为chmod 600 authorized_keys
(或者cat id_rsa.pub >> authorized_keys 会自动新建authorized_keys 并写入公钥,同时也要更改权限为600)
3、然后在客户端拷贝公钥到远程主机 ssh-copy-id -i ./id_rsa.pub desthost
注意: ssh-copy-id 将key写到远程机器的 ~/ .ssh/authorized_key.文件中
参考:Hadoop平台搭建使用系列教程(7)- SSH无密码验证
配置成功效果图:


四、下载并解压JDK安装包

1、用终端连接linux服务器进行软件的安装(用secureCRT来连接)
2、安装jdk
--用filezilla(xftp)工具上传jdk的压缩包
--解压jdk的压缩包到一个专门的安装目录下 /home/yellow/app
--在yellow的主目录下敲命令 tar -zxvfjdk-7u79-linux-x64.tar.gz -C ./app
--配置java的环境变量 sudo vi /etc/profile
在文件的最后添加:
export JAVA_HOME=/home/yellow/app/jdk1.7.0_65
export PATH=$PATH:$JAVA_HOME/bin
3、让配置生效, source /etc/profile
五、下载并解压Hadoop安装包

1、用filezilla工具上传hadoop的安装(或者用secureCRT自带的上传,按住Alt+p,输入sftp> put D:/hadoop-2.4.1.tar.gz /home/yellow/download
2、把hadoop解压到app目录中去 tar-zxvf hadoop-2.4.1.tar.gz-C ./app/
3、修改hadoop的5大配置文件,位置在 /home/yellow/app/hadoop-2.7.3/etc/hadoop目录下
-- vi hadoop-env.sh 改其中的JAVA_HOME为我们安装jdk的路径

-- vi core-site.xml
-- vi hdfs-site.xml

-- vi mapred-site.xml( 先修改文件名 mv mapred-site.xml.template mapred-site.xml)

-- vi yarn-site.xml

-- vi slaves(配置从节点)
-- 配置一下hadoop的环境变量

六、向各节点复制hadoop

scp -r ./hadoop-2.7.3/ centos02:/home/yellow/app/

scp -r ./hadoop-2.7.3/ centos03:/home/yellow/app/

七、格式化namenode

这一步在主节点centos01上进行操作,

注意:上面只要出现“successfully formatted”就表示成功了。


八、启动hadoop并用jps检验各后台进程是否成功启动

在主节点centos01上进行操作[yellow@centos01 ~]$ start-all.sh


可以看出进程都启动了,可以通过网站查看集群情况,在浏览器中输入:http://192.168.3.3:50070,网址为centos01结点所对应的IP.,也可以通过主机名访问,但是必须先配置下Windows 的hosts文件


至此,hadoop的分布式集群搭建已经全部完成

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
编译原理是计算机专业的一门核心课程,旨在介绍编译程序构造的一般原理和基本方法。编译原理不仅是计算机科学理论的重要组成部分,也是实现高效、可靠的计算机程序设计的关键。本文将对编译原理的基本概念、发展历程、主要内容和实际应用进行详细介绍编译原理是计算机专业的一门核心课程,旨在介绍编译程序构造的一般原理和基本方法。编译原理不仅是计算机科学理论的重要组成部分,也是实现高效、可靠的计算机程序设计的关键。本文将对编译原理的基本概念、发展历程、主要内容和实际应用进行详细介绍编译原理是计算机专业的一门核心课程,旨在介绍编译程序构造的一般原理和基本方法。编译原理不仅是计算机科学理论的重要组成部分,也是实现高效、可靠的计算机程序设计的关键。本文将对编译原理的基本概念、发展历程、主要内容和实际应用进行详细介绍编译原理是计算机专业的一门核心课程,旨在介绍编译程序构造的一般原理和基本方法。编译原理不仅是计算机科学理论的重要组成部分,也是实现高效、可靠的计算机程序设计的关键。本文将对编译原理的基本概念、发展历程、主要内容和实际应用进行详细介绍编译原理是计算机专业的一门核心课程,旨在介绍编译程序构造的一般原理和基本

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值