一、大数据简介以及服务器硬件基础

(一)什么是大数据

全球第一家信息技术研究和分析的公司Gartner给出定义:大数据指的是在一定的时间范围内无法使用常规软件进行存储、计算的数据集合。

通俗理解:描述的是人类在信息爆炸时代所产生的海量数据。

大数据岗位的职责:使用特殊的软件、架构来存储、计算海量的数据。

(二)大数据特点

如何存储、计算海量数据?

我们需要了解这些海量数据的特点,IBM公司提出,大数据具备以下5V的主要特点:

体量大(Volume):数据集总体规模比较大,包括采集、存储和计算的量都非常大。

速度快(Velocity) :产生速度和处理速度要求比较高

类型多(variety) :数据来自多种数据源,数据种类和格式日渐丰富

价值密度低(Value):数据量巨大,但是有用数据少

真实性(Veracity):数据的准确性和可信赖度,即数据的质量。

(三)大数据技术核心技术

针对大数据的5个V的特性,如果把做的系统部署到一台服务器上,所有的请求业务都由这台服务器处理。显然,当业务增长到一定程度的时候,服务器的硬件会无法满足业务需求。很多人就会想到多部署几台服务器,这就是集群

1、分布式和集群

分布式:将多台服务器集中在一起,每台服务器都实现总体的不同业务,做不同的事。

举例:饭店有3个厨师,做菜分为洗菜、切菜、下锅3个步骤。3个人进行分工,有个人专门洗菜,有个人专门切菜,有个人专门下锅,从而完成做菜这个事情。

集群:指将多台服务器集中在一起,每台服务器都实现相同的业务,做相同的事情。

举例:饭店有3个厨师,做菜分为洗菜、切菜、下锅3个步骤。3个人同时洗菜,完成洗菜再同时切菜,完成切菜再同时下锅,从而完成做菜这个事情。

集群不一定是分布式,分布式一定是集群。

2、分布式存储

解决大数据时代海量数据存储方式,是将数据分散存储在多台独立的设备上

3、分布式计算

将该应用分解成许多小的部分,分配给多台计算机进行处理。这样可以节约整体计算时间,大大提高计算效率。

4、负载均衡、故障转移、伸缩性

负载均衡(Load Balance):将工作任务分摊到多个操作单元上进行执行,减少某台机器或某个程序的工作压力,使多台机器或多个程序协同完成工作任务。

故障转移(failover):当活动的服务或应用意外终止时,快速启用冗余或备用的服务器、系统、硬件或者网络接替它们工作,从而保障服务或应用能够继续正常运行。

伸缩性(scalability):随着需求和负荷的增长,可以向集群系统添加新的集群服务器或者在已存在的服务器中添加内存、磁盘等资源,从而提高集群系统的处理能力,实现高吞吐量和低延迟高性能。

(四)大数据的应用场景

大数据无处不在,大数据应用于各个行业,包括金融、汽车、餐饮、电信、能源、体能和娱乐等在内的社会各行各业都已经融入了大数据的印迹。

1、大数据疫情分析

2、人工智能

柯洁与alphago、无人餐厅、无人车、智能仓库。

3、数据分析预测

美国第二大超市塔吉特百货(Target)是最早玩大数据的零售商,他们拥有专业顾客数据分析模型,可对购买行为精确分析出早期怀孕的人群,然后先于同行精准营销商品。曾经一次精准营销让一个蒙在鼓里的父亲意外发现高中生女儿怀孕了,此事被纽约时报报道,轰动了全美。

4、啤酒加纸尿裤

沃尔玛百货将他们的纸尿裤和啤酒这两种风马牛不相及的两件商品进行搭配销售,反而能取到惊人的销售效果,这是为什么呢?

原来,美国的太太们常叮嘱她们的丈夫下班后为小孩买纸尿裤,而丈夫们在买纸尿裤后顺便买了啤酒。这一消费行为使得纸尿裤和啤酒存在了某种消费关联,因此,沃尔玛干脆将这两种商品放在了一起,从而提高了啤酒销量。

5、智慧出行

智慧出行也称智能交通,是指借助移动互联网、云计算、大数据、物联网等先进技术和理念,将传统交通运输业和互联网进行有效渗透与融合,形成具有“线上资源合理分配,线下高效优质运行”的新业态和新模式。

6、智慧旅游

利用大数据技术,提前预判游客人数,做好接待准备,构建智慧旅游业。

7、智慧社区

对社区中业主、物业、政府和商家等进行数据采集、数据分类,使业主能通过网络完成社区服务,社区生活更加便捷、快速、安全。

8、智慧医疗

通过打造健康档案区域医疗信息平台,利用最先进的物联网技术,实现患者与医务人员、医疗机构、医疗设备之间的互动,逐步达到信息化。

9、智慧农场

智慧农场是一款数字化农业线上租地种植、农业认养、农业电商、农业物联网、监控实时直播、多种营销功能等为一体的农业线上多平台。

(五)大数据业务分析步骤

很多时候我们在进行数据分析时,找不到突破点,其实大数据的数据分析需要围绕着数据展开,就是说,数据从哪里来,怎么来,来了存在哪里,如何计算,如何展示?

1、明确分析目的和思路

目的:为数据的采集、处理、统计分析提供清晰的方向

思路: (1)先分析什么,再分析什么,各分析点彼此是否有逻辑关系

(2)维度是否完整,分析结果是否有效、准确

(3)参照数据分析方法论,进行分析统计

2、数据采集、收集

(1)数据从无到有

比如传感器收集天气、温度、湿度等数据,埋点采集用户在网页上的各种行为数据

(2)数据传输搬运

比如说将业务数据库的数据传输到数据分析平台

3、数据的处理、清洗

对数据进行加工整理,形成适合分析统计的格式,保证数据的一致性和有效性

主要步骤包括数据清洗、转化、提取、计算(ETL)

4、数据的统计分析

用适当的分析方法和分析工具,对处理后的数据进行分析,提取有价值的信息,形成有效结论的过程

5、数据的应用

分析结果直接展示,形成报表

6、报告的撰写

大数据处理的最后阶段,就是撰写数据分析报告,这是对整个数据分析成果的展现。通过报告,可以清晰的把数据分析的目的过程结果方案完整呈现出来,以供商业性参考。一份好的数据分析报告需要图文并茂,层次明晰,能够让阅读者一目了然,更形象、直观地了解报告内容。

另外,数据分析报告不仅要展现出数据分析的过程和结果,还需要有明确的建议和对存在问题的解决方案,我们需要牢记,数据的初衷就是为展现商业上的现状及存在的问题才进行的分析。

7、大数据业务整体流程

(六)服务器及核心硬件介绍

无论是分布式还是集群,都是由部署在机房的多台服务器组成,那么他们到底依托那些硬件支撑呢?下面就一起来学习一下机房中的核心硬件。

1、服务器种类介绍

服务器是计算机的一种,它比普通计算机运行更快、负载更高、价格更贵。服务器在网络中为其它客户机(如PC机、智能手机、ATM等终端甚至是火车系统等大型设备)提供计算或者应用服务。服务器具有高速的CPU运算能力、长时间的可靠运行、强大的I/O外部数据吞吐能力以及更好的扩展性。根据服务器所提供的服务,一般来说服务器都具备承担响应服务请求、承担服务、保障服务的能力。服务器作为电子设备,其内部的结构十分的复杂,但与普通的计算机内部结构相差不大,如:cpu、硬盘、内存,系统、系统总线等。

服务器种类较多,简单介绍几种常见的服务器种类:

文件服务器

以文件数据存储与共享为主要功能的服务器,负责中央存储和数据文件管理,处于同一网络环境中的授权用户能随时访问共享文件

数据库服务器

运行在网络中的一台或多台服务器和数据库管理系统软件共同构成的,主要作用是为应用程序提供数据服务

邮件服务器

专门用来提供邮件收发的服务器

Web 服务器

存放各种网站的服务器,可通过 Web 浏览器连接此类服务器显示页面和运行应用程序

FTP 服务器

依照FTP协议提供文件存储和访问服务的服务器

2、机架

机架全称为机架式服务器,是用于固定电信柜内的接插板、外壳和设备。通常宽19英寸,高7英尺。对于IT行业,可简单理解为存放服务器的机柜,外形看来不像计算机,而像交换机,有1U(1U=1.75英寸)、2U、4U等规格。机架式服务器安装在标准的19英寸机柜里面,是功能型服务器,故标准机架也称“19英寸”机架。

3、网络拓扑图

网络拓扑结构是指用传输介质互连各种设备的物理布局。指构成网络的成员间特定的物理的即真实的、或者逻辑的即虚拟的排列方式。如果两个网络的连接结构相同我们就说它们的网络拓扑相同,尽管它们各自内部的物理接线、节点间距离可能会有不同。

4、Raid磁盘阵列

磁盘阵列(Redundant Arrays of Independent Disks,RAID)是由很多块独立的磁盘,组合成一个容量巨大的磁盘组,利用个别磁盘提供数据所产生加成效果提升整个磁盘系统效能。

利用这项技术,可以将数据切割成许多区段,分别存放在各个硬盘上。

磁盘阵列级别:

  1. Raid 0:将N块硬盘上选择合理的带区来创建带区集。
  2. Raid 1:把一个磁盘的数据镜像到另一个磁盘上
  3. Raid 0+1:综合了带区集和镜像的优势

详细介绍:https://www.cnblogs.com/pc-boke/articles/10149398.html

5、IDC数据中心

互联网数据中心(Internet Data Center,简称IDC)是指一种拥有完善的设备(包括高速互联网接入带宽、高性能局域网络、安全可靠的机房环境等)、专业化的管理、完善的应用的服务平台。在这个平台基础上,IDC服务商为客户提供互联网基础平台服务(服务器托管、虚拟主机、邮件缓存、虚拟邮件等)以及各种增值服务(场地的租用服务、域名系统服务、负载均衡系统、数据库系统、数据备份服务等)。

二、Hadoop概述

(一)Hadoop概念

狭义上来说,Hadoop是一个由Apache基金会所开发的分布式系统基础架构。

广义上来讲,大数据的一个生态圈,包括很多其他的软件(如spark/kafka/hive/hbase/zookeeper/等等),是一个适合大数据的分布式存储和计算平台。

(二)Hadoop发展简史

Lucene->nutch->hadoop

  1. Lucene--Doug Cutting用Java语言编写的开源软件,实现与Google类似的全文搜索功能,它提供了全文检索引擎的架构,包括完整的查询引擎和索引引擎 。在2001年年底成为apache基金会的一个子项目。对于大数量的场景,Lucene面对与Google同样的困难,存储数据困难,检索速度慢。
  2. 可以说Google是hadoop的思想之源(Google在大数据方面的三篇论文)谷歌的三驾马车:

GFS --->HDFS

Map-Reduce --->MR

BigTable --->Hbase

  1. Lucene学习和模仿Google解决这些问题的办法,演变成了微型版Nutch。
  2. 2003-2004年,Google公开了部分GFS和Mapreduce思想的细节,以此为基础Doug Cutting等人用了2年业余时间实现了DFS和Mapreduce机制,使Nutch性能飙升 。
  3. 2005 年Hadoop 作为Nutch的一部分正式引入Apache基金会。2006 年 3 月份,Map-Reduce和Nutch Distributed File System (NDFS) 分别被纳入称为 Hadoop 的项目中 。
  4. 名字来源于Doug Cutting儿子的玩具大象。
  5. Hadoop就此诞生并迅速发展,标志这大数据时代来临。

(三)Hadoop发行版本

Hadoop 三大发行版本: Apache、Cloudera 、Hortonworks。

Apache版本最原始(最基础)的版本,对于入门学习最好。

Cloudera在中小互联网企业中用的较多,方便部署和管理,能够大大减少企业的运营成本。而大型互联网企业中用Apache版本的较多,他们有实力对其优化和改进。

Hortonworks文档较好。

1、Apache Hadoop

官网地址:http://hadoop.apache.org/releases.html

下载地址:https://archive.apache.org/dist/hadoop/common/

2、Cloudera Hadoop

官网地址:https://www.cloudera.com/downloads/cdh/5-10-0.html

下载地址:http://archive-primary.cloudera.com/cdh5/cdh/5/

  1. 2008年成立的Cloudera是最早将Hadoop商用的公司,为合作伙伴提供Hadoop的商用解决方案,主要是包括支持、咨询服务、培训。
  2. 2009年Hadoop的创始人Doug Cutting也加盟Cloudera公司。Cloudera产品主要为CDH,Cloudera Manager,Cloudera Support
  3. CDH是Cloudera的Hadoop发行版,完全开源,比Apache Hadoop在兼容性,安全性,稳定性上有所增强。
  4. Cloudera Manager是集群的软件分发及管理监控平台,可以在几个小时内部署好一个Hadoop集群,并对集群的节点及服务进行实时监控。Cloudera Support即是对Hadoop的技术支持。
  5. Cloudera的标价为每年每个节点4000美元。Cloudera开发并贡献了可实时处理大数据的Impala项目
  6. ​​​​​​​​​​

3、Hortonworks Hadoop

官网地址:https://hortonworks.com/products/data-center/hdp/

下载地址:https://hortonworks.com/downloads/#data-platform

  1. 2011年成立的Hortonworks是雅虎与硅谷风投公司Benchmark Capital合资组建。
  2. 公司成立之初就吸纳了大约25名至30名专门研究Hadoop的雅虎工程师,上述工程师均在2005年开始协助雅虎开发Hadoop,贡献了Hadoop80%的代码。
  3. 雅虎工程副总裁、雅虎Hadoop开发团队负责人Eric Baldeschwieler出任Hortonworks的首席执行官。
  4. Hortonworks的主打产品是Hortonworks Data Platform(HDP),也同样是100%开源的产品,HDP除常见的项目外还包括了Ambari,一款开源的安装和管理系统。
  5. HCatalog,一个元数据管理系统,HCatalog现已集成到Facebook开源的Hive中。Hortonworks的Stinger开创性的极大的优化了Hive项目。Hortonworks为入门提供了一个非常好的,易于使用的沙盒。
  6. Hortonworks开发了很多增强特性并提交至核心主干,这使得Apache Hadoop能够在包括Window Server和Windows Azure在内的microsoft Windows平台上本地运行。定价以集群为基础,每10个节点每年为12500美元。
  7. 2018年国庆节,Cloudera和Hortonworks合并,Cloudera以股票方式收购Hortonworks,并逐步开始整合CDH和HDP,计划推出新产品CDP

(四)Hadoop的组成

Hadoop的设计宗旨是在解决,从单个服务器扩展到数千台机器,每台机器都提供本地计算和存储,那么hadoop到底是如何设计的呢,还得从他的组成开始抽丝剥茧,hadoop是由Hadoop Common、Hadoop Ozone、HDFS、Mapreduce以及Yarn 5个Module组成。

1、Hadoop HDFS

Hadoop HDFS(hadoop distribute file system ):一个高可靠、高吞吐量的分布式文件系统。一说到分布式,就要想到需要有多台机器担任不同角色,承担不同职责,完成共同的目标。这里的hdfs的角色分为namenode、datanode、secondarynamenode,完成存储文件的目标。在从hdfs读取文件或者是写文件的时候,客户端必须先找到namenode,然后再找datanode。

  1. Namenode,简称nn,即名称节点,它是集群的老大,一个java进程,启动在某个机器之上,用于存储文件的元数据,元数据就是描述数据(文件)的数据,例如文件名,文件目录结构,文件属性(生成时间、副本数、权限),以及每个文件的块列表,还有块所在的datanode等。
  2. Datanode,简称dn,即数据节点,它是集群的小弟,也是一个java进程,一个集群中,可以在多台机器上启动datanode进程。其作用是在本地文件系统存储文件块数据,以及块数据的校验和。
  3. Secondarynamenode,第二名称节点,简称2nn,用来辅助namenode,也是一个java进程,每隔一段时间获取hdfs元数据的快照。

2、Hadoop MapReduce

Hadoop MapReduce:一个分布式的离线并行计算框架。

MapReduce将计算过程分为两个阶段:Map(映射)和Reduce(归约)。当数据量比较小的时候,一台机器能够处理,但是当数据量非常大了,例如10T,这个时候,我们就需要考虑将数据分给多台机器来处理,比如分给10台机器,这个过程我们可以理解为map的过程。当这10台机器处理完毕了,都生成了各自的结果,最后需要将结果汇总,那么汇总的这个过程,可以成之后reduce的过程。

  1. Map阶段并行处理输入数据
  2. Reduce阶段对Map结果进行汇总

3、Hadoop YARN

Hadoop Yarn:作业调度与集群资源管理的平台。

Yarn也是分布式的平台,也是分角色的,用于接收用户提交的mapreduce作业,并将这些作业分配给集群内的机器执行。该架构由resourcemanager、nodemanager组成,resourcemanager是集群的老大,掌管整个集群的资源,是指挥者,不负责具体干活,而nodemanager是集群的小弟,掌管某个机器的资源,是具体干活的。

用户先把mapreduce作业提交给resourcemanager,然后resourcemanager会找到某个负载较低的nodemanager,在其机器上生成一个applicationMaster进程,将该mapreduce作业交给applicationMaster进程,由该进程全程调度指挥执行。

  1. ResourceManager(rm):是一个java进程,是整个集群的老大,启动在某台机器上。处理客户端请求、启动/监控ApplicationMaster、监控NodeManager、资源分配与调度。
  2. NodeManager(nm):是一个java进程,启动在某台机器上,是某台机器的老大。单个节点上的资源管理、处理来自ResourceManager的命令、处理来自ApplicationMaster的命令。
  3. ApplicationMaster:是一个java进程,启动在某台机器上,是某个mapreduce任务的老大。数据切分、为应用程序申请资源,并分配给内部任务、任务监控与容错。
  4. Container:对任务运行环境的抽象,用于运行mapreduce任务。封装了CPU、内存等多维资源以及环境变量、启动命令等任务运行相关的信息。

4、Hadoop Common

Hadoop Common:支持其他Hadoop模块的通用实用程序。提供其他模块所用的一系列工具类以及封装rpc通信框架。

5、Ozone

Ozone:新的对象存储系统,可用于小文件和大文件存储,设计的目的是为了填充社区在对象存储方面的不足,同时能够提供百亿甚至千亿级文件规模的存储。OZone与HDFS有着很深的关系,在设计上也对HDFS存在的不足做了很多改进,使用HDFS的生态系统可以无缝切换到OZone。Ozone同时支持Hadoop2.x和Hadoop3.x集群,能够和运行其上的Hive,Spark 等应用无缝集成。但是至今并未部署在生产环境中。

三、Hadoop运行环境搭建

学习Hadoop的第一步一定是环境搭建,但是安装不是目的,通过安装认识Hadoop才是目的。

(一)部署模式

  1. 单机 (Standalone):默认情况下,Hadoop被配置成以非分布式模式运行的一个独立Java进程。这对调试非常有帮助。
  2. 伪分布式(Pesudo Distributed):Hadoop可以在单节点上以所谓的伪分布式模式运行,此时每一个Hadoop守护进程都作为一个独立的Java进程运行。
  3. 集群 (Cluster):会将N个节点组成Hadoop集群,主节点和从节点分开部署在不同的机器上
  4. HA高可用 (High Available):主要用于生产环境部署,即高可用(7*24小时不中断服务)。解决hadoop的单点故障

这里我们搭建的是完整的集群模式。

(二)安装前准备

因为Hadoop是由java编写的,他的运行一定离不开jdk,又因为hadoop是分布式的需要多个节点去操作,这时一定要保证多个节点的时间同步,我们首先来配置jdk和时钟同步。

1、jdk的安装

(1)卸载现有jdk

a)查询是否安装java软件:

[root@bd-offcn-01 ~]$ rpm -qa | grep java

b)如果安装的版本低于1.8,卸载该jdk,将第一步查出的jdk卸载。

[root@bd-offcn-01 ~]$ rpm -e --nodeps 软件包

2)对用户offcn增加权限

[root@bd-offcn-01 offcn]# visudo

## Allow root to run any commands anywhere

root    ALL=(ALL)       ALL

offcn   ALL=(ALL)       NOPASSWD:ALL

## Allows members of the 'sys' group to run networking, software,

## service management apps and more.

# %sys ALL = NETWORKING, SOFTWARE, SERVICES, STORAGE, DELEGATING, PROCESSES, LOCATE, DRIVERS

## Allows people in group wheel to run all commands

%wheel  ALL=(ALL)       ALL

%offcn  ALL=(ALL)       NOPASSWD:ALL

3)切换用户offcn,在/home/offcn下创建目录

[offcn@bd-offcn-01 ~]$ mkdir bin apps data logs software

[offcn@bd-offcn-01 ~]$ ll

总用量 0

drwxrwxr-x. 3 offcn offcn 26 3月   5 16:27 bin

drwxrwxr-x. 3 offcn offcn 26 3月   5 16:27 apps

drwxrwxr-x. 2 offcn offcn  6 3月   5 15:46 data

drwxrwxr-x. 2 offcn offcn  6 3月   5 15:46 logs

drwxrwxr-x. 2 offcn offcn 40 3月   5 16:22 software

4)用文件传输工具将jdk导入到/home/offcn目录下面的software文件夹下面

5)在/home/offcn目录中查看软件包是否导入成功

[offcn@bd-offcn-01 ~]$ cd software/

[offcn@bd-offcn-01 software]$ ls

jdk-8u144-linux-x64.tar.gz

6)解压jdk到/home/offcn/app目录下

[offcn@bd-offcn-01 software]$ tar -zxvf jdk-8u144-linux-x64.tar.gz -C /home/offcn/app

7)配置jdk环境变量

a)先获取jdk路径:

[offcn@bd-offcn-01 jdk1.8.0_144]$ pwd

/home/offcn/app/jdk1.8.0_144

b)编辑内容/etc/profile

[offcn@bd-offcn-01 software]$  sudo vim /etc/profile

#JAVA_HOME

export JAVA_HOME=/home/offcn/apps/jdk1.8.0_144

export PATH=$PATH:$JAVA_HOME/bin

c)保存后退出:

:wq

d)让修改后的文件生效:

[offcn@bd-offcn-01 jdk1.8.0_144]$ source /etc/profile

(8)测试jdk是否安装成功

[offcn@bd-offcn-01 jdk1.8.0_144]# java -version

java version "1.8.0_144"

注意:重启(如果java -version可以用就不用重启)

[offcn@bd-offcn-01 jdk1.8.0_144]$  reboot

(9)在bd-offcn-01上将/etc/sudoers、/etc/profile和/home/offcn下新创建的目录同步到其他两台机器

2、时钟同步策略

时间同步的方式:在集群中找一台机器,作为时间服务器,集群中其他机器与这台机器定时的同步时间,比如,每隔十分钟,同步一次时间。

配置时间同步实操:

  1. 时间服务器配置(必须root用户)
  2. 检查ntp是否安装,若没有安装则使用yum install -y ntp进行安装

[offcn@bd-offcn-01 ~]$ rpm -qa|grep ntp

ntpdate-4.2.6p5-28.el7.centos.x86_64

python-ntplib-0.3.2-1.el7.noarch

fontpackages-filesystem-1.44-8.el7.noarch

ntp-4.2.6p5-28.el7.centos.x86_64

修改ntp配置文件

[offcn@bd-offcn-01 ~]$ sudo vim /etc/ntp.conf

修改内容如下

修改1(授权192.168.1.0网段上的所有机器可以从这台机器上查询和同步时间)

注意要将网段和掩码改成自己本地的

#restrict 192.168.1.0 mask 255.255.255.0 nomodify notrap为

restrict 192.168.1.0 mask 255.255.255.0 nomodify notrap

注意:192.168.1.0为子网地址

修改2(集群在局域网中,不使用其他的网络时间)

server 0.centos.pool.ntp.org iburst

server 1.centos.pool.ntp.org iburst

server 2.centos.pool.ntp.org iburst

server 3.centos.pool.ntp.org iburst为

#server 0.centos.pool.ntp.org iburst

#server 1.centos.pool.ntp.org iburst

#server 2.centos.pool.ntp.org iburst

#server 3.centos.pool.ntp.org iburst

添加3(当该节点丢失网络连接,依然可以作为时间服务器为集群中的其他节点提供时间同步)

server 127.127.1.0

fudge 127.127.1.0 stratum 10

修改/etc/sysconfig/ntpd 文件

[offcn@bd-offcn-01 ~]$ sudo vim /etc/sysconfig/ntpd

增加内容如下(让硬件时间与系统时间一起同步)

SYNC_HWCLOCK=yes

重新启动ntpd

[offcn@bd-offcn-01 ~]$ systemctl status ntpd

Stopped Network Time Service.

[offcn@bd-offcn-01 ~]$ sudo systemctl start ntpd

执行:

[offcn@bd-offcn-01 ~]$ sudo systemctl enable ntpd

[offcn@bd-offcn-01 ~]$ crontab -e

#编写脚本

*/1 * * * * sudo /usr/sbin/ntpdate ntp.aliyun.com

其他机器配置

将其它机器的ntp服务停掉并关闭开机启动

[offcn@bd-offcn-02 ~]$ sudo systemctl stop ntpd

[offcn@bd-offcn-02 ~]$ sudo systemctl disable ntpd

在其他机器配置10分钟与时间服务器同步一次

[offcn@bd-offcn-02 ~]$ crontab -e

#编写脚本

*/1 * * * * sudo /usr/sbin/ntpdate bd-offcn-01

修改任意机器时间

[offcn@bd-offcn-02 ~]$ sudo date -s "2017-9-11 11:11:11"

十分钟后查看机器是否与时间服务器同步

[offcn@bd-offcn-02 ~]$ date

(三)安装配置

1、安装Hadoop

Hadoop下载地址:https://archive.apache.org/dist/hadoop/common/hadoop-3.2.1/

(1)将hadoop-3.2.1.tar.gz 上传到/home/offcn/software

[offcn@bd-offcn-01 software]$ pwd

/home/offcn/software

[offcn@bd-offcn-01 software]$ ll

总用量 531948

-rw-r--r--. 1 root root 359196911 3月   8 11:00 hadoop-3.2.1.tar.gz

-rw-r--r--. 1 root root 185515842 3月   5 16:22 jdk-8u144-linux-x64.tar.gz

(2)将hadoop-3.2.1.tar.gz解压到/home/offcn/apps

[offcn@bd-offcn-01 software]$ tar -zxvf hadoop-3.2.1.tar.gz  -C ../apps/

[offcn@bd-offcn-01 software]$ ll

-rw-r--r--. 1 root root 359196911 3月   8 11:00 hadoop-3.2.1.tar.gz

(3)将Hadoop添加到环境变量

[offcn@bd-offcn-01 apps]$ sudo vim /etc/profile

#HADOOP_HOME

export HADOOP_HOME=/home/offcn/apps/hadoop-3.2.1

export PATH=$PATH:$HADOOP_HOME/bin

export PATH=$PATH:$HADOOP_HOME/sbin

(4)让修改后的文件生效

[offcn@bd-offcn-01 apps]$ source /etc/profile

(5)测试是否安装成功

[offcn@bd-offcn-01 apps]$ hadoop version

Hadoop 3.2.1

#注意:如果hadoop命令不能用可reboot尝试重启

2、集群规划

bd-offcn-01

bd-offcn-02

bd-offcn-03

HDFS

NameNode

DataNode

DataNode

SecondaryNameNode

DataNode

YARN

NodeManager

ResourceManager

NodeManager

NodeManager

3、修改配置文件

(1)配置Hadoop所使用Java的环境变量以及日志存储路径

[offcn@bd-offcn-01 hadoop]$ cd $HADOOP_HOME/etc/hadoop
[offcn@bd-offcn-01 hadoop]$ pwd
/home/offcn/apps/hadoop-3.2.1/etc/hadoop[offcn@bd-offcn-01 hadoop]$ vim hadoop-env.sh
export JAVA_HOME=/home/offcn/apps/jdk1.8.0_144
export HADOOP_LOG_DIR=/home/offcn/logs/hadoop-3.2.1export HDFS_NAMENODE_USER=offcn
export HDFS_DATANODE_USER=offcn
export HDFS_SECONDARYNAMENODE_USER=offcn
export YARN_RESOURCEMANAGER_USER=offcn
export YARN_NODEMANAGER_USER=offcn

(2)核心配置文件core-site.xml

[offcn@bd-offcn-01 hadoop]$ vim core-site.xml

<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?><configuration><property><name>fs.defaultFS</name><value>hdfs://bd-offcn-01:8020</value></property><property><name>hadoop.data.dir</name><value>/home/offcn/data/hadoop-3.2.1</value></property><property><name>hadoop.proxyuser.offcn.hosts</name><value>*</value></property><property><name>hadoop.proxyuser.offcn.groups</name><value>*</value></property>
</configuration>

(3)HDFS配置文件

配置hdfs-site.xml

[offcn@bd-offcn-01 hadoop]$ vim hdfs-site.xml

文件内容如下:

[offcn@bd-offcn-01 hadoop]$ vim hdfs-site.xml
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
<configuration><property><name>dfs.namenode.name.dir</name><value>file://${hadoop.data.dir}/name</value></property><property><name>dfs.datanode.data.dir</name><value>file://${hadoop.data.dir}/data</value></property><property><name>dfs.namenode.checkpoint.dir</name><value>file://${hadoop.data.dir}/namesecondary</value></property><property><name>dfs.client.datanode-restart.timeout</name><value>30</value></property><property><name>dfs.namenode.secondary.http-address</name><value>bd-offcn-03:9868</value></property><property><name>dfs.permissions</name><value>false</value></property>
</configuration>

(4)YARN配置文件

配置yarn-site.xml

[offcn@bd-offcn-01 hadoop]$ vim yarn-site.xml

文件内容如下:

<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?><configuration><property><name>yarn.nodemanager.aux-services</name><value>mapreduce_shuffle</value></property><property><name>yarn.resourcemanager.hostname</name><value>bd-offcn-02</value></property><property><name>yarn.nodemanager.env-whitelist</name><value>JAVA_HOME,HADOOP_COMMON_HOME,HADOOP_HDFS_HOME,HADOOP_CONF_DIR,CLASSPATH_PREPEND_DISTCACHE,HADOOP_YARN_HOME,HADOOP_MAPRED_HOME</value></property>
</configuration>

(5)MapReduce配置文件

配置mapred-site.xml

[offcn@bd-offcn-01 hadoop]$ vim mapred-site.xml

文件内容如下:

<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?><configuration><property><name>mapreduce.framework.name</name><value>yarn</value></property>
</configuration>

(6)配置works(去掉localhost,添加如下内容)

集群中的其余计算机充当DataNode和NodeManager。这些是workers。

[offcn@bd-offcn-01 hadoop]$ vim workers

bd-offcn-01

bd-offcn-02

bd-offcn-03

(7)远程同步文件命令rsync

语法

功能描述

rsync + 原文件路径 + 目标路径

远程对差异文件做同步更新

选项:

-a :归档模式,表示以递归方式传输文件,并保持所有文件属性

-v :显示复制过程的详细信息

rsync和scp的区别 rsync只对差异文件做更新,可以做增量或全量备份;而scp只能做全量备份。

(8)在集群上分发配置好的Hadoop配置文件

[offcn@bd-offcn-01 hadoop]$ rsync -av /home/offcn/apps/ bd-offcn-02:/home/offcn/apps/

[offcn@bd-offcn-01 hadoop]$ rsync -av /home/offcn/apps/ bd-offcn-03:/home/offcn/apps/

(9)查看文件分发情况

[offcn@bd-offcn-01 hadoop]$ cat /home/offcn/apps/hadoop-3.2.1/etc/hadoop/core-site.xml

(四)集群启停及测试

1、单点启动

(1)如果集群是第一次启动,需要格式化NameNode(格式化只进行一次!!!)

在格式化时,要保证一切正常,不要出现错误、异常、或者提示让选择yes或者no;如果出现错误等情况,把所有的配置检查一遍确认无误后,将hadoop安装目录下的data、pid、logs目录删除重新格式化。

[offcn@bd-offcn-01 hadoop-3.2.1]$ hadoop namenode -format

(2)在bd-offcn-01上启动NameNode

[offcn@bd-offcn-01 hadoop-3.2.1]$ hdfs --daemon start namenode

[offcn@bd-offcn-01 hadoop-3.2.1]$ jps

117252 NameNode

(3)在bd-offcn-01、bd-offcn-02、bd-offcn-03上分别启动Datanode

[offcn@bd-offcn-01 hadoop-3.2.1]$ hdfs --daemon start datanode

[offcn@bd-offcn-01 hadoop-3.2.1]$ jps

117252 NameNode

119583 DataNode

[offcn@bd-offcn-02 hadoop]$ hdfs --daemon start datanode

[offcn@bd-offcn-03 hadoop]$ hdfs --daemon start datanode

(4) 在bd-offcn-03上启动secondarynamenode

[offcn@bd-offcn-03 ~]$ hdfs --daemon start secondarynamenode

[offcn@bd-offcn-03 ~]$ jps

16048 SecondaryNameNode

(5)停止hadoop进程

[offcn@bd-offcn-01 hadoop-3.2.1]$ hdfs --daemon stop datanode

[offcn@bd-offcn-01 hadoop-3.2.1]$ hdfs --daemon stop namenode

[offcn@bd-offcn-02 hadoop-3.2.1]$ hdfs --daemon stop datanode

[offcn@bd-offcn-03 hadoop-3.2.1]$ hdfs --daemon stop secondarynamenode

2、集群群起启动

(1)如果集群是第一次启动,需要格式化NameNode(格式化只进行一次!!!),操作方式详见单点启动。

(2)启动HDFS

[offcn@bd-offcn-01 hadoop-3.2.1]$ sbin/start-dfs.sh

Starting namenodes on [bd-offcn-01]

Starting datanodes

Starting secondary namenodes [bd-offcn-03]

(3)在配置了ResourceManager的节点(bd-offcn-02)启动YARN

[offcn@bd-offcn-02 hadoop-3.2.1]$ sbin/start-yarn.sh

Starting resourcemanager

Starting nodemanagers

3、查看Web界面

(1)查看Hdfs的Web界面

浏览器输入地址:https://bd-offcn-01:9870/

2)查看Yarn的Web界面

浏览器输入地址:https://bd-offcn-02:8088/

4、集群测试

[offcn@bd-offcn-01 hadoop-3.2.1]$ hadoop fs -mkdir /test

[offcn@bd-offcn-01 hadoop-3.2.1]$ hadoop fs -put /home/app-2021-01-10.log /test

查看HDFS在磁盘存储文件内容

[offcn@bd-offcn-01 subdir0]$ head -n 1 blk_1073741825

上传大文件

[root@hadoop003 hadoop-3.2.1]$ hadoop fs -put /home/offcn/software/hadoop-3.2.1.tar.gz /test

文件拼接

[offcn@bd-offcn-01 subdir0]$ cat blk_1073741826 >> tmp.file

[offcn@bd-offcn-01 subdir0]$ cat blk_1073741827 >> tmp.file

[offcn@bd-offcn-01 subdir0]$ cat blk_1073741828 >> tmp.file

文件下载

[offcn@bd-offcn-01 data]$ pwd

/home/offcn/data

[offcn@bd-offcn-01 data]$ ll

总用量 0

[offcn@bd-offcn-01 data]$ hadoop fs -get /test/hadoop-3.2.1.tar.gz

[offcn@bd-offcn-01 data]$ ll

总用量 350780

-rw-r--r--. 1 offcn offcn 359196911 3月

5、MapReduce程序演示

[offcn@bd-offcn-01 mapreduce]$ pwd
/home/offcn/apps/hadoop-3.2.1/share/hadoop/mapreduce
[offcn@bd-offcn-01 mapreduce]$ hadoop jar hadoop-mapreduce-examples-3.2.1.jar pi 2 3

第1个参数2指的是要运行2次map任务 ;

第2个参数3指的是每个map任务,要投掷多少次 ; 

2个参数的乘积就是总的投掷次数(pi代码就是以投掷来计算值)。

运行过程中产生的日志记录可在Yarn中进行查看,如下图:

6、HDFS基准测试

实际生产环境当中,hadoop的环境搭建完成之后,第一件事情就是进行压力测试,测试Hadoop集群的读取和写入速度,测试网络带宽是否足够等一些基准测试。

(1)测试写入速度

向HDFS文件系统中写入数据,10个文件,每个文件10MB,文件存放到/benchmarks/TestDFSIO中

1、启动YARN集群

start-yarn.sh

2、启动写入基准测试

hadoop jar /home/offcn/apps/hadoop-3.2.1/share/hadoop/mapreduce/hadoop-mapreduce-client-jobclient-3.2.1-tests.jar  TestDFSIO -write -nrFiles 10  -fileSize 10MB

我们可以看到Hadoop启动了一个MapReduce作业来运行benchmark测试。

等待约2-5分钟,MapReduce程序运行成功后,就可以查看测试结果了。

3、查看写入速度结果

2029-04-09 20:44:57,673 INFO fs.TestDFSIO: ----- TestDFSIO ----- : write
2029-04-09 20:44:57,673 INFO fs.TestDFSIO:             Date & time: Sun May 09 20:44:57 CST 2021
2029-04-09 20:44:57,674 INFO fs.TestDFSIO:         Number of files: 10
2029-04-09 20:44:57,674 INFO fs.TestDFSIO:  Total MBytes processed: 100
2029-04-09 20:44:57,674 INFO fs.TestDFSIO:       Throughput mb/sec: 6.78
2029-04-09 20:44:57,674 INFO fs.TestDFSIO:  Average IO rate mb/sec: 8.44
2029-04-09 20:44:57,674 INFO fs.TestDFSIO:   IO rate std deviation: 3.84
2029-04-09 20:44:57,674 INFO fs.TestDFSIO:      Test exec time sec: 35.17
2029-04-09 20:44:57,674 INFO fs.TestDFSIO:

结果说明:

Total MBytes processed : 总共需要写入的数据量 100MB

Throughput mb/sec :总吞吐量

Average IO rate mb/sec :平均IO

IO rate std deviation :上一个值的标准差

Test exec time sec :整个job的执行时间

我们看到目前在虚拟机上的IO吞吐量约为:8.44MB/s

(2)测试读取速度

测试hdfs的读取文件性能,在HDFS文件系统中读入10个文件,每个文件10M

hadoop jar /home/offcn/apps/hadoop-3.2.1/share/hadoop/mapreduce/hadoop-mapreduce-client-jobclient-3.2.1-tests.jar  TestDFSIO -read -nrFiles 10  -fileSize 10MB

同样,Hadoop也会启动一个MapReduce程序来进行测试。

查看读取果

2021-05-09 20:54:01,824 INFO fs.TestDFSIO: ----- TestDFSIO ----- : read
2021-05-09 20:54:01,824 INFO fs.TestDFSIO:             Date & time: Sun May 09 20:54:01 CST 2021
2021-05-09 20:54:01,824 INFO fs.TestDFSIO:         Number of files: 10
2021-05-09 20:54:01,824 INFO fs.TestDFSIO:  Total MBytes processed: 100
2021-05-09 20:54:01,824 INFO fs.TestDFSIO:       Throughput mb/sec: 138.89
2021-05-09 20:54:01,824 INFO fs.TestDFSIO:  Average IO rate mb/sec: 182.1
2021-05-09 20:54:01,824 INFO fs.TestDFSIO:   IO rate std deviation: 123.49
2021-05-09 20:54:01,824 INFO fs.TestDFSIO:      Test exec time sec: 29.42
2021-05-09 20:54:01,825 INFO fs.TestDFSIO:

可以看到读取的吞吐量为:138.89Mb/s

(3)清除测试数据

测试期间,会在HDFS集群上创建 /benchmarks目录,测试完毕后,我们可以清理该目录。

[offcn@node1 mapreduce]# hdfs dfs -ls -R /benchmarks
drwxr-xr-x   - root supergroup          0 2020-09-25 10:05 /benchmarks/TestDFSIO
drwxr-xr-x   - root supergroup          0 2020-09-25 10:05 /benchmarks/TestDFSIO/io_control
-rw-r--r--   3 root supergroup        112 2020-09-25 10:05 /benchmarks/TestDFSIO/io_control/in_file_test_io_0
-rw-r--r--   3 root supergroup        112 2020-09-25 10:05 /benchmarks/TestDFSIO/io_control/in_file_test_io_1
-rw-r--r--   3 root supergroup        112 2020-09-25 10:05 /benchmarks/TestDFSIO/io_control/in_file_test_io_2
-rw-r--r--   3 root supergroup        112 2020-09-25 10:05 /benchmarks/TestDFSIO/io_control/in_file_test_io_3
-rw-r--r--   3 root supergroup        112 2020-09-25 10:05 /benchmarks/TestDFSIO/io_control/in_file_test_io_4
-rw-r--r--   3 root supergroup        112 2020-09-25 10:05 /benchmarks/TestDFSIO/io_control/in_file_test_io_5
-rw-r--r--   3 root supergroup        112 2020-09-25 10:05 /benchmarks/TestDFSIO/io_control/in_file_test_io_6
-rw-r--r--   3 root supergroup        112 2020-09-25 10:05 /benchmarks/TestDFSIO/io_control/in_file_test_io_7
-rw-r--r--   3 root supergroup        112 2020-09-25 10:05 /benchmarks/TestDFSIO/io_control/in_file_test_io_8
-rw-r--r--   3 root supergroup        112 2020-09-25 10:05 /benchmarks/TestDFSIO/io_control/in_file_test_io_9
drwxr-xr-x   - root supergroup          0 2020-09-25 09:56 /benchmarks/TestDFSIO/io_data
-rw-r--r--   3 root supergroup   10485760 2020-09-25 09:56 /benchmarks/TestDFSIO/io_data/test_io_0
……

执行清理:

hadoop jar /home/offcn/apps/hadoop-3.2.1/share/hadoop/mapreduce/hadoop-mapreduce-client-jobclient-3.2.1-tests.jar  TestDFSIO –clean

删除命令会将 /benchmarks目录中内容删除

2029-04-09 20:59:01,910 INFO fs.TestDFSIO: TestDFSIO.1.82029-04-09 20:59:01,911 INFO fs.TestDFSIO: nrFiles = 12029-04-09 20:59:01,911 INFO fs.TestDFSIO: nrBytes (MB) = 1.02029-04-09 20:59:01,911 INFO fs.TestDFSIO: bufferSize = 10000002029-04-09 20:59:01,911 INFO fs.TestDFSIO: baseDir = /benchmarks/TestDFSIO2029-04-09 20:59:02,185 INFO Configuration.deprecation: No unit for dfs.client.datanode-restart.timeout(30) assuming SECONDS2029-04-09 20:59:02,645 INFO fs.TestDFSIO: Cleaning up test files

day34~35_Hadoop介绍及集群安装相关推荐

  1. 大数据介绍及集群安装

    大数据介绍及集群安装 第一部分 <大数据概述> 传统数据如何处理? 什么是大数据? 传统数据与大数据的对比 大数据的特点? 大数据前/后服务器系统安装部署区别是什么?. 大数据生态系统以及 ...

  2. Spark集群安装介绍

    (1)初学者对于spark的几个疑问 http://aperise.iteye.com/blog/2302481 (2)spark开发环境搭建 http://aperise.iteye.com/blo ...

  3. spark (3)Spark Standalone集群安装介绍

    (1)初学者对于spark的几个疑问 http://aperise.iteye.com/blog/2302481 (2)spark开发环境搭建 http://aperise.iteye.com/blo ...

  4. Redis集群安装介绍

    安装Redis3.0 yum -y install cpp binutils glibc glibc-kernheaders glibc-common glibc-devel gcc make gcc ...

  5. 2021年大数据HBase(二):HBase集群安装操作

    全网最详细的大数据HBase文章系列,强烈建议收藏加关注! 新文章都已经列出历史文章目录,帮助大家回顾前面的知识重点. 目录 系列历史文章 前言 HBase集群安装操作 一.上传解压HBase安装包 ...

  6. ZooKeeper伪分布式集群安装及使用

    为什么80%的码农都做不了架构师?>>>    ZooKeeper伪分布式集群安装及使用 让Hadoop跑在云端系列文章,介绍了如何整合虚拟化和Hadoop,让Hadoop集群跑在V ...

  7. HBase 1.2.6 完全分布式集群安装部署详细过程

    2019独角兽企业重金招聘Python工程师标准>>> Apache HBase 是一个高可靠性.高性能.面向列.可伸缩的分布式存储系统,是NoSQL数据库,基于Google Big ...

  8. 大数据入门第五天——离线计算之hadoop(上)概述与集群安装

    一.概述 根据之前的凡技术必登其官网的原则,我们当然先得找到它的官网:http://hadoop.apache.org/ 1.什么是hadoop 先看官网介绍: The Apache™ Hadoop® ...

  9. redis3.0.2 分布式集群安装详细步骤

    redis3.0.2 分布式集群安装详细步骤 --(centos5.8 X64系统) 版本历史 时间 版本 说明 编写者 2015-06-5 1.0 redis3.0.2 分布式集群安装详细步骤 cs ...

最新文章

  1. 你知道R中的赋值符号箭头(-)和等号(=)的区别吗?
  2. tp5循环查询语句_tp5 foreach 套循环的优化(就是foreach 里边再查表)
  3. VMware虚拟机很卡~
  4. Oracle 11g 新特性简介
  5. 13.4. 临时表是否需要建索引
  6. Stm32之通用定时器复习
  7. 使用OpenCV需要注意的小细节
  8. Linux的百度云有限速吗,mac(linux)下配置aria2解决百度云限速问题
  9. 新东方托福词汇(List 16 ~ List 20)
  10. 活动回顾 | Mini XMan线上快闪活动圆满结束!
  11. 前端之TS类型注解、接口(vscode自编译ts→js)
  12. BottomNavigationView修改图标/文字大小,替换图标
  13. jq 隔行变色(横、纵)
  14. u盘只有盘符没有容量打不开-U盘无法识别,无法格式化
  15. Spark论文思想之-基于RDD构建的模型(Shark的来龙去脉)
  16. 怎么样用matlab做视频,MATLAB:使用writeVideo制作视频
  17. mbio期刊拒稿率_PLoS Pathogens
  18. 为什么一买就跌一卖就涨,主力如何利用AI大数据击穿散户的心理防线?
  19. 用gif图展示UML中箭头和线条的含义,及搞懂UML类图、时序图和用例图
  20. 手机CMWAP和CMNET上网

热门文章

  1. 情人节html5游戏,这个情人节,在《GTA》在线模式中获取“名钻”惊喜
  2. 王者服务器维护12.3,王者荣耀12.3体验服更新内容
  3. 微信公众号支付JSAPI 详细记录
  4. 尚硅谷周阳老师-redis脑图课件
  5. 计算机网络学习笔记5-UDP广播
  6. Java面试相关文章及Github学习资料
  7. Springboot 整合Swagger3 和 Knife4j
  8. 点亮一个RaspberryPi Pico
  9. vue中directive
  10. 【参赛作品4】Day2:openGauss安装