Hadoop集群搭建

目录

前言

学习目标

hadoop是什么?

MapReduce

hadoop集群规划

本次学习分为5部分:

1.搭建

(1).准备3台虚拟机

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

2.关闭防火墙

3.NameNode格式化

4.启动hadoop集群

5.远程访问

6.学习心得


前言

本片博客是为完成Hadoop老师布置的作业而写的,写的不好请各位看官轻喷,因为本人自己也是半桶水。

学习目标

使用Hadoop、Hbase搭建新能源汽车大数据平台。

要求:1、集群至少要有三个节点;

2、由于条件有限,所以要求集群至少可以存储100G的数据;

3、将HDFS副本数设置为3;

4、NameNode要高可用,即运行两个NameNode进程,同一时刻只有一个对外提供服务的NameNode,如果活跃的NameNode进程所在机器宕机了,整个集群还是可以正常运行的;

5、可以正常提交MapReduce运行;

6、Hbase要集群部署,可正常建表、插入数据和查询数据等;

7、部署一个Mysql数据库,要求可以远程访问。

hadoop是什么?

Hadoop是一个由Apache基金会所开发的分布式系统基础架构, 是一个存储系统+计算框架的软件框架。主要解决海量数据存储计算的问题,是大数据技术中的基石。Hadoop以一种可靠、高效、可伸缩的方式进行数据处理,用户可以在不了解分布式底层细节的情况下,开发分布式程序,用户可以轻松地在Hadoop上开发和运行处理海量数据的应用程序。

MapReduce

MapReduce是hadoop的核心组件之一,hadoop要分布式包括两部分,一是分布式文件系统hdfs,一部是分布式计算框,就是mapreduce,缺一不可,也就是说,可以通过mapreduce很容易在hadoop平台上进行分布式的计算编程。Mapreduce是一种编程模型,是一种编程方法,抽象理论。

hadoop集群规划

Hadoop是典型的主从架构。HDFS的NameNode是主,DataNode是从,YARN的ResourceManager是主,NodeManager是从。在正式集群部署之前,先要做规划,规划好每个主机/节点分别运行Hadoop的哪些进程。这样做,至少有两个好处:1、指导部署,没有规划图,很可能部署过程中就容易迷失,一个小小的细节没处理好,可能导致集群启动失败;2、方便日后查询。

本次学习分为5部分:

1.搭建

(1).准备3台虚拟机

这里是我为了方便,就拿之前在老师教我们在教室用的虚拟机搞了,大家不要学我嗷)之前我们用vmware workstation 15 player创建了一台虚拟机并在该虚拟机上进行了Hadoop的伪分布式安装。为避免重复工作,后续的Hadoop集群都是在此基础上进行。

 

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

因为master、slave1、slave2这三台虚拟机是从原有的虚拟机拷贝过来的,所以所有东西都是一样的,包括环境变量、已安装的程序(jdk、redis、hadoop、hbase等)、ip、主机名。而不同的主机,ip肯定不能一样,而且虚拟机默认是通过DHCP协议获取IP的,也就是每次开机,虚拟机的IP可能会发生变化,这种变化对集群来说是致命的,而设置静态IP就可以避免这个问题。所以要修改这三台虚拟机的ip。

 

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

执行上面这段命令,把IP设置为静态IP,在修改IP地址

 

 

IP修改后,重启网卡:

systemcttl restart network

重启网卡后在输入:

ping www.baidu.com

看是否可以确认访问到外网

 

(3.)修改主机名

简单理解,给机器起一个名字。一般在集群当中,都是通过配置主机名来和其他节点通信,所以需要改下机器的名字。

hostnamectl set-hostname xxx

执行上面这段命令,将主机名修改为你想要设置的主机名。退出root并重新登录,即可看到最新的主机名

 

2.关闭防火墙

(1).查看防火墙的状态

 (2).关闭防火墙

 (3).查看防火墙是否开机自启

(4).关闭防火墙开机自启 

3. NameNode格式化

格式化过程
(1)删除主节点(namenode节点),包括:hadoop的临时存储目录tmp;namenode存储永久性元数据目录tmp/dfs/name;hadoop日志文件log目录中的文件(而不是log目录!!!)
(2)删除从节点(datanode),包括:同上
删除上述的原因是每一次重新格式化都会重建上述目录或内容,如果这些目录或内容存在将不会重建,导致集群数据不一致。比如:tmp/dfs/name/current目录下的VERSION文件中的clusterID、namespaceID,如果有一个节点上的dfs/name目录忘记删除,hadoop格式化时就不会重建该目录,因此这个节点形成的clusterID、namespaceID就与其他节点不一样,最终导致hadoop启动失败。
(3)格式化:Hadoop namenode -format
如果每个开机都要先格式化一下namenode才能启动集群,那么问题很可能出在了tmp目录上,每次开机tmp都会被清空,我们在hdfs-site.xml中可以把tmp目录换个路径。


在master上执行格式化命令:

hdfs namenode -format

4.启动hadoop集群

在master上执行start-all.sh命令启动hadoop集群。

start-all.sh

在输入jps查看程序是否都跑起来

 

5.远程访问

基本思路就是为MySQL.user表增加一条记录:'Hadoop'@'%',这样,任何主机上的用户'hadoop'都可以远程连接MySQL数据库。于是输入下面的命令:

mysql> INSERT INTO mysql.user(Host,User,Password) VALUES('%','hadoop','1');

结果出现了错误:

1364 - Field 'ssl_cipher' doesn't have a default value

这是因为指定了严格模式,不能直接往mysql.user表里面insert用户:

sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES

只能输入下面两个命令来实现:

mysql> GRANT ALL PRIVILEGES ON *.* TO 'hadoop'@'%' IDENTIFIED BY '1' WITH GRANT OPTION;

mysql> FLUSH PRIVILEGES;

这样,任何主机上的用户'hadoop'都可以凭借密码'1'远程连接MySQL数据库。
 

6.学习心得:

通过Hadoop的学习,让我受益良多,是老师的悉心教导,是在学习的过程中会遇到各种各样的问题,包括写代码时,部署环境时,连接Hdfs或者Hbase时,有些问题是需要我们去学习一些底层的东西的,需要我们有耐心的去解决,且需要花费大量时间,没有一件事是容易的,学习任何东西都需要一点一点的拾取。

互联网的快速发展带来了数据快速增加,海量数据的存储已经不是一台机器所能处理的问题了。Hadoop的技术就应运而生。在看了超人学院吴超老师的讲解之后,对这个概念有了一个比较系统的了解。可以讲Hadoop的核心内容看作是两个部分,一个是分布式存储,一个是分布式计算。

对于分布式存储,Hadoop有自己的一套系统来处理叫Hadoop distribution file system。为什么分布式存储需要一个额外的系统来处理呢,而不是就把1TB以上的文件分开存放就好了呢。如果不采用新的系统,我们存放的东西没办进行一个统一的管理。存放在A电脑的东西只能在连接到A去找,存在B的又得单独去B找。繁琐且不便于管理。而这个分布式存储文件系统能把这些文件分开存储的过程透明化,用户看不到文件是怎么存储在不同电脑上,看到的只是一个统一的管理界面。现在的云盘就是很好的给用户这种体验。
对于分布式计算。在对海量数据进行处理的时候,一台机器肯定也是不够用的。所以也需要考虑将将数据分在不同的机器上并行的进行计算,这样不经可以节省大量的硬件的I/O开销。也能够将加快计算的速度。Hadoop对分布式计算的系统为MapReduce。Map即将数据分开存放进行计算,Reduce将分布计算的得到的结果进行整合,最后汇总得到一个最终的结果。这样对Hadoop的技术有一个清晰框架思路。
 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值