一、大数据的概述
1、大数据的概念和特征(重点)
--1. 概念:
海量数据,数据种类多样化,增长速度块,无法使用常规分析管理工具进行管理的数据集合
--2. 特征(4V)
volume: 巨大的数据量
variety: 数据种类多样化
--结构化的数据
--半结构化的数据
--非结构和的数据:网页,视频,音频等,占现在数据量的90%
volecity: 增长速度块
value: 价值密度低
2、大数据的应用前景
--1.应用案例
预测犯罪,城市规划,远程医疗,预测选举...
--2.发展前景
1)国家的支持
2)数据的价值
3)大数据的产业链
3、大数据的工作流程(熟悉)
1. 数据采集 : sqoop,flume,datax,kettle
数据源----->采集工具------>存储系统
2. 数据存储:
hdfs,hbase,es等(大数据集的存储)
3. 数据清洗:(去重,去脏)
mapreduce,spark,hive
4. 数据分析:
mapreduce,spark,hive (分析后的数据可能存储到hdfs上,也可能存储mysql等关系型数据库中)
5. 数据展示
BI,webUI界面
二、Hadoop的概述
1、为什么出现了hadoop
数据量非常大所引出的问题
--1. 存储问题和技术瓶颈
--2. 硬件经常故障
--3. 读取数据的准确率
hadoop为了解决上述问题而被开发出来了。
2、hadoop是什么
--1. hadoop是apache基金会旗下的一款顶级项目
--2. 用于解决大数据集的存储和计算分析
--3. 是用java语言开发,具有跨平台性
--4. 开源的
--5. 运行在廉价机器(商用硬件,和专业硬件)上,认为机器故障时常态
--6. 利用集群的cpu的并发和计算能力,性能非常高。
3、hadoop的核心模块(重点)
--1. Common: hadoop框架的通用模块
--2. hdfs(hadoop distributed fileSystem),hadoop分布式存储文件系统,用于存储大数据集
--3. mapreduce: hadoop的分布式计算框架,提供了移动计算而非移动数据的思想,利用并发提高计算能力。
--4. yarn:hadoop的作业调度与资源管理框架(cpu,磁盘,内存)
4、google的三篇论文(重点)
--1.《GFS》,2003发表,阐述了大数据集如何存储的问题,引入了分布式思想(一个整体拆成多个子部分,之间提供接口进行调用)
--2.《Mapreduce》,2004发表,阐述了解决分布式文件系统上的大数据集如何快速的分析和计算的问题。
--3.《bigtable》,2006发表,阐述了如何解决非结构化的数据不适合存储在关系型数据库中,提供了另外一种存储思想,NoSQL(not only sql)的概念
5、Hadoop的发展与版本介绍(了解)
--1. 起源于nutch项目,创始人道格·卡丁
--2. ndfs灵感来源于《GFS》
--3. Mapreduce灵感来源于《Mapreduce》
--4. 2006年ndfs和mapreduce单独抽出来形成Hadoop这个项目
------------------
版本:
--1. 社区版本
--2. CDH版本
--3. HDP版本
6、Hadoop的生态系统
-- hadoop
-- spark
-- hbase
-- flink
-- zookeeper
-- hive
-- sqoop
-- flume
-- kafka
三、hdfs的安装(重点)
hdfs是hadoop的核心模块之一,是hadoop分布式文件系统,用于存储大数据集
安装模式:3种
--1. 本地模式: 没有使用分布式文件系统思想,使用的机器的本地文件系统。通常用于测试mr程序
--2. 伪分布式模式:
--与本地模式的相同点,就是都是使用一台机器
--采用分布式思想,相关的守护进程都是独立的,并且都有自己的jvm(内存不共享,各有各的)
--Namenode(名称节点,简称NN,也叫管理节点)
--Datanode(数据节点,简称DN,也叫工作节点)
--secondaryNamenode(辅助节点,简称SNN, 当namnenode宕机后不能充当namenode的决定)
--3. 完全分布式模式:
--与伪分布式模式的区别就是多台机器维护一个HDFS。
--相关的守护进程都是分布在不同的机器上的。
-- 只有一个Namenode
-- 多个Datanode
-- 一个secondaryNamenode
4.1 本地模式(了解)
4.1.1 环境需求说明
--1. 环境需求: CentOS7.7 JDK1.8+
--2. Hadoop版本: hadoop-2.7.6.tar.gz
4.1.2 安装JDK
--1. 上传,解压,并更名
[root@qianfeng01 ~]# tar -zxvf jdk-8u221-linux-x64.tar.gz -C /usr/local/
[root@qianfeng01 local]# mv jdk1.8.0_221/ jdk
--2. 配置环境变量
[root@qianfeng01 local]# vim /etc/profile
..........省略...........
ulimit -n 65535
#java environment
export JAVA_HOME=/usr/local/jdk
export PATH=$JAVA_HOME/bin:$JAVA_HOME/sbin:$PATH
--3. 重新加载
[root@qianfeng01 local]# source /etc/profile
--4. 验证
[root@qianfeng01 local]# java -version
4.1.3 安装Hadoop
--1. 上传,解压,并更名
[root@qianfeng01 ~]# tar -zxvf hadoop-2.7.6.tar.gz -C /usr/local/
[root@qianfeng01 local]# mv hadoop-2.7.6/ hadoop
--2. 配置环境变量
[root@qianfeng01 hadoop]# vim /etc/profile
..........省略...........
#HADOOP environment
export HADOOP_HOME=/usr/local/hadoop
export PATH=$HADOOP_HOME/bin:$HADOOP_HOME/sbin:$PATH
--3. 重新加载
[root@qianfeng01 hadoop]# source /etc/profile
--4. 验证
[root@qianfeng01 hadoop]# hadoop version
4.1.4 mr程序测试
--1. 在~下创建一个目录:input
[root@qianfeng01 ~]# mkdir input
--2. 将hadoop的etc/hadoop/目录下的所有的xml文件拷贝的input目录下
[root@qianfeng01 ~]# cp /usr/local/hadoop/etc/hadoop/*.xml ./input
--3. 使用hadoop指令运行一个jar文件,测试里面的grep程序,检查xml文件中是否有符合指定正则表达式的字符串,如果有就打印到一个不存在的目录~/output中
[root@qianfeng01 output]# hadoop jar /usr/local/hadoop/share/hadoop/mapreduce/hadoop-mapreduce-examples-2.7.6.jar grep ./input ./output 'dfs[a-z.]+'
--4.
[root@qianfeng01 ~]# cd output
[root@qianfeng01 output]# ll
-rw-r--r-- 1 root root 11 9月 21 16:08 part-r-00000
[root@qianfeng01 output]# cat part-r-00000
1 dfsadmin
4.2 伪分布式模式(重点)
4.2.1 环境需求
--1. 防火墙确保是关闭的
--2. 网络是畅通的,静态IP,NAT模式
--3. 主机名,和域名映射文件必须配置
--4. 免密登录认证,确保是对localhost免密
--5. Jdk,hadoop的环境变量的配置
4.2.2 修改Hadoop的配置文件
1)修改core-site.xml 位置位于:${HADOOP_HOME}/etc/hadoop/
[root@qianfeng01 ~]# vim ${HADOOP_HOME}/etc/hadoop/core-site.xml
<configuration>
<property>
<!-- hdfs系统的唯一标识,scheme,ip,port ,内部守护进程的通信地址-->
<name>fs.defaultFS</name>
<value>hdfs://qianfeng01:8020</value>
</property>
</configuration>
2)修改hdfs-site.xml 位置位于:${HADOOP_HOME}/etc/hadoop/
[root@qianfeng01 ~]# vim ${HADOOP_HOME}/etc/hadoop/hdfs-site.xml
<configuration>
<property>
<!-- 文件的块的副本数,伪分布式只能是1 -->
<name>dfs.replication</name>
<value>1</value>
</property>
</configuration>
3)修改hadoop-env.sh
[root@qianfeng01 hadoop]# vim hadoop-env.sh
...........省略,大约在25行..