学习大纲
前置知识:
- java基础
- linux基本操作
- mysql基本操作
开发工具:
IDEA
环境参数:
- CDH(5.15.1)
大数据定义:
大数据4V特征:
- 数据量大
- 速度快
- 多样性,复杂性
- 基于高度分析的新价值
大数据带来的技术变革:
- 技术驱动: 数据量大
- 存储:文件储存==> 分布式存储
- 计算:单机 ==> 分布式计算
- 网络:万兆
- DB :RDBMS(mysql) ==> NoSQL(HBase/Redis)
- 商业驱动:
大数据现存模式
- 手握大数据,没有大数据思维(电信,政府,国企啊)
- 没有大数据,有大数据思维(利用别人的数据做分析)
- 既有大数据,又有大数据思维(谷歌,亚马逊,阿里)
大数据的技术概念
- 单机:CPU Memory Disk
- 分布式并行计算/处理:
1.数据采集 :Flume Sqoop
2.数据处理,分析,挖掘:Hadoop,Spark,Flink …
3.数据存储 :Hadoop
4.可视化:
船的选择:
- 廉价
- 中高价值
运输过程拆开
- 货物搬到船上: 数据采集 数据存储
- 处理: 小于多少的石头扔了 精细化的筛选
大数据带来的挑战:
-
对现有数据库管理技术的挑战
-
经典的数据库没有考虑数据的多类别
-
实时性的技术挑战
-
网络架构,数据中心,运维的挑战
- 数据隐私
- 数据源的复杂多样
如何对大数据进行存储和分析
- 系统瓶颈
- 存储容量
- 读写速度
- 计算效率
- Google大数据计算
- MapReduce :计算
- BigTable :存储
- GFS :文件系统
- 大数据典型应用
- count/sum/avg
- group by/join
- 窗口分析函数
- 欺诈/异常检测
- 人工智能
- 报表
- 用户细分(标签)
- 指标监控
- 指标预警
Hadoop
-
Hadoop概述
- 名字由来:作者:Doug cutting : Nutch,Hadoop (玩具的命名)
- 学习一个新的框架,自己查看该项目的官方网址
- Hadoop
- Hive
- Apache社区的顶级项目: xxx.apache.org
- hadoop.apache.org
- hive.apache.org
- spark.apache.org
- reliable, scalable,distributed,computing. (可靠,可扩展,分布式,计算)
-
Hadoop核心组件
- Hadoop Common
- Hadoop Distributed FIle System(HDFS) :实现将文件分布式存储在很多的服务器上
- Hadoop YARN :(job secheduling cluster resource management):
- Hadoop MapReduce: 实现机器上分布式计算
-
Hadoop优势
-
高可靠性
-
数据存储:数据块多副本
-
数据计算:重新调度作业计算
-
高扩展性:横向扩展集群,一个集群中可以包含数以千集的节点
-
成熟的生态圈
-
降低成本:存储在廉价的机器上(去IoE)
-
-
-
Hadoop发展史 :每个版本加入了什么功能
-
Hadoo生态系统 :
- 广义
- [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-jO3TH90w-1585626536778)(C:\Users\15209\Pictures\博客\images\大数据05.jpg)]
- Hadoop 生态系统
- 开源,社区活跃
- 囊括了大数据处理的方方面面
- 成熟的生态圈
- 生态系统的每一个子系统只解决一个
- 狭义
- HDFS
- YARN
- MapReduce
- 广义
-
Hadoop发行版的选择
- Apache
- 纯开源
- 不同版本/不同框架之间整合 jar冲突非常多 。。。
- 生产上不建议
- CDH :https://www.cloudera.com 60%-70%
- cm(cloudera manager) 通过页面一键安装各种框架,升级方便
- 与spark结合非常紧密,文档非常详细,支持impala
- cm不开源,与社区版本有些许出入
- Hortonworks : HDP 企业发布自己的数据平台可以直接基于页面框架进行改造
- 优点:原装Hadoop,纯开源支持tez
- 企业级不开源
- Apache
Hadoop:
- 提供分布式存储(一个文件被拆分成很多块,并且以副本的方式存储在各个节点中)和计算,
- 是一个分布式的系统集成架构:用户可以在不了解分布式底层细节的情况下使用
HDFS(分布式文件系统,数据存储框架):
- HDFS是GFS的克隆版
- HDFS特点:扩展性 & 容错性 &海量数量存储
- HDFS将文件切分成指定大小的数据块,并以多副本的方式存储在机器上面
- 文件:test.log 200M
- 块:默认的blocksize是128M,2个块=1个128M+1个72M
MapReduce(分布式数据计算框架):
- 特点:可扩展 & 容错性&海量数据离线处理
- [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-rSTll5er-1585626536781)(C:\Users\15209\Pictures\博客\images\大数据图片03.jpg)]
YARN (资源调度系统):
- 负责整个集群资源的管理和调度
- 扩展性&容错性&多框架资源统一调度
- [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-qHkj8szJ-1585626536785)(C:\Users\15209\Pictures\博客\images\大数据04.jpg)]
HDFS 概述:
- 分布式
- commodity hardware
- 容错性
- 高吞吐量
- 使用于大的数据集
文件系统:linux,Windows,MAC。。。
- 目录结构
- 存放文件或者文件夹
- 对外提供服务:创建,修改,删除,查看,移动
普通文件系统 VS 分布式文件系统
单机
分布式文件系统能横跨N个机器
HDFS前提和设计目标:
- Hardware failure
- 每个机器只存储文件部分数据,blocksize=128M
- block存放在不同的机器上,HDFS默认采用3副本机制
- Streaming Data Access
- HDFS设计出来更多的是做批处理
- 关注吞吐量而不是低延时
- Large Data Sets 大规模数据集
- 提供高的数据传输(带宽)
- 支持tens of milions of files in a single instance
- 移动计算比移动数据更划算
HDFS架构
- NameNode(master) 和 DataNodes(slaver)
- HDFS是一个master/slave架构
- NN:the file system namespace
- /home/hadoop/softwar
/app
regulates accesss to files by clients
-
DN: storage
-
HDFS exposes a file system namespace and allows user data to be stored in files.
-
a file is split into one or more blocks
blocksize :128M
150M拆分成2个
-
blocks are strored in a set of DataNodes :容错
-
nameNode executes the system namespace operations :CURD
-
determines the mapping of blocks to DataNodes
a.txt 150M blocksize=128M
a.txt 拆分成2个block 一个是128M 另一个是22M
block1 存在那个DN上,block2存在哪个DN上?
a.txt
block1: 128M 192.168.199.1
block2: 22 M 192.168.199.2
get a.txt :访问NameNode得到各个block的ip
-
通常情况下,一个Node部署一个组件
HDFS副本机制:
- 把每个文件存储成一系列的block,
- 所有的块(除了最后一块)的大小都是一样的
- 应用程序可以指定副本系数,也可以改变
- 文件在HDFS中是一次写入的
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-pEcD29Dm-1585626536787)(C:\Users\15209\Pictures\博客\images\大数据06.jpg)]
Linux 环境:
linux地址(centos7):182.92.110.18
创建目录(合适的文件存放在合适的目录):
- module : 存放软件的安装目录
- software :存放软件所需的安装包
- data :存放使用的数据
- lib :存放开发过的作业jar包存放的目录
- shell :存放课程中相关的脚步
- maven_resp :存放课程中使用到的maven依赖包
sudo -i :切换到root用户
su hadoop: 切换回普通用户
查看linux版本: uname -a
映射: vim /etc/hosts ip 名字
Hadoop环境搭建:
- CDH 2.6.0-cdh5.15.1
- Hive 版本: hive1.1.0-cdh5.15.1
- hadoop 下载:wget http:…
Hadoop/Hive/Spark相关学习框架
- 使用单机版足够
- 使用linux/Mac学习
安装Java:
- 拷贝本地软件包到服务器 scp
- scp jdk-8u91… [email protected]:~/software/
- 解压到module目录下 tar -zxvf module/
- 把jdk配置到环境变量中:vim /.bash_profile
配SSH无密码登录:
- ssh-keygen -t rsa 一路回车
- cd ~/ .ssh
- id_rsa
- id_rsa.pub
- cat id_rsa.pub >> authorized_keys
- chmod 600 authorized_keys
Hadoop(HDFS)安装
- 下载
- 解压
- 添加HADOOP_HOME/bin到系统环境变量
- 修改Hadoop配置文件:
- bin :Hadoop客户端名单
- etc/hadoop :Hadoop相关的配置文件存放目录
- sbin :启动Hadoop相关进程的脚本
- share :常用例子
- 手工配Hadoop的JAVA_HOME (etc/hadoop/hadoop_env.sh)
HDFS格式化及启动
-
etc/hadoop/core-site.xml
- fs.defaultFS hdfs://localhost:9000
-
etc/hdfs-site.xml :副本系数
- dfs.replication 1 hadoop.tmp.dir /opt/module/tmp
-
vim slaves
- hadoop000
启动HDFS:第一次执行的时候一定要格式化文件系统,不要重复执行
- hdfs namenode -format
启动集群:
- sbin目录下面: ./sbin/start-dfs.sh
- 验证:jps
- Namenode DataNode
- 浏览器的方式访问:
- http:… :50070
- firewall -cmd --state :查看防火墙
- sudo systemctl stop firewalld.service :关闭防火墙
- sudo firewall-cmd --state :查看防火墙状态
- 禁止防火墙开机启动?
- 停止集群:
- ./sbin/stop-dfs.sh
- 注意:
- start/stop-dfs.sh与 hadoop-daemons.sh 的关系
- start-dfs.sh
-
HDFS命令(bin ./hadoop fs)
- hadoop fs -ls /
- hadoop fs -put README.txt /
HDFS 存储扩展:
- put : 1file==》1…n block ==>存储在不同节点上
- get: 去NN上查找这个file对应的元数据信息
- 了解底层的存储机制才是我们要学习的东西
- /opt/module/tmp/dfs/data/current/BP-1296724486-162.13.200.213-1585478270657/current/finalized/subdir0/subdir0 元素据目录
- 将俩个block合并可以使用
- cat blk_1073741826>>jdk.tgz
- cat blk_1073741827>>tgz
HDFS API编程开发环境搭建
- IDEA/Eclipse
- Java API
- 使用Maven管理项目
- 创建Maven项目quickstart
- 添加依赖,Hadoop2.65
- 创建filesystem项目
问题:IDEA中怎么连接到我的Hadoop?
卡在了第3-19.
存储扩展:
- put : 1file==》1…n block ==>存储在不同节点上
- get: 去NN上查找这个file对应的元数据信息
- 了解底层的存储机制才是我们要学习的东西
- /opt/module/tmp/dfs/data/current/BP-1296724486-162.13.200.213-1585478270657/current/finalized/subdir0/subdir0 元素据目录
- 将俩个block合并可以使用
- cat blk_1073741826>>jdk.tgz
- cat blk_1073741827>>tgz
HDFS API编程开发环境搭建
- IDEA/Eclipse
- Java API
- 使用Maven管理项目
- 创建Maven项目quickstart
- 添加依赖,Hadoop2.65
- 创建filesystem项目
问题:IDEA中怎么连接到我的Hadoop?
卡在了第3-19.