目录

大纲(HADOOP 2

1. HADOOP 快速入门 3

什么是HADOOP 3

HADOOP产生背景 3

HADOOP在大数据、云计算中的位置和关系 3

国内外HADOOP应用案例介绍 4

国内HADOOP的就业情况分析 5

HADOOP生态圈以及各组成部分的简介 6

分布式系统概述 6

2. HIVE快速入门 7

2.1 Hive基本介绍 7

2.2 Hive的基本使用 8

2.3 数据仓库基本知识 9

3. 数据分析案列演示 10

3.1 需求分析 10

3.1.1案例名称 10

3.1.2 案例需求描述 10

3.1.3 web点击流日志的数据格式 10

3.1.4 分析指标 11

3.1.5 统计结果数据可视化 11

3.2 数据来源分析 12

3.2.1 企业中获取数据的几种方式 12

3.2.2 数据采集 12

3.3 数据处理流程 13

数据预处理/加载入库 13

使用Hive做数据ETL 14

使用Hive运算业务指标 16

将结果数据导出到mysqlsqoop 17

结果展现——数据可视化 17

4. 集群搭建 18

4.1 HADOOP集群搭建 18

4.1.1集群简介: 18

4.1.2服务器准备 18

4.1.3网络环境准备 18

4.1.4服务器系统设置 18

4.1.5 Jdk环境安装 19

4.1.6 HADOOP安装部署 19

4.1.7 启动集群 21

4.1.8 测试 21

4.2 Hive搭建 22

Hive的配置安装 22

Hive的使用 23

Hive运行测试 23

课程(HADOOP)

HADOOP快速入门

HADOOP快速入门

HADOOP产生背景

HADOOP在大数据、云计算中的位置和关系

国内外HADOOP应用案例介绍

国内HADOOP的就业情况分析及课程大纲介绍

分布式系统概述

HADOOP生态圈以及各组成部分的简介

Hive快速入门

Hive快速入门

Hive基本介绍

Hive的使用

数据仓库基本知识

数据分析案例演示

需求分析

案列:定义需求、介绍数据格式

数据获取

企业中获取数据的几种方式

将文件直接导入到数据仓库

将数据库的数据导入到数据仓库(sqoop)

数据处理

使用Hive对数进行清洗(ETL的过程)

数据计算

使用Hive对数据进行计算

数据展现

将结果数据导出到mysql(sqoop)

建立起大数据和分布式的宏观概念

1、理解hadoop是什么,用于做什么,大体上怎么用

2、理解hive是什么,用于做什么,大体上怎么用

3、通过一个案例的演示说明,理解数据挖掘系统的基本流程和结构

1. HADOOP背景介绍

1.1 什么是HADOOP

  1. HADOOP是apache旗下的一套开源软件平台
  2. HADOOP提供的功能:利用服务器集群,根据用户的自定义业务逻辑,对海量数据进行分布式处理
  3. HADOOP的核心组件有
    1. HDFS(分布式文件系统)
    2. YARN(运算资源调度系统)
    3. MAPREDUCE(分布式运算编程框架)
  4. 广义上来说,HADOOP通常是指一个更广泛的概念——HADOOP生态圈

1.2 HADOOP产生背景

  1. HADOOP最早起源于Nutch。Nutch的设计目标是构建一个大型的全网搜索引擎,包括网页抓取、索引、查询等功能,但随着抓取网页数量的增加,遇到了严重的可扩展性问题——如何解决数十亿网页的存储和索引问题。
  2. 2003年、2004年谷歌发表的两篇论文为该问题提供了可行的解决方案

——分布式文件系统(GFS),可用于处理海量网页的存储

——分布式计算框架MAPREDUCE,可用于处理海量网页的索引计算问题。

  1. Nutch的开发人员完成了相应的开源实现HDFS和MAPREDUCE,并从Nutch中剥离成为独立项目HADOOP,到2008年1月,HADOOP成为Apache顶级项目,迎来了它的快速发展期。

1.3 HADOOP在大数据、云计算中的位置和关系

  1. 云计算是分布式计算、并行计算、网格计算、多核计算、网络存储、虚拟化、负载均衡等传统计算机技术和互联网技术融合发展的产物。借助IaaS(基础设施即服务)、PaaS(平台即服务)、SaaS(软件即服务)等业务模式,把强大的计算能力提供给终端用户。
  2. 现阶段,云计算的两大底层支撑技术为“虚拟化”和“大数据技术
  3. 而HADOOP则是云计算的PaaS层的解决方案之一,并不等同于PaaS,更不等同于云计算本身。

1.4 国内外HADOOP应用案例介绍

1、HADOOP应用于数据服务基础平台建设

2  HADOOP用于用户画像

3、HADOOP用于网站点击流日志数据挖掘

1.5 国内HADOOP的就业情况分析

  1. HADOOP就业整体情况
  1. 大数据产业已纳入国家十三五规划
  2. 各大城市都在进行智慧城市项目建设,而智慧城市的根基就是大数据综合平台
  3. 互联网时代数据的种类,增长都呈现爆发式增长,各行业对数据的价值日益重视
  4. 相对于传统JAVAEE技术领域来说,大数据领域的人才相对稀缺
  5. 随着现代社会的发展,数据处理和数据挖掘的重要性只会增不会减,因此,大数据技术是一个尚在蓬勃发展且具有长远前景的领域
  6. HADOOP就业职位要求

大数据是个复合专业,包括应用开发、软件平台、算法、数据挖掘等,因此,大数据技术领域的就业选择是多样的,但就HADOOP而言,通常都需要具备以下技能或知识:

  1. HADOOP分布式集群的平台搭建
  2. HADOOP分布式文件系统HDFS的原理理解及使用
  3. HADOOP分布式运算框架MAPREDUCE的原理理解及编程
  4. Hive数据仓库工具的熟练应用
  5. Flume、sqoop、oozie等辅助工具的熟练使用
  6. Shell/python等脚本语言的开发能力
  7. HADOOP相关职位的薪资水平

大数据技术或具体到HADOOP的就业需求目前主要集中在北上广深一线城市,薪资待遇普遍高于传统JAVAEE开发人员,以北京为例:

1.6 HADOOP生态圈以及各组成部分的简介

各组件简介

重点组件:

HDFS:分布式文件系统

MAPREDUCE:分布式运算程序开发框架

HIVE:基于大数据技术(文件系统+运算框架)的SQL数据仓库工具

HBASE:基于HADOOP的分布式海量数据库

ZOOKEEPER:分布式协调服务基础组件

Mahout:基于mapreduce/spark/flink等分布式运算框架的机器学习算法库

Oozie:工作流调度框架

Sqoop:数据导入导出工具

Flume:日志数据采集框架

2 分布式系统概述

注:由于大数据技术领域的各类技术框架基本上都是分布式系统,因此,理解hadoop、storm、spark等技术框架,都需要具备基本的分布式系统概念

2.1 分布式软件系统(Distributed Software Systems)

  • 该软件系统会划分成多个子系统或模块,各自运行在不同的机器上,子系统或模块之间通过网络通信进行协作,实现最终的整体功能
  • 比如分布式操作系统、分布式程序设计语言及其编译(解释)系统、分布式文件系统和分布式数据库系统等。

2.2 分布式软件系统举例:solrcloud 

  1. 一个solrcloud集群通常有多台solr服务器
  2. 每一个solr服务器节点负责存储整个索引库的若干个shard(数据分片)
  3. 每一个shard又有多台服务器存放若干个副本互为主备用
  4. 索引的建立和查询会在整个集群的各个节点上并发执行
  5. solrcloud集群作为整体对外服务,而其内部细节可对客户端透明

总结:利用多个节点共同协作完成一项或多项具体业务功能的系统就是分布式系统。

2.3 分布式应用系统模拟开发

需求:可以实现由主节点将运算任务发往从节点,并将各从节点上的任务启动;

程序清单:

AppMaster

AppSlave/APPSlaveThread

Task

程序运行逻辑流程:

3. 离线数据分析流程介绍

注:本环节主要感受数据分析系统的宏观概念及处理流程,初步理解hadoop等框架在其中的应用环节,不用过于关注代码细节

一个应用广泛的数据分析系统:“web日志数据挖掘”

3.1 需求分析

3.1.1 案例名称

“网站或APP点击流日志数据挖掘系统”。

一般中型的网站(10W的PV以上),每天会产生1G以上Web日志文件。大型或超大型的网站,可能每小时就会产生10G的数据量。

具体来说,比如某电子商务网站,在线团购业务。每日PV数100w,独立IP数5w。用户通常在工作日上午10:00-12:00和下午15:00-18:00访问量最大。日间主要是通过PC端浏览器访问,休息日及夜间通过移动设备访问较多。网站搜索浏量占整个网站的80%,PC用户不足1%的用户会消费,移动用户有5%会消费。

对于日志的这种规模的数据,用HADOOP进行日志分析,是最适合不过的了。

3.1.2 案例需求描述

“Web点击流日志”包含着网站运营很重要的信息,通过日志分析,我们可以知道网站的访问量,哪个网页访问人数最多,哪个网页最有价值,广告转化率、访客的来源信息,访客的终端信息等。

3.1.3 数据来源

本案例的数据主要由用户的点击行为记录

获取方式:在页面预埋一段js程序,为页面上想要监听的标签绑定事件,只要用户点击或移动到标签,即可触发ajax请求到后台servlet程序,用log4j记录下事件信息,从而在web服务器(nginx、tomcat等)上形成不断增长的日志文件。

形如:

58.215.204.118 - - [18/Sep/2013:06:51:35 +0000] "GET /wp-includes/js/jquery/jquery.js?ver=1.10.2 HTTP/1.1" 304 0 "http://blog.fens.me/nodejs-socketio-chat/" "Mozilla/5.0 (Windows NT 5.1; rv:23.0) Gecko/20100101 Firefox/23.0"

3.2 数据处理流程

3.2.1 流程图解析

本案例跟典型的BI系统极其类似,整体流程如下:

但是,由于本案例的前提是处理海量数据,因而,流程中各环节所使用的技术则跟传统BI完全不同,后续课程都会一一讲解:

  1. 数据采集:定制开发采集程序,或使用开源框架FLUME
  2. 数据预处理:定制开发mapreduce程序运行于hadoop集群
  3. 数据仓库技术:基于hadoop之上的Hive
  4. 数据导出:基于hadoop的sqoop数据导入导出工具
  5. 数据可视化:定制开发web程序或使用kettle等产品
  6. 整个过程的流程调度:hadoop生态圈中的oozie工具或其他类似开源产品

3.2.2 项目技术架构图

3.2.3 项目相关截图(感性认识,欣赏即可)

  1. Mapreudce程序运行

  1. 在Hive中查询数据

  1. 将统计结果导入mysql

./sqoop export --connect jdbc:mysql://localhost:3306/weblogdb --username root --password root  --table t_display_xx  --export-dir /user/hive/warehouse/uv/dt=2014-08-03

3.3 项目最终效果

经过完整的数据处理流程后,会周期性输出各类统计指标的报表,在生产实践中,最终需要将这些报表数据以可视化的形式展现出来,本案例采用web程序来实现数据可视化

效果如下所示:

4. 集群搭建

4.1 HADOOP集群搭建

4.1.1集群简介

HADOOP集群具体来说包含两个集群:HDFS集群和YARN集群,两者逻辑上分离,但物理上常在一起

HDFS集群:

负责海量数据的存储,集群中的角色主要有 NameNode / DataNode

YARN集群:

负责海量数据运算时的资源调度,集群中的角色主要有 ResourceManager /NodeManager

(那mapreduce是什么呢?它其实是一个应用程序开发包)

本集群搭建案例,以5节点为例进行搭建,角色分配如下:

hdp-node-01    NameNode  SecondaryNameNode

hdp-node-02    ResourceManager

hdp-node-03 DataNode    NodeManager

hdp-node-04 DataNode    NodeManager

hdp-node-05 DataNode    NodeManager

部署图如下:

4.1.2服务器准备

本案例使用虚拟机服务器来搭建HADOOP集群,所用软件及版本:

  • Vmware 11.0
  • Centos  6.5  64bit

4.1.3网络环境准备

  • 采用NAT方式联网
  • 网关地址:192.168.33.1
  • 3个服务器节点IP地址:192.168.33.101、192.168.33.102、192.168.33.103
  • 子网掩码:255.255.255.0

4.1.4服务器系统设置

  • 添加HADOOP用户
  • 为HADOOP用户分配sudoer权限
  • 同步时间
  • 设置主机名
    1. hdp-node-01
    2. hdp-node-02
    3. hdp-node-03
  • 配置内网域名映射:
    1. 192.168.33.101          hdp-node-01
    2. 192.168.33.102          hdp-node-02
    3. 192.168.33.103          hdp-node-03
  • 配置ssh免密登陆
  • 配置防火墙

4.1.5 Jdk环境安装

  • 上传jdk安装包
  • 规划安装目录  /home/hadoop/apps/jdk_1.7.65
  • 解压安装包
  • 配置环境变量 /etc/profile

4.1.6 HADOOP安装部署

  • 上传HADOOP安装包
  • 规划安装目录  /home/hadoop/apps/hadoop-2.6.1
  • 解压安装包
  • 修改配置文件  $HADOOP_HOME/etc/hadoop/

最简化配置如下:

vi  hadoop-env.sh

# The java implementation to use.

export JAVA_HOME=/home/hadoop/apps/jdk1.7.0_51

vi  core-site.xml

<configuration>

<property>

<name>fs.defaultFS</name>

<value>hdfs://hdp-node-01:9000</value>

</property>

<property>

<name>hadoop.tmp.dir</name>

<value>/home/HADOOP/apps/hadoop-2.6.1/tmp</value>

</property>

</configuration>

vi  hdfs-site.xml

<configuration>

<property>

<name>dfs.namenode.name.dir</name>

<value>/home/hadoop/data/name</value>

</property>

<property>

<name>dfs.datanode.data.dir</name>

<value>/home/hadoop/data/data</value>

</property>

<property>

<name>dfs.replication</name>

<value>3</value>

</property>

<property>

<name>dfs.secondary.http.address</name>

<value>hdp-node-01:50090</value>

</property>

</configuration>

vi  mapred-site.xml

<configuration>

<property>

<name>mapreduce.framework.name</name>

<value>yarn</value>

</property>

</configuration>

vi  yarn-site.xml

<configuration>

<property>

<name>yarn.resourcemanager.hostname</name>

<value>hadoop01</value>

</property>

<property>

<name>yarn.nodemanager.aux-services</name>

<value>mapreduce_shuffle</value>

</property>

</configuration>

vi  salves

hdp-node-01

hdp-node-02

hdp-node-03

4.1.7 启动集群

初始化HDFS

bin/hadoop  namenode  -format

启动HDFS

sbin/start-dfs.sh

启动YARN

sbin/start-yarn.sh

4.1.8 测试

1、上传文件到HDFS

从本地上传一个文本文件到hdfs的/wordcount/input目录下

[HADOOP@hdp-node-01 ~]$ HADOOP fs -mkdir -p /wordcount/input

[HADOOP@hdp-node-01 ~]$ HADOOP fs -put /home/HADOOP/somewords.txt  /wordcount/input

2、运行一个mapreduce程序

在HADOOP安装目录下,运行一个示例mr程序

cd $HADOOP_HOME/share/hadoop/mapreduce/

hadoop jar mapredcue-example-2.6.1.jar wordcount /wordcount/input  /wordcount/output

5 集群使用初步

5.1 HDFS使用

1、查看集群状态

命令:   hdfs  dfsadmin  –report

可以看出,集群共有3个datanode可用

也可打开web控制台查看HDFS集群信息,在浏览器打开http://hdp-node-01:50070/

2、上传文件到HDFS

  • 查看HDFS中的目录信息

命令:   hadoop  fs  –ls  /

  • 上传文件

命令:   hadoop  fs  -put  ./ scala-2.10.6.tgz  to  /

  • 从HDFS下载文件

命令:  hadoop  fs  -get  /yarn-site.xml

5.2 MAPREDUCE使用

mapreduce是hadoop中的分布式运算编程框架,只要按照其编程规范,只需要编写少量的业务逻辑代码即可实现一个强大的海量数据并发处理程序

5.2.1 Demo开发——wordcount

1、需求

从大量(比如T级别)文本文件中,统计出每一个单词出现的总次数

2、mapreduce实现思路

Map阶段:

  1. 从HDFS的源数据文件中逐行读取数据
  2. 将每一行数据切分出单词
  3. 为每一个单词构造一个键值对(单词,1)
  4. 将键值对发送给reduce

Reduce阶段:

  1. 接收map阶段输出的单词键值对
  2. 将相同单词的键值对汇聚成一组
  3. 对每一组,遍历组中的所有“值”,累加求和,即得到每一个单词的总次数
  4. 将(单词,总次数)输出到HDFS的文件中
  5. 具体编码实现

(1)定义一个mapper类

//首先要定义四个泛型的类型

//keyin:  LongWritable    valuein: Text

//keyout: Text            valueout:IntWritable

public class WordCountMapper extends Mapper<LongWritable, Text, Text, IntWritable>{

//map方法的生命周期:  框架每传一行数据就被调用一次

//key :  这一行的起始点在文件中的偏移量

//value: 这一行的内容

@Override

protected void map(LongWritable key, Text value, Context context) throws IOException, InterruptedException {

//拿到一行数据转换为string

String line = value.toString();

//将这一行切分出各个单词

String[] words = line.split(" ");

//遍历数组,输出<单词,1>

for(String word:words){

context.write(new Text(word), new IntWritable(1));

}

}

}

(2)定义一个reducer类

//生命周期:框架每传递进来一个kv 组,reduce方法被调用一次

@Override

protected void reduce(Text key, Iterable<IntWritable> values, Context context) throws IOException, InterruptedException {

//定义一个计数器

int count = 0;

//遍历这一组kv的所有v,累加到count中

for(IntWritable value:values){

count += value.get();

}

context.write(key, new IntWritable(count));

}

}

(3)定义一个主类,用来描述job并提交job

public class WordCountRunner {

//把业务逻辑相关的信息(哪个是mapper,哪个是reducer,要处理的数据在哪里,输出的结果放哪里。。。。。。)描述成一个job对象

//把这个描述好的job提交给集群去运行

public static void main(String[] args) throws Exception {

Configuration conf = new Configuration();

Job wcjob = Job.getInstance(conf);

//指定我这个job所在的jar包

// wcjob.setJar("/home/hadoop/wordcount.jar");

wcjob.setJarByClass(WordCountRunner.class);

wcjob.setMapperClass(WordCountMapper.class);

wcjob.setReducerClass(WordCountReducer.class);

//设置我们的业务逻辑Mapper类的输出key和value的数据类型

wcjob.setMapOutputKeyClass(Text.class);

wcjob.setMapOutputValueClass(IntWritable.class);

//设置我们的业务逻辑Reducer类的输出key和value的数据类型

wcjob.setOutputKeyClass(Text.class);

wcjob.setOutputValueClass(IntWritable.class);

//指定要处理的数据所在的位置

FileInputFormat.setInputPaths(wcjob, "hdfs://hdp-server01:9000/wordcount/data/big.txt");

//指定处理完成之后的结果所保存的位置

FileOutputFormat.setOutputPath(wcjob, new Path("hdfs://hdp-server01:9000/wordcount/output/"));

//向yarn集群提交这个job

boolean res = wcjob.waitForCompletion(true);

System.exit(res?0:1);

}

5.2.2 程序打包运行

  1. 将程序打包
  2. 准备输入数据

vi  /home/hadoop/test.txt

Hello tom

Hello jim

Hello ketty

Hello world

Ketty tom

在hdfs上创建输入数据文件夹:

hadoop   fs  mkdir  -p  /wordcount/input

将words.txt上传到hdfs上

hadoop  fs  –put  /home/hadoop/words.txt  /wordcount/input

  1. 将程序jar包上传到集群的任意一台服务器上
  2. 使用命令启动执行wordcount程序jar包

$ hadoop jar wordcount.jar cn.itcast.bigdata.mrsimple.WordCountDriver /wordcount/input /wordcount/out

  1. 查看执行结果

$ hadoop fs –cat /wordcount/out/part-r-00000

Hadoop 入门总结相关推荐

  1. Hadoop新手篇:hadoop入门基础教程

    Hadoop新手篇:hadoop入门基础教程 关于hadoop的分享此前一直都是零零散散的想到什么就写什么,整体写的比较乱吧.最近可能还算好的吧,毕竟花了两周的时间详细的写完的了hadoop从规划到环 ...

  2. Hadoop入门基础教程 Hadoop之单词计数

    单词计数是最简单也是最能体现MapReduce思想的程序之一,可以称为MapReduce版"Hello World",该程序的完整代码可以在Hadoop安装包的src/exampl ...

  3. Hadoop入门基础教程 Hadoop之完全分布式环境搭建

    上一篇我们完成了Hadoop伪分布式环境的搭建,伪分布式模式也叫单节点集群模式, NameNode.SecondaryNameNode.DataNode.JobTracker.TaskTracker所 ...

  4. 一.hadoop入门须知

    目录: 1.hadoop入门须知 2.hadoop环境搭建 3.hadoop mapreduce之WordCount例子 4.idea本地调试hadoop程序 5.hadoop 从mysql中读取数据 ...

  5. 大数据与Hadoop有什么关系?大数据Hadoop入门简介

    学习着数据科学与大数据技术专业(简称大数据)的我们,对于"大数据"这个词是再熟悉不过了,而每当我们越去了解大数据就越发现有个词也会一直被提及那就是--Hadoop 那Hadoop与 ...

  6. Hadoop 入门学习思维导图

    Hadoop 入门学习思维导图:

  7. Hadoop新手篇:hadoop入门基础教程 1

    Hadoop新手篇:hadoop入门基础教程 关于hadoop的分享此前一直都是零零散散的想到什么就写什么,整体写的比较乱吧.最近可能还算好的吧,毕竟花了两周的时间详细的写完的了hadoop从规划到环 ...

  8. 大数据框架Hadoop篇之Hadoop入门

    1. 写在前面 今天开始,想开启大数据框架学习的一个新系列,之前在学校的时候就会大数据相关技术很是好奇,但苦于没有实践场景,对这些东西并没有什么体会,到公司之后,我越发觉得大数据的相关知识很重要,不管 ...

  9. [学习笔记]黑马程序员-Hadoop入门视频教程

    文章目录 参考资料 第一章:大数据导论与Linux基础(p1-p17) 1.1 大数据导论 1.1.1 企业数据分析方向 1.1.2 数据分析基本流程步骤 明确分析的目的和思路 数据收集 数据处理 数 ...

  10. hadoop入门教程免费下载

    Hadoop入门教程免费下载,学习大数据的小伙伴应该都知道Hadoop是必须要接触的,学习大数据,从Hadoop入门教程开始. Hadoop是什么? 首先我们了解到Hadoop是Apache软件基金会 ...

最新文章

  1. 框架中解决部分页面返回登录
  2. jmu-python-凯撒密码加密算法_7-30 jmu-python-凯撒密码加密算法 (10 分)
  3. 【译】为什么这样宏定义#define INT_MIN (-2147483647 - 1)?
  4. JVM_07 Class文件结构
  5. 跟优秀的人一起进步:四月组队学习
  6. 【工业控制】OmniCal软件安装和使用详解
  7. centos samba 配置
  8. 计算机如何学会自动构图?
  9. python自动测试相机_Python + Appium+ IOS自动化测试
  10. 输出毫秒_毫秒级网络监控(网络示波器)
  11. proteus中power怎么设置电压_Proteus 电源设置
  12. 电脑计算机稳定删除垃圾游戏,电脑卡怎么办简单步骤_如何清理电脑垃圾
  13. r语言怎么做经验分布_医学统计与R语言:对数正态分布与卡方分布
  14. 零基础学习Java会不会很吃力?
  15. 计算机毕业设计jsp宠物美容网站
  16. JS HTML5仿微信朋友圈特效
  17. 第七届河南省程序设计大赛——A 海岛争霸
  18. php7 kernel32,usleep()
  19. html阻止手机休眠,阻止系统休眠怎么关掉
  20. 滴水逆向学习总结第一期

热门文章

  1. 这些优秀的 Spring Cloud 开源软件,你知道的有几个?
  2. 阿里云后台部署全过程-6-HTTPS原理及配置
  3. 【ROS】rosbag
  4. Linux 搭建zookpeer集群和配置
  5. ae计算机配置要求,AE和PR要求电脑的最低配置分别是?
  6. 神经网络的具体应用实例,各种神经网络的应用
  7. ALGOL语言 发展历史
  8. 基于图灵api实现微信聊天机器人
  9. 多台电脑共享上网的方法:在Windows XP中设置Internet连接共享
  10. 【翻译】通过GSoC、GSoD、LFX和Outreachy来庆祝CNCF实习的成功五周年