- 博客(43)
- 收藏
- 关注
原创 sparkStreaming基础知识整理
sparkStreaming 是一种流处理框架,支持多种数据源和多种输出,是一中微批处理,主要的数据结构是:DStream 离散数据流,由多个RDD组成,每一个微批都是一个RDD。Spark Streaming 的入口需要单独创立,因为sparkSession中灭有整合:创建如下:val conf=new SparkConf().setMaster(“local[*]”).setAppName(“kgc streaming demo”)val ssc=new StreamingContext(co
2020-08-26 13:26:44 459
原创 kafka基础知识整理
kaka 是一个分布式消息队列,是一个消息中间件,是一个发布订阅消息系统安装好kafka后,配置 server.properties文件,内容如下:vi ./server.propertiesbroker.id=0advertised.listeners=PLAINTEXT://192.168.153.141:9092log.dirs=/opt/bigdata/kafka211/kafka-logszookeeper.connect=192.168.153.141:2181delete.top
2020-08-26 09:20:10 278
原创 flume基础知识整理
flume:一种可靠、可用的高效分布式数据收集服务基础agent编写:agent.sources = s1 agent.channels = c1 agent.sinks = sk1 #设置Source为netcat 端口为5678,使用的channel为c1 agent.sources.s1.type = netcat agent.sources.s1.bind = localhost agent.sources.s1.port = 5678 agent.sourc
2020-08-21 17:37:03 307
原创 spark基础知识整理
spark core:核心组件,分布式计算引擎交互式工具:spark-shell本机: 事先启动hive的元数据服务 spark-shellStandalone(需要先启动spark sbin/start-all.sh):spark-shell --master spark://hadoop131:7077Yarn:spark-shell --master yarn创建sparkContext对象 val conf= new SparkConf().setMaster
2020-08-21 16:32:09 417
原创 flume案例四:扇出
扇出(fan out)-Flume与Flume之间数据传递:单Flume多Channel、Sink目标:使用flume1监控文件变动,flume1将变动内容传递给flume-2,flume-2负责存储到HDFS。同时flume1将变动内容传递给flume-3,flume-3负责输出到locala1.sources=s1a1.channels=c1 c2a1.sinks=k1 k2#将数据流复制给多个channela1.sources.s1.selector.type=replicating#
2020-08-17 19:46:14 166
原创 flume案例三:扇入
扇入(fan in)-Flume与Flume之间数据传递,多Flume汇总数据到单Flume**目标 :**agent1 监控.log文件 agent2 监控某一个端口的数据流汇总数据 发送给agent3 并写道hdfs上#agent1 监控.log文件a1.sources=s1a1.sinks=k1a1.channels=c1#设置sourcesa1.sources.s1.type=spooldira1.sources.s1.spoolDir=/root/data/flumeFil
2020-08-17 19:11:34 172
原创 flume案例二:拦截器的使用
添加过滤器 把不同的数据通过不同的通道进行传输 , 进而使用不同的sink接受配置flumea1.sources=s1a1.channels=c1 c2a1.sinks=k1 k2#使用netcat作为客户端进行测试a1.sources.s1.type=netcata1.sources.s1.bind=localhosta1.sources.s1.port=5555#设置拦截器a1.sources.s1.interceptors=i1#自己使用java写的连接器【详细请看下面的java
2020-08-17 18:35:47 303 1
原创 flume案例一
1.access.log 搜集到 hdfs 上并按天存储。a1.sources=s1a1.channels=c1a1.sinks=k1#设置sourcesa1.sources.s1.type=spooldira1.sources.s1.spooDir=/root/data/flumea1.sources.s1.includePattern=access[0-9]{4}-[0-9]{2}-[0-9]{2}.loga1.sources.s1.deserializer=LINEa1.source
2020-08-17 17:48:04 166
原创 flume日志收集总结
一、flume架构将多种数据源日志以实时的方式 传入到hadoop或者其他地方分布式:主要是指可以处理分布式平台上的数据 进行汇总架构:CLIENT:客户端 数据产生的地方event:数据传输中的一个数据包 通常对应日志中的一行agent:代理 一个独立的jvm进程 主要处理数据采集SourceChannelSink 与channel 是一个channel可以对应多个sinkb.启动Agentcd conf flume-ng agent --conf …/conf 配置文
2020-08-17 17:27:29 376
原创 如何避免hbase中行键的热点问题
如何避免hbase中行键的热点问题热点的概念:就是大量的访问都集中在一个或者极少数节点,造成此节点下的服务器超负荷工作甚至导致region不可用。同时也会影响节点中的其他region,导致主机无法服务其他region故对rowkey的设计至关总要。避免热点:1、加盐,在rowkey的前面加上随机数,使之排序与前面的不同。分配的前缀种类数量应该和你想使数据分散到不同的 region 的数量一致如果你有一些 热点 rowkey 反复出现在其他分布均匀的 rwokey 中,加盐是很有用的。它将写请
2020-08-09 22:16:06 384
原创 Spark中RDD的调优
RDD优化:1、RDD持久化 即将RDD产生的数据保存在内存中rdd.cache rdd.persist遇到action算子 才会正是生效 进行缓存RDD缓存机制:缓存数据到内存或者磁盘 提升性能前面步骤很复杂额时候,需要计算时 ,会从头计算 ,可以缓存中间结果在计算时直接从缓存中拿 不需要从头计算,提高效率缓存策略:内存(默认)还是磁盘 或者两个都缓存MEMORY_ONLY 直接存储到内存MEMORY_ONLY_SER 序列化存储MEMORY_ONLY_2 写两个副本ME
2020-08-09 22:13:03 468
原创 scala常用函数大全
一、添加、更新元素函数++ 两个集合相加,返回一个左边集合类型的新集合 val a = Array(1, 2) val b = Array(3, 4) val c = a ++ b println(c.mkString(",")) // 1,2,3,4++:两个集合相加,返回一个右边集合类型的新集合val a = List(1, 2)val b = scala.collection.mutable.LinkedList(3, 4)val c = a ++:
2020-08-02 21:31:11 1781
原创 如何正确快速在IDEA中创建scala工程
1、新建一个maven工程 具体参照如何正确快速在IDEA中创建maven工程https://blog.csdn.net/qq_41704237/article/details/1070417512、如果是第一次建立scala工程,需要下载scala插件,可以先去官网下载好,https://www.scala-lang.org/download根据自己idea的版本下。然后如图所示,下载自己的本地的scala插件到idea中,点击ok第一下载完成,之后在使用一般就可以直接使用了。然后创建在mai
2020-07-28 22:31:35 1232
原创 HIVE的调优策略
hive可以有很多方法进行调优,具体方法如下:本地模式:当要处理的数据很小时,完全分布式的启动时间比作业时间要长时,可以使用本地模式-- 通过以下设置开启本地模式SET hive.exec.mode.local.auto=true; --default false SET hive.exec.mode.local.auto.inputbytes.max=50000000; SET hive.exec.mode.local.auto.input.files.max=5; --default 4
2020-07-27 13:38:23 274 1
原创 YARN提交job的流程
YARN是hadoop的分布式资源管理器,可以为不同的应用提供统一的资源管理和调度,如mapreduce、spack等yarn提交job的流程:首先客户端向Resourcemanage提交作业,申请job ID,RM把此请求交给ApplicationManage,AM处理该请求返回一个作业id和一个hdfs路径。客户端接收到该jobid和hdfs路径,把此job所需的资源(jar包、配置信息,分片信息)等上传到得到的hdfs的路径上上传完成后,想RM申请执行作业,RM把此执行请求给resourcesc
2020-07-27 13:23:34 314
原创 HDFS架构原理
HDFS架构1、设计思想hdfs是一个很好的分布式存储系统,解决了一个系统盘存储不了大量数据的问题,故使用多台机器的磁盘空间作为文件的存储系统,并将一个文件切分成多个块,将切分后的多个块分散存储在多台机器上。一个块的大小默认是128M,而且每一个文件北切分的块都是独立的,会被存储在不通过的机器上。隐藏不会有超大文件的影响,也可以部署在廉价机器上。hdfs提供的功能:要对文件进行切分要能够查出文件本切分的块机器挡掉了,启用副本机制hdfs组成架构hdfs主要包含:namenode、datan
2020-07-26 15:53:14 192
原创 hbase与hive之间数据的映射与传递
hbase与hive的集成HBase 与 Hive 的对比1.Hive(1)数据仓库Hive 的本质其实就相当于将 HDFS 中已经存储的文件在 Mysql 中做了一个双射关系,以方便使用 HQL 去管理查询。可以说hive就是一个映射数据为表结构的工具。(2)用于数据分析、清洗Hive 适用于离线的数据分析和清洗,延迟较高。(3)基于 HDFS、MapReduceHive 存储的数据依旧在 DataNode 上,编写的 HQL 语句终将是转换为MapReduce 代码执行。属于hdfs管理
2020-07-23 14:31:55 814
原创 sqoop数据迁移
一、mysql=>HDFS准备工作:在mysql中建库建表已经存在的此步骤不需要。create database retail_db;use retail_db;//在mysql中执行自己写的创建表,添加数据的脚本//执行脚本source /root/data/retail_db.sql使用sqoop把mysql中的整个表导入到hdfs上// \是连接符,使用这些语句才是完整的语句sqoop import \#连接本地mysql数据库 --connect jdbc:mysql
2020-07-23 14:18:48 287
原创 HBASE常用操作命令
HBASE常用操作命令通过hbase shell进入hbaseversion --查看版本status --查看集群状态whoami --查看help --获得所有的命令信息基本操作创建表:(表名 列簇名)create ‘customer’ ,‘addr’,‘order’create ‘student’ ,{NAME => ‘info’},{NAME => ‘score’}查看表的信息desc ‘customer’scan ‘student’ ‘info’插入数据:
2020-07-20 19:49:21 298
原创 hbase物理架构原理
hbase原理hbase是hadoop的数据库,主要用来存储数据,其存储数据的文件的格式是文档,基础是hdfs,数据存储在hdfs上,但是自己管理。hbase物理架构体系hbase主要由HMaster和RegionServer组成。HMaster:是hbase集群的主节点,但是其可以有多个,用于高可用集群,当主节点不能工作时,可以使用其他的hmaster进行替换。功能:监控regionserver,处理regionserver的负载均衡,故障转移处理元数据的变更,通过zookpr把自己的位置信
2020-07-20 19:30:54 305
原创 HDFS常用命令
HDFS的常用命令对hdfs操作的命令格式是Hadoop fs 命令选项 或者是hdfs dfs 命令选项。命令选项格式和含义常用:-ls <路径> 查看指定路径的当前目录结构-lsr <路径> 递归查看指定路径的目录结构-mkdir <hdfs 路径> 创建空白文件夹-touchz <文件路径> 创建空白文件-mv <源路径> <目的路径> 移动-cp <源路径> <目的路径> 复制-pu
2020-07-19 21:12:25 324
原创 HQL经典50题
HQL 练习一1、查询"01"课程比"02"课程成绩高的学生的信息及课程分数:获取01 的课程 02的课程```javaselect t1.s_id from student stu join(select s_id from score where c_id='01') t1on stu.s_id=t1.s_idjoin (select s_id from score where c_id='02') t2on t1.s_id=t2.s_idwhere t1.s_score>
2020-07-19 20:42:17 1123
原创 hive中创建udf函数及遇到的坑
创建udf的方法:udf开发 自定义标准函数:自定义函数步骤:第一步:集成UDF类,重写evaluate方法(转换为小写字母)import org.apache.hadoop.hive.ql.exec.UDF; import org.apache.hadoop.io.Text; public class Str2Lower extends UDF { public Text evaluate(final Text s) { if (s == null) { return nu
2020-07-14 00:53:04 2648 1
原创 hive中的窗口函数介绍与应用
窗口函数的介绍窗口函数的出现,主要就是为了解决group by 后每组语句只有一条的弊端,即使groupby经常与聚合函数一起使用,但是也只能应用在一些较简单的业务场景,对于复杂的场景,我们此时就需要使用窗口函数。窗口函数:是一组特殊函数,扫描多个输入行来计算每个输出值,为每行数据都生成一行结果。按功能可划分为:排序、聚合、分析语法:Function (arg1,..., arg n) OVER ([PARTITION BY <...>] [ORDER BY <....>
2020-07-12 18:05:28 786
原创 hive中的四种排序方法的使用与区别
1、order byorder by 是全局排序,只有一个reduce(即使设置了多个,也会只走一个),速度较慢,最好事先完成数据的过滤,支持使用case when 或者表达式,排序的数据是reduce后输出的数据原数据:经过order by排序后的数据 ,可以指定升序asc 降序desc2、sort bysort by 全局不排序,而是对进入reduce前的每个分区中的数据进行排序。如果设置reduce task 的数量为 多个(一个时等于order by),sort by 只能保证一个re
2020-07-12 15:21:12 1382
原创 hive中的数据倾斜
定义:数据倾斜就是数据分布不均匀,数据大量集中在一点上,hadoop最怕的就是数据倾斜,因为这会在很大程度上拖慢reduce的处理过程,通常情况下,因为数据倾斜的原因,reduce处理的数据量相差太大,有的reduce因为处理的数据量少,会很空闲,有的处理的多,就会很忙碌,一个job工程下,就会大大拖慢整个job的进度,同时浪费资源容易发生数据倾斜的情况:join:其中一个表较小,但是key集中后果:分发给一个reduce或者多个reduce上的数据远高于平均值。大表与大表,但是分桶的字段0值或
2020-07-12 14:09:13 963
原创 hive中Mapjoin 和Reducejoin 的区别
Map join配置:set hive.auto.convert.join = true(0.11版本后默认是true)set hive.mapjoin.smalltable.filesize=25000000(设置小表的大小,默认就是25M)原理:mapjoin :主要用于小表连接大表,一般小表的大小为25M,大表没有什么具体的限制。使用mapjoin的原因是:在进行表的连接时,在map端处理完数据后,会把不同表的数据,形成不同的文件,reduce端进行拉取map端获得文件时,由于map端文
2020-07-12 11:13:30 1953
原创 hive修改表语句
针对元数据的修改修改表名:(多用于数据备份)alter table A rename to B修改表注释:alter table A set tblproperties(‘comment’=‘new comment’)修改文件分隔符:alter table A set tblproperties(‘filed.delim’=’$’)修正表文件格式:alter table A set fileformat rcfile(修改为rcfile格式)修改表列的操作修改列名:alter tabl
2020-07-12 08:51:07 574
原创 hive静态分区与动态分区的区别
分区表(重要):**分区:**就是在表的目录下根据一些特定的条件再创建一些子目录,这些子目录下有我们原始数据的划分号的一部分数据。查询时我们可以通过分区列和常规列来查询,大大提高查询速度。分区又分为是动态分区和静态分区但是不管是静态还是动态,都要先创建分区表(创表方式一样):最好创建外部表,安全,create external table if not exists A(id string,name string,age string)partitioned by (sex strin
2020-07-12 08:32:12 2696
原创 hive的内、外部表的区别
一、hive原理hive是hadoop的数据仓库,是数据仓库的解决方案。将结构化的数据映射一张数据库表,hive本身不存储数据,只处理数据。hive的interface-命令行窗口有两种工具:beeeline和hive命令行有两种交互模式:命令行模式(使用较多)和交互模式首先初始化元数据:nohup hive --service metastore &;hive的交互模式:hive 进入交互模式beeline的交互模式:输入:nohup hive --service hivese
2020-07-08 23:55:21 325
原创 在centos7 和vm虚拟机下搭建hadoop集群+zookeeper集群+hive集群+hbase集群
搭建hadoop集群在上一篇文章(在centos07 VM 下的单机hadoop搭建)中,我们已经搭建好了单机的hadoop,接下来我们搭建hadoop集群。一、复制虚拟机关闭搭建好的虚拟机,右键点击管理,如图所示...
2020-07-07 18:56:51 475
原创 一看就理解的hadoop中MapReduce的核心API原理及编程实例
一 、MapReduce使用Mapreduce框架可以很方便的编写分布式应用程序。主要介绍多个MapReduce程序实例(1)MapReduce的原理Mapreduce是一个分布式计算框架,将大型数据操作作业分解为可以跨服务器集群并行执行的单个任务(即可以把任务分组,在多个集群上同时执行这个任务的不同部分),每个节点存储自己上的数据。(2)每个任务(job)包括Map和Reduce两部分执行过程包括:MapCombinerPartitionerShuffle and sortReduc
2020-07-03 13:39:22 333
原创 在hadoop中使用javaAPI操作hdfs
一、大数据概况(1)大数据的特征(4V)Volume(大数据量):90% 的数据是过去两年产生Velocity(速度快):数据增长速度快,时效性高Variety(多样化):数据种类和来源多样化结构化数据(表)、半结构化数据(json xml)、非结构化数据(视频 音频 日志文件)Value(价值密度低):需挖掘获取数据价值(2)分布式计算:将大数据拆分成小数据进行计算二、Hadoop生态系统**Zookeeper:**是一个分布式应用程序协调服务解决分布式集群中应用系统的一致性问题
2020-06-30 17:30:39 663
原创 如何正确快速在IDEA中创建maven工程
一 下载安装配置maven(1)下载前往https://maven.apache.org/download.cgi下载最新版的Maven程序:(2)安装把下载的安装包解压到自己的路径中(3)配置环境变量在path环境变量 新增maven的变量值:(自己maven解压后的路径的后一级)I:\maven\apache-maven-3.6.1-bin\apache-maven-3.6.1\bin(4)完成配置在cmd 下 输入mvn -v 查看是否成功出现如下信息。表示安装成功。(5)
2020-06-30 15:17:49 1098
原创 在centos07 VM 下的单机hadoop搭建
一、创建vm虚拟机点击文件 新建虚拟机下一步:选择稍后安装操作系统下一步:选择LINUX和Centos7 64 位下一步:填写虚拟机名和存储的位置下一步:磁盘大小可以选择20G 拆分成多个文件下一步:点击自定义硬件 配置内存 改为4096M添加centos7镜像配置网络适配器(两个,需要自己添加一个)记得生成mac地址点击确定 关闭 完成 配置完,可以启动虚拟机选择语言 英文或中文 然后begin配置时间 选择如下:点击如下两个箭头所指 第一个点进入 然后
2020-06-30 14:17:59 293
原创 IDEA中如何正确快速打jar包(包括瘦包、胖包)
1、打开idea 如图所示:点击箭头所指的位置:2、选择你自己要打包的available element 后 如图所示 逐步点击即可进入如下页面 点击ok打包完成 来到主页面 对新打的jar包 build选择刚打的新包build此时jar包完成 在如下界面查看...
2020-06-30 08:46:38 3154
原创 DSL基础语法
ELK StackElasticsearch(存储+检索+分析),简称ESLogstash(日志收集)Kibana(可视化)以上软件的安装请看上几篇博客1、向es中插入数据使用head插件向ES中新增一条数据并进行数据浏览2、ES数据模型Index:索引,由多个Document组成Type:索引类型,6.x中仅支持一个,以后将逐渐被移除Document:文档,由多个Field组成Field:字段,包括字段名与字段值3、ES与关系型数据库的对比es中的索引相当于数据库类型相当于
2020-06-23 22:22:36 4673
原创 shell基本语句
shell基础语句shell变量可以直接为一个变量赋值如:a=123b=“start” (单引号、双引号、不用都可以)使用时 echo ${a}echo b也可把变量更改为只读readonly变量名删除变量:unset变量名局部变量:局部变量在脚本或者命令中定义,仅在当前shell中有效环境变量:所有的程序,包括shell启动的程序拼接字符串(可以用双引号,也可以用单引号)a="abc"b="www"c="wwww,"{b}也可把变量更改为只读 readonly 变量名删除变量: uns
2020-06-22 22:16:09 469
原创 ELK集群搭建
ELK集群的搭建一、复制虚拟机本集群使用的是3台虚拟机要复制时要把主虚拟机关掉,在进行以上图片中的操作。二、修改主机名和主机列表启动原虚拟机和复制的虚拟机输入用户名和密码,进入虚拟机1.网络地址(复制的虚拟机都要修改)(1)输入:vi /etc/sysconfig/network-script/ifcfg-enp0s3修改网络ip地址重启网络 一定要记得及时生效修改的配置文件2.主机名(1)vi /etc/hostname 内容修改为test01(各个虚拟机都
2020-06-20 14:35:07 256
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人