《Hadoop大数据分析与挖掘实践》基础篇笔记(1~6章)

2024-09-01 18:48

本文主要是介绍《Hadoop大数据分析与挖掘实践》基础篇笔记(1~6章),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

数据挖掘的基本任务:

包括利用分类与预测、聚类分析、关联规则、包括利用分类与预测、聚类分析、关联规则、
时序模式、偏差检测、智能推荐等方法,帮助企业提取数据中蕴含的商业价值,提高企业竞争力。

数据挖掘建模过程:

    1. 目标定义

        任务理解

        指标确定

    2. 数据采集

        建模抽样:数据采样的相关性,可靠性,有效性

        采样方式:随机采样,等距抽样,分层抽样,从起始顺序抽样,分类抽样

        质量把控:数据的完整性,有效性

        实时采集

    3. 数据整理

        数据探索:数据质量分析,数据特征分析

            数据质量分析:主要任务是检测原始数据中是否存在脏数据(缺失值、异常值、不一致的值、重复值及特殊符号)

            数据特征分析:分布分析、对比分析、统计量分析、周期性分析、贡献度分析、相关性分析

        数据预处理:数据清洗、数据集成、数据变换、数据规约

            数据清洗:缺失值处理,异常值处理

            数据集成:将多个数据源合并存放在一个一致的数据存储中的过程

            数据变换:简单函数变换、规范化、连续属性离散化、属性构造、小波变换

            数据规约:属性规约、数值规约

    4. 构建模型

        模式发现

        构建模型

        验证模型

    5. 模型评价

        设定评价标准

        多模型对比

        模型优化

    6. 模型发布

        模型部署

        模型重构

 

Hadoop基础:
    大数据主要特点:(4V)
        数据量大(Volume)
        数据类别复杂(Variety)
        数据处理速度快(Velocity)
        数据真实性高(Veracity)
    Hadoop生态系统:
        Hive,HBase,flume,Spark,Pig,ZooKeeper,Storm,Shark,Mahout,Sqoop...
        Hive:数据仓库
        HBase:大数据存储库
        Spark:分布式计算框架
        Storm:实时流计算
        Sqoop:用来在HDFS和RDBMS之间来回导入和导出数据
        ...
    Hadoop原理:
        HDFS:分布式存储系统,能运行在廉价的机器上。高容错性、高吞吐量、适合大数据集,可以实现以流形式访问。
            采用master/slave构架(NameNode,dataNode)
        MapReduce:是一个快速、高效、简单用于编写并行处理大数据程序并应用在大集群上的编程框架。
            MapReduce框架包括一个主节点(ResourceManager)、多个子节点(运行NodeManager)和MRAppMaster(每个任务一个)共同组成。
            通常,MapReduce框架的计算节点和存储节点是运行在一组相同的节点上的。
            MapReduce框架流程:
                1. Map阶段
                    InputFormat根据输入文件产生键值对,并传送到Mapper类的map函数中;
                    map输出键值对到一个没有排序的缓冲内存中;
                    当缓冲内存达到给定值或者map任务完成,在缓冲内存中的键值对就会被排序输出到磁盘中的溢出文件;
                    如果有多个溢出文件,那么就会整合这些文件到一个文件中,且是排序的;
                    这些排序过的、在溢出文件中的键值对会等待Reducer的获取。
                2. Reduce阶段
                    Reducer获取Mapper的记录,然后产生另外的键值对,最后输出到HDFS中;
                    shuffle:相同的key被传送到同一个Reducer中;
                    当有一个Mapper完成后,Reducer就开始获取相关数据,所有溢出文件会被排序到一个内存缓冲区中;
                    当内存缓冲区满了后,就会产生溢出文件到本地磁盘;
                    当Reducer多有相关的数据都传输完成后,所有溢出文件就会被整合和排序
                    Reducer中的reduce方法针对每个key调用一次;
                    Reducer的输出到HDFS中。
        YARN:资源调用管理
    
        HDFS命令:
            hadoop fs -mkdir /user
            hadoop fs -ls -d /user/root
            hadoop fs -put ds.txt ds.txt #upload file to HDFS
            hadoop fs -cat /user/root/ds.txt
            hadoop fs -cp /user/root/ds.txt /uesr/root/ds_backup.txt
            hadoop fs -mv /user/root/ds_backup.txt /uesr/root/ds_backup1.txt
            hadoop fs -rf -r /uesr/root/ds_backup.txt
        
        MapReduce任务:
            hadoop fs -put /opt/ds.txt /uesr/root/ds.txt
            cp /opt/hadoop-2.6.0/share/hadoop/mapreduce/hadoop-mapreduce-example-2.6.0.jar /opt
            ls /opt/hadoop-mapreduce*
            #run mapreduce task
            hadoop jar /opt/hadoop-mapreduce-example-2.6.0.jar wordcount /user/root/ds.txt /user/root/ds_out 
            #look output result
            hadoop fs -cat /user/root/ds_out/part-r-00000
        
    Hive: 构建在Hadoop之上的数据仓库,提供了一系列工具,可以用来进行数据提取转换加载(ETL),这是一种可以存储、查询
和分析存储在Hadoop中 的大规模数据的机制。
        特点:
        支持索引,加快数据查询;
        不同的存储类型,如纯文本文件,HBase中的文件;
        将元数据保存在关系数据库中,大大减少了在查询过程中执行语义检查时间;
        可以直接使用存储在HDFS中的数据;
        类SQL的查询方式,HQL;
        
        数据仓库与数据库的区别:
        数据库存储的是当前值,数据仓库存储的是历史值;
        数据库存储的是动态数据经常在更新,数据仓库存储的是静态数据;
        Hive的主要任务是sql把翻译为mapreduce程序
        
        Hive特殊数据类型:array,map,struct,union
        
        Hive数据模型:
            表:内部表存储在HDFS上,存放在hive.metastore.warehouse.dir配置的目录中
            外部表:数据放在建立表时指定的目录,创建外部表可以在删除该外部表时,不删除该外部表所指向的数据,
                它只会删除外部表对应的元数据;但是如果要删除表,该表对应的所有数据都会被删除。
            分区表;表的每一个分区对应表下的相应目录,所有分区的数据都存储在对应的目录中。
            桶(bucket):对指定的列计算其哈希值,根基哈希值切分数据,目的是并行,每一个桶对应一个文件。
        
        HQL:
        Hive create/delete database:
            CREATE DATABASE IF NOT EXISTS userdb;#create database
            SHOW DATABASES;
            USE userdb;
            DROP DATABASE IF EXISTS userdb; #drop database
        
        Hive create/modify/delete/partition/query table:


            •CREATE TABLE 创建一个指定名字的表。如果相同名字的表已经存在,则抛出异常;用户可以用 IF NOT EXIST 选项来忽略这个异常
            •EXTERNAL 关键字可以让用户创建一个外部表,在建表的同时指定一个指向实际数据的路径(LOCATION)
            •LIKE 允许用户复制现有的表结构,但是不复制数据
            •COMMENT可以为表与字段增加描述
            •PARTITIONED BY 指定分区
            •ROW FORMAT 
              DELIMITED [FIELDS TERMINATED BY char] [COLLECTION ITEMS TERMINATED BY char] 
                MAP KEYS TERMINATED BY char] [LINES TERMINATED BY char] 
                | SERDE serde_name [WITH SERDEPROPERTIES 
                (property_name=property_value, property_name=property_value, ...)] 
              用户在建表的时候可以自定义 SerDe 或者使用自带的 SerDe。如果没有指定 ROW FORMAT 或者 ROW FORMAT DELIMITED,将会使用自带的 SerDe。在建表的时候,
            用户还需要为表指定列,用户在指定表的列的同时也会指定自定义的 SerDe,Hive 通过 SerDe 确定表的具体的列的数据。 
            •STORED AS 
              SEQUENCEFILE //序列化文件
              | TEXTFILE //普通的文本文件格式
              | RCFILE  //行列存储相结合的文件
              | INPUTFORMAT input_format_classname OUTPUTFORMAT output_format_classname //自定义文件格式
              如果文件数据是纯文本,可以使用 STORED AS TEXTFILE。如果数据需要压缩,使用 STORED AS SEQUENCE 
           •LOCATION指定表在HDFS的存储路径


            create table:
            
                create table [external] student(id int, 
                name string,
                sex string, 
                age int,
                department string) 
                partitioned by (city string)
                clustered by (id) sorted by (id asc, name desc) into 4 buckets
                row format delimited 
                fields terminated by ",";
            
                create table student_ctas as select * from employee where id < 95012;
                
            create table student_copy like student; #copy table column name
            load data local inpath '/home/user/sample.txt' into table employee #load data
            alter table employee add partition(city="beijing"); #modify partition
            alter table student rename to new_student; #rename
            alter table new_student add columns (score int);
            alter table new_student replace columns (id int, name string, address string);
    
    HBase
        HBase是一个分布式的、面向列的非关系型数据库。NoSQL(Not Only SQL)
        依赖于HDFS做底层数据存储,Mapreduce做数据计算,zookeeper做服务协调
        3个重要组件:Zookeeper,HMaster,HRegionServer
            Zookeeper:为整个HBase集群提供协助服务(信息传输)
            HMaster:用于监控和操作集群中的所有RegionServer,
                主要负责Table和Region的管理工作
                1. 管理用户对Table的增删改查
                2. 管理HRegionServer的负载均衡,调整Region分布
                3. 在Region Split后,负责新的Region的分配
                4. 在HRegionServer停机后,负责失效HRegionServer上的Regions迁移
            HRegionServer:用于服务和管理分区,主要负责响应用户I/O请求,
                向HDFS文件系统中读写数据,是HBase中最核心的模块。
                HRegionServer
                    HRegion
                        HStore-->对应table中的columnFamily
                            MemStore
                                |
                            StoreFile
                    HLog
        数据类型:字符串
        数据模型:
            row key:一条记录的唯一标识符,主键
            Column:列,可理解成MySQL列。
            column family:Hbase通过列族划分数据的存储,列族下面可以包含任意多的列,实现灵活的数据存取,
                Hbase表的创建的时候就必须指定列族
            cell:实际存储的数据,包含数据和时间戳
        HBase表的操作:
            创建create:
                create 'myHBase',{NAME=>'myCard',VERSION=>5}
            查看表列表list: 
                list
                查看表的详细信息desc:desc 'myHBase'
            修改表的定义alter:
                添加一个列簇:alter 'myHbase', NAME => 'myInfo'
                删除一个列簇:alter 'myHBase', NAME=>'myCard',METHOD=>'delete'
                            或者alter 'myHbase', 'delete' => 'myCard'
                添加列簇hehe同时删除列簇myInfo:alter 'myHBase',{NAME=>'hehe'},{NAME=>'myInfo',METHOD=>'delete'}
            清空表:truncate 'myHBase'
            删除表drop:
                disable 'myHBase'
                drop 'myHBase'
                
        HBase表中数据的操作:
            create 'user_info',{NAME=>'base_info',VERSIONS=>3 },{NAME=>'extra_info',VERSIONS=>1 } 
            增put:
                 put 'user_info', 'user0001', 'base_info:name', 'zhangsan1'
            查get+scan:
                 get 'user_info', 'user0001'
                 scan 'user_info'
                 scan 'user_info', {COLUMNS => 'base_info'}
            删delete:
                delete 'user_info', 'rk0001', 'base_info:name'
    

挖掘建模:


    分类与预测 -- 监督学习
        分类算法steps:
            1. 学习步,通过归纳分析训练样本集来建立分类模型得到分类规则;
            2. 分类步,先用已知的测试样本集评估分类规则的准确率,如果准确率是可接受的,则使用该模型对未知类标号的待测样本集进行预测。
        预测模型steps:
            1. 通过训练集建立预测属性(数值型的)的函数模型;
            2. 在模型通过检验后进行预测。
        常用的分类与预测算法:回归分析,决策树,随机森林,贝叶斯网络,支持向量机
        常用的决策树算法:ID3,C4.5算法,CART算法
            ID3:特征划分基于信息增益
            C4.5:特征划分基于信息增益比
            CART:特征划分基于基尼指数
            
    聚类分析 --  非监督学习
        聚类分析是在没有给定划分类别的情况下,根据数据相似度进行样本分组的一种方法。
        距离模型可以建立在无类标记的数据上,即输入数据是一组未被标记的样本,根据数据自身的距离/相似度
        将他们分为若干组,划分的原则是组内样本最小化而组间(外部)距离最大化。
        
        常用聚类方法:
            划分(分裂)方法:K-Means(K-平均),K-MEDOIDS(K-中心点),CLARANS(基于选择的算法)
            层次分析方法
            基于密度的方法
            基于网络的方法
            基于模型的方法
        常用划分聚类算法:K-Means,K-中心点,系统聚类
        
    关联规则
        关联规则目的是在一个数据集中找出各项之间的关联关系,而这种关联关系并没有在数据中直接体现出来。
        常用的关联规则算法:Apriori,FP-Growth,Eclat,灰色关联法
        
    协同过滤
        基于项目的协同过滤:通过用户对不同项目的评分来评测项目之间的相似性,基于项目之间的相似性做出推荐
            steps:
                1. 原始用户数据--> 项目矩阵-->项目相似度矩阵
                2. 原始用户数据--> 用户矩阵
                3. 项目相似度矩阵& 用户矩阵-->用户推荐项目
            算法实现:
                1. 求出用户矩阵,项目矩阵
                2. 求出项目矩阵平方和
                3. 根据项目矩阵、项目矩阵平方和求出项目相似度矩阵
                4. 整合用户矩阵、项目相似度矩阵,得到用户-项目相似度矩阵
                5. 根据用户-项目相似度矩阵求出用户推荐矩阵
        基于用户的协调过滤:通过不同用户对项目的评分来评测用户之间的相似性,基于用户之间的相似性做出推荐
            steps:
                1. 原始用户数据--> 项目矩阵
                2. 原始用户数据--> 用户矩阵-->用户相似度矩阵
                3. 用户相似度矩阵& 项目矩阵-->项目推荐项目
            算法实现:
                1. 求出用户矩阵,项目矩阵
                2. 求出用户矩阵平方和
                3. 根据用户矩阵、用户矩阵平方和求出用户相似度矩阵
                4. 整合项目矩阵、用户相似度矩阵,得到项目-用户相似度矩阵
                5. 根据项目-用户相似度矩阵求出项目推荐矩阵        
    
    
    
    
    
    
    
    
    

这篇关于《Hadoop大数据分析与挖掘实践》基础篇笔记(1~6章)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1127764

相关文章

基于MySQL Binlog的Elasticsearch数据同步实践

一、为什么要做 随着马蜂窝的逐渐发展,我们的业务数据越来越多,单纯使用 MySQL 已经不能满足我们的数据查询需求,例如对于商品、订单等数据的多维度检索。 使用 Elasticsearch 存储业务数据可以很好的解决我们业务中的搜索需求。而数据进行异构存储后,随之而来的就是数据同步的问题。 二、现有方法及问题 对于数据同步,我们目前的解决方案是建立数据中间表。把需要检索的业务数据,统一放到一张M

Hadoop企业开发案例调优场景

需求 (1)需求:从1G数据中,统计每个单词出现次数。服务器3台,每台配置4G内存,4核CPU,4线程。 (2)需求分析: 1G / 128m = 8个MapTask;1个ReduceTask;1个mrAppMaster 平均每个节点运行10个 / 3台 ≈ 3个任务(4    3    3) HDFS参数调优 (1)修改:hadoop-env.sh export HDFS_NAMENOD

Hadoop集群数据均衡之磁盘间数据均衡

生产环境,由于硬盘空间不足,往往需要增加一块硬盘。刚加载的硬盘没有数据时,可以执行磁盘数据均衡命令。(Hadoop3.x新特性) plan后面带的节点的名字必须是已经存在的,并且是需要均衡的节点。 如果节点不存在,会报如下错误: 如果节点只有一个硬盘的话,不会创建均衡计划: (1)生成均衡计划 hdfs diskbalancer -plan hadoop102 (2)执行均衡计划 hd

hadoop开启回收站配置

开启回收站功能,可以将删除的文件在不超时的情况下,恢复原数据,起到防止误删除、备份等作用。 开启回收站功能参数说明 (1)默认值fs.trash.interval = 0,0表示禁用回收站;其他值表示设置文件的存活时间。 (2)默认值fs.trash.checkpoint.interval = 0,检查回收站的间隔时间。如果该值为0,则该值设置和fs.trash.interval的参数值相等。

Hadoop数据压缩使用介绍

一、压缩原则 (1)运算密集型的Job,少用压缩 (2)IO密集型的Job,多用压缩 二、压缩算法比较 三、压缩位置选择 四、压缩参数配置 1)为了支持多种压缩/解压缩算法,Hadoop引入了编码/解码器 2)要在Hadoop中启用压缩,可以配置如下参数

零基础学习Redis(10) -- zset类型命令使用

zset是有序集合,内部除了存储元素外,还会存储一个score,存储在zset中的元素会按照score的大小升序排列,不同元素的score可以重复,score相同的元素会按照元素的字典序排列。 1. zset常用命令 1.1 zadd  zadd key [NX | XX] [GT | LT]   [CH] [INCR] score member [score member ...]

【学习笔记】 陈强-机器学习-Python-Ch15 人工神经网络(1)sklearn

系列文章目录 监督学习:参数方法 【学习笔记】 陈强-机器学习-Python-Ch4 线性回归 【学习笔记】 陈强-机器学习-Python-Ch5 逻辑回归 【课后题练习】 陈强-机器学习-Python-Ch5 逻辑回归(SAheart.csv) 【学习笔记】 陈强-机器学习-Python-Ch6 多项逻辑回归 【学习笔记 及 课后题练习】 陈强-机器学习-Python-Ch7 判别分析 【学

系统架构师考试学习笔记第三篇——架构设计高级知识(20)通信系统架构设计理论与实践

本章知识考点:         第20课时主要学习通信系统架构设计的理论和工作中的实践。根据新版考试大纲,本课时知识点会涉及案例分析题(25分),而在历年考试中,案例题对该部分内容的考查并不多,虽在综合知识选择题目中经常考查,但分值也不高。本课时内容侧重于对知识点的记忆和理解,按照以往的出题规律,通信系统架构设计基础知识点多来源于教材内的基础网络设备、网络架构和教材外最新时事热点技术。本课时知识

【Linux 从基础到进阶】Ansible自动化运维工具使用

Ansible自动化运维工具使用 Ansible 是一款开源的自动化运维工具,采用无代理架构(agentless),基于 SSH 连接进行管理,具有简单易用、灵活强大、可扩展性高等特点。它广泛用于服务器管理、应用部署、配置管理等任务。本文将介绍 Ansible 的安装、基本使用方法及一些实际运维场景中的应用,旨在帮助运维人员快速上手并熟练运用 Ansible。 1. Ansible的核心概念

AI基础 L9 Local Search II 局部搜索

Local Beam search 对于当前的所有k个状态,生成它们的所有可能后继状态。 检查生成的后继状态中是否有任何状态是解决方案。 如果所有后继状态都不是解决方案,则从所有后继状态中选择k个最佳状态。 当达到预设的迭代次数或满足某个终止条件时,算法停止。 — Choose k successors randomly, biased towards good ones — Close