- 博客(39)
- 资源 (1)
- 收藏
- 关注
原创 重学C++重构你的C++知识体系 升级版 学习笔记
从学习角度看,C++是一门“见效慢”的语言;学习曲线陡峭,语言本身复杂。但,如果你想了解很多编程语言的思想源泉,想要一窥大型企业级开发工程的思路,想开发别人做不了的高性能程序,那C++就是你的不二之选。为什么我们还要学C++因为在贴近底层、追求性能、降低功耗方面,C++几乎没有敌手,小到嵌入式、大到分布式,C++都是解决问题的利器,面向物联网的“嵌入式”开发和面向大型化的“分布式”开发都离不开它5G即来,C++在起势,你不抓住吗?深入再谈Class;
2022-09-22 12:34:23 2442 3
原创 第7章 scala集合
Scala的集合有三大类:序列Seq、集Set、映射Map,所有的集合都扩展自Iterable特质。对于几乎所有的集合类,Scala都同时提供了可变和不可变的版本。可变集合可以在适当的地方被更新或扩展。这意味着你可以修改,添加,移除一个集合的元素。而不可变集合类,相比之下,永远不会改变。不过,你仍然可以模拟添加,移除或更新操作。但是这些操作将在每一种情况下都返回一个新的集合,同时使原来的集合不发生改变,所以这里的不可变并不是变量本身的值不可变,而是变量指向的那个内存地址不可变可变集合和不可变集合,在scal
2022-06-11 10:14:42 280
原创 第5章 scala函数式编程(重要)
在之前Java课程的学习中,我们一直学习的就是面向对象编程,所以解决问题都是按照面向对象的方式来处理的。比如用户登陆等业务功能,但是接下来,我们会学习函数式编程,采用函数式编程的思路来解决问题。scala编程语言将函数式编程和面向对象编程完美地融合在一起了。分解对象,行为,属性,然后通过对象的关系以及行为的调用来解决问题将问题分解成一个一个的步骤,将每个步骤进行封装(函数),通过调用这些封装好的功能按照指定的步骤,解决问题。5.1.2 函数&方法scala 中存在方法与函数两个不同的概念,二者在语义
2022-06-11 10:13:00 146
原创 第4章 scala流程控制
Scala程序代码和所有编程语言代码一样,都会有特定的执行流程顺序,默认情况下是顺序执行,上一条逻辑执行完成后才会执行下一条逻辑,执行期间也可以根据某些条件执行不同的分支逻辑代码。让程序有选择的的执行,分支控制有三种:单分支、双分支、多分支IF…ELSE 语句是通过一条或多条语句的执行结果(true或者false)来决定执行的代码块如果布尔表达式为 true 则执行大括号内的语句块,否则跳过大括号内的语句块,执行大括号之后的语句块。4.1.2 双分支如果布尔表达式为 true 则执行接着的大括号内的
2022-06-11 10:11:57 222
原创 第3章 scala运算符
scala运算符的使用和Java运算符的使用基本相同,只有个别细节上不同。下表列出了 Scala 支持的算术运算符。假定变量 A 为 10,B 为 20:下表列出了 Scala 支持的关系运算符。假定变量 A 为 10,B 为 20:思考一个问题:如下代码执行结果如何?3.3 赋值运算符以下列出了 Scala 语言支持的赋值运算符:思考一个问题:为什么在上面的运算符中没有看到 ++, --?++运算有歧义,容易理解出现错误,所以scala中没有这样的语法,所以采用 +=的方式来代替。下表列出了 Scal
2022-06-11 10:11:01 153
原创 第2章 Scala变量和数据类型
Scala注释使用和Java完全一样。注释是一个程序员必须要具有的良好编程习惯。将自己的思想通过注释先整理出来,再用代码去体现。2.1.2 多行注释2.1.3 文档注释2.2 变量变量是一种使用方便的占位符,用于引用计算机内存地址,变量创建后会占用一定的内存空间。基于变量的数据类型,操作系统会进行内存分配并且决定什么将被储存在保留内存中。因此,通过给变量分配不同的数据类型,你可以在这些变量中存储整数,小数或者字母。变量的类型在变量名之后等号之前声明。变量的类型如果能够通过变量值推断出来,那么
2022-06-11 10:10:03 160
原创 第1章 Scala入门
The Scala Programming LanguageScala combines object-oriented and functional programming in one concise, high-level language. Scala’s static types help avoid bugs in complex applications, and its JVM and JavaScript runtimes let you build high-performance sy
2022-06-11 10:02:28 123
原创 大数据技术之Shell 第11章 企业真实面试题
正则表达式使用单个字符串来描述、匹配一系列符合某个句法规则的字符串。在很多文本编辑器里,正则表达式通常被用来检索、替换那些符合某个模式的文本。在Linux中,grep,sed,awk等命令都支持通过正则表达式进行模式匹配。一串不包含特殊字符的正则表达式匹配它自己,例如:就会匹配所有包含wolffy的行1)特殊字符:^^ 匹配一行的开头,例如:会匹配出所有以a开头的行2)特殊字符:$$ 匹配一行的结束,例如会匹配出所有以t结尾的行思考:^$ 匹配什么?3)特殊字符:.. 匹配一个任意的字符,例如会匹配
2022-06-09 05:15:33 95
原创 大数据技术之Shell 第8章 函数
1)基本语法read(选项)(参数)选项:-p:指定读取值时的提示符;-t:指定读取值时等待的时间(秒)。参数 变量:指定读取值的变量名2)案例实操提示7秒内,读取控制台输入的名称第8章 函数8.1 系统函数8.1.1 basename1)基本语法basename [string / pathname] [suffix] (功能描述:basename命令会删掉所有的前缀包括最后一个(‘/’)字符,然后将字符串显示出来。选项:suffix为后缀,如果suffix被指定了,basename会将pat
2022-06-09 05:14:52 74
原创 大数据技术之Shell 第6章 流程控制(重点)
1)基本语法(1)单分支或者(2)单分支 注意事项:(1)[ 条件判断式 ],中括号和条件判断式之间必须有空格(2)if后要有空格2)案例实操输入一个数字,如果是1,则输出banzhang zhen shuai,如果是2,则输出cls zhen mei,如果是其它,什么也不输出。6.2 case语句1)基本语法如果变量的值都不是以上的值,则执行此程序;;esac注意事项:(1)case行尾必须为单词“in”,每一个模式匹配必须以右括号“)”结束。(2)双分号“*;;”表示命令序列结束,相当
2022-06-09 05:14:04 77
原创 大数据技术之Shell 第3章 变量
1)常用系统变量HOME、HOME、HOME、PWD、SHELL、SHELL、SHELL、USER等2)案例实操(1)查看系统变量的值(2)显示当前Shell中所有变量:set3.2 自定义变量1)基本语法(1)定义变量:变量=值(2)撤销变量:unset 变量(3)声明静态变量:readonly变量,注意:不能unset2)变量定义规则(1)变量名称可以由字母、数字和下划线组成,但是不能以数字开头,环境变量名建议大写。(2)等号两侧不能有空格(3)在bash中,变量默认类型都是字符串类型,无法直接进
2022-06-09 05:13:09 81
原创 大数据技术之Shell 第1章 Shell概述
Shell是一个命令行解释器,它接收应用程序/用户命令,然后调用操作系统内核。Shell还是一个功能相当强大的编程语言,易编写、易调试、灵活性强。1)Linux提供的Shell解析器有:2)bash和sh的关系3)Centos默认的解析器是bash第2章 Shell脚本入门1)脚本格式脚本以#!/bin/bash开头(指定解析器)2)第一个Shell脚本:helloworld(1)需求:创建一个Shell脚本,输出helloworld(2)案例实操:在helloworld.sh中输入如下内容(3
2022-06-09 05:12:05 96
原创 大数据技术之Hive 学习遇到 常见错误及解决方案
1)基本语法2)案例实操(1)查看下面这条语句的执行计划没有生成MR任务的有生成MR任务的(2)查看详细执行计划10.2 Fetch抓取Fetch抓取是指,Hive中对某些情况的查询可以不必使用MapReduce计算。例如:SELECT * FROM employees;在这种情况下,Hive可以简单地读取employee对应的存储目录下的文件,然后输出查询结果到控制台。在hive-default.xml.template文件中hive.fetch.task.conversion默认是more,老
2022-06-09 04:30:36 906
原创 大数据技术之Hive 第10章 企业级调优
1)基本语法2)案例实操(1)查看下面这条语句的执行计划没有生成MR任务的有生成MR任务的(2)查看详细执行计划10.2 Fetch抓取Fetch抓取是指,Hive中对某些情况的查询可以不必使用MapReduce计算。例如:SELECT * FROM employees;在这种情况下,Hive可以简单地读取employee对应的存储目录下的文件,然后输出查询结果到控制台。在hive-default.xml.template文件中hive.fetch.task.conversion默认是more,老
2022-06-09 04:30:00 132
原创 大数据技术之Hive 第9章 压缩和存储
为了支持多种压缩/解压缩算法,Hadoop引入了编码/解码器,如下表所示:压缩性能的比较:http://google.github.io/snappy/On a single core of a Core i7 processor in 64-bit mode, Snappy compresses at about 250 MB/sec or more and decompresses at about 500 MB/sec or more.要在Hadoop中启用压缩,可以配置如下参数(mapred-sit
2022-06-09 04:28:14 201
原创 大数据技术之Hive 第8章 函数 自定义函数UDF和UDTF
1)Hive 自带了一些函数,比如:max/min等,但是数量有限,自己可以通过自定义UDF来方便的扩展。2)当Hive提供的内置函数无法满足你的业务处理需要时,此时就可以考虑使用用户自定义函数(UDF:user-defined function)。3)根据用户自定义函数类别分为以下三种:(1)UDF(User-Defined-Function) 一进一出(2)UDAF(User-Defined Aggregation Function) 聚集函数,多进一出 类似于:count/max/min(3)U
2022-06-08 03:23:57 295
原创 大数据技术之Hive 第8章 函数 系统内置函数
1)查看系统自带的函数2)显示自带的函数的用法3)详细显示自带的函数的用法8.2 常用内置函数8.2.1 空字段赋值1)函数说明NVL:给值为NULL的数据赋值,它的格式是NVL( value,default_value)。它的功能是如果value为NULL,则NVL函数返回default_value的值,否则返回value的值,如果两个参数都为NULL ,则返回NULL。2)数据准备:采用员工表3)查询:如果员工的comm为NULL,则用-1代替4)查询:如果员工的comm为NULL,则用领导
2022-06-08 03:23:23 137
原创 大数据技术之Hive 第7章 分区表和分桶表(优化)
分区表实际上就是对应一个HDFS文件系统上的独立的文件夹,该文件夹下是该分区所有的数据文件。Hive中的分区就是分目录,把一个大的数据集根据业务需要分割成小的数据集。在查询时通过WHERE子句中的表达式选择查询所需要的指定的分区,这样的查询效率会提高很多。1)引入分区表(需要根据日期对日志进行管理, 通过部门信息模拟)2)创建分区表语法注意:分区字段不能是表中已经存在的数据,可以将分区字段看作表的伪列。3)加载数据到分区表中(1) 数据准备(2) 加载数据注意:分区表加载数据时,必须指定分区4)查询
2022-06-08 03:22:46 473
原创 大数据技术之Hive 第6章 查询 Join语句 和Order By 、Distribute By 、Sort By 、Cluster By
Hive支持通常的SQL JOIN语句。1)案例实操(1)根据员工表和部门表中的部门编号相等,查询员工编号、员工名称和部门名称;6.3.2 表的别名1)好处(1)使用别名可以简化查询。(2)使用表名前缀可以提高执行效率。2)案例实操合并员工表和部门表6.3.3 内连接内连接:只有进行连接的两个表中都存在与连接条件相匹配的数据才会被保留下来。6.3.4 左外连接左外连接:JOIN操作符左边表中符合WHERE子句的所有记录将会被返回。6.3.5 右外连接右外连接:JOIN操作符右边表中符合WHE
2022-06-08 02:43:47 223
原创 大数据技术之Hive 第6章 查询 基本查询
https://cwiki.apache.org/confluence/display/Hive/LanguageManual+Select查询语句语法:6.1 基本查询(Select…From)6.1.1 全表和特定列查询0)数据准备(0)原始数据dept:emp:(1)创建部门表(2)创建员工表(3)导入数据1)全表查询2)选择特定列查询注意:(1)SQL 语言大小写不敏感。(2)SQL 可以写在一行或者多行(3)关键字不能被缩写也不能分行(4)各子句一般要分行写。(5)使用缩进提高
2022-06-08 02:43:13 263
原创 大数据技术之Hive 第5章 DML数据操作语言
1)语法(1)load data:表示加载数据(2)local:表示从本地加载数据到hive表;否则从HDFS加载数据到hive表(3)inpath:表示加载数据的路径(4)overwrite:表示覆盖表中已有数据,否则表示追加(5)into table:表示加载到哪张表(6)student:表示具体的表(7)partition:表示上传到指定分区2)实操案例(0)创建一张表(1)加载本地文件到hive(2)加载HDFS文件到hive中上传文件到HDFS加载HDFS上数据(3)加
2022-06-08 02:42:36 88
原创 大数据技术之Hive 第4章 DDL数据定义语言
1)创建一个数据库,数据库在HDFS上的默认存储路径是。2)避免要创建的数据库已经存在错误,增加if not exists判断。(标准写法)3)创建一个数据库,指定数据库在HDFS上存放的位置4.2 查询数据库4.2.1 显示数据库1)显示数据库2)过滤显示查询的数据库4.2.2 查看数据库详情1)显示数据库信息2)显示数据库详细信息,extended4.2.3 切换当前数据库4.3 修改数据库用户可以使用ALTER DATABASE命令为某个数据库的DBPROPERTIES设置键
2022-06-08 02:41:36 134
原创 大数据技术之Hive 第3章 Hive数据类型 基本数据类型 和 集合数据类型
对于Hive的String类型相当于数据库的varchar类型,该类型是一个可变的字符串,不过它不能声明其中最多能存储多少个字符,理论上它可以存储2GB的字符数。Hive有三种复杂数据类型ARRAY、MAP 和 STRUCT。ARRAY和MAP与Java中的Array和Map类似,而STRUCT与C语言中的Struct类似,它封装了一个命名字段集合,复杂数据类型允许任意层次的嵌套。1)案例实操(1)假设某表有如下一行,我们用JSON格式来表示其数据结构。在Hive下访问的格式为(2)基于上述数据结构,我们
2022-06-08 02:40:32 248
原创 大数据技术之Hive 第2章 Hive安装 以及基本操作
0)为什么需要Mysql原因在于Hive默认使用的元数据库为derby,开启Hive之后就会占用元数据库,且不与其他客户端共享数据,如果想多窗口操作就会报错,操作比较局限。以我们需要将Hive的元数据地址改为MySQL,可支持多窗口操作。1)检查当前系统是否安装过Mysql2)将MySQL安装包拷贝到/opt/software目录下3)解压MySQL安装包4)在安装目录下执行rpm安装注意:按照顺序依次执行如果Linux是最小化安装的,在安装mysql-community-server-5.7.28
2022-06-08 02:39:55 326
原创 大数据技术之Hive 第1章 Hive基本概念
1)hive简介Hive:由Facebook开源用于解决海量结构化日志的数据统计工具。Hive是基于Hadoop的一个数据仓库工具,可以将结构化的数据文件映射为一张表,并提供类SQL查询功能。2)Hive本质:将HQL转化成MapReduce程序(1)操作接口采用类SQL语法,提供快速开发的能力(简单、容易上手)。(2)避免了去写MapReduce,减少开发人员的学习成本。(3)Hive的执行延迟比较高,因此Hive常用于数据分析,对实时性要求不高的场合。(4)Hive优势在于处理大数据,对于处理小数据没有
2022-06-08 02:38:35 119
原创 第6章 Flume对接Kafka
1)配置flume2)启动kafka消费者3)进入flume根目录下,启动flume4)向 /opt/module/data/flume.log里追加数据,查看kafka消费者消费情况6.2 数据分离0)需求: 将flume采集的数据按照不同的类型输入到不同的topic中将日志数据中带有wolffy的,输入到Kafka的first主题中,将日志数据中带有root的,输入到Kafka的second主题中,其他的数据输入到Kafka的third主题中1) 编写Flume的Interceptor2)将
2022-06-06 02:58:41 120
原创 第5章 Kafka监控 Kafka Eagle
1)修改kafka启动命令修改命令中为注意:修改之后在启动Kafka之前要分发之其他节点2)上传压缩包 kafka-eagle-bin-1.4.5.tar.gz到集群/opt/software目录3)解压到本地4)进入刚才解压的目录5)将kafka-eagle-web-1.3.7-bin.tar.gz解压至/opt/module6)修改名称7)给启动文件执行权限8)修改配置文件 conf/system-config.properties9)添加环境变量10)启动注意:启动之前需要先启动Z
2022-06-06 02:55:41 127
原创 第4章 Kafka API
Kafka的Producer发送消息采用的是异步发送的方式。在消息发送的过程中,涉及到了两个线程——main线程和Sender线程,以及一个线程共享变量——RecordAccumulator。main线程将消息发送给RecordAccumulator,Sender线程不断从RecordAccumulator中拉取消息发送到Kafka broker。相关参数:**batch.size:**只有数据积累到batch.size之后,sender才会发送数据。**linger.ms:**如果数据迟迟未达到batch
2022-06-06 02:54:33 68
原创 第3章 Kafka架构深入
Kafka中消息是以topic进行分类的,生产者生产消息,消费者消费消息,都是面向topic的。topic是逻辑上的概念,而partition是物理上的概念,每个partition对应于一个log文件,该log文件中存储的就是producer生产的数据。Producer生产的数据会被不断追加到该log文件末端,且每条数据都有自己的offset。消费者组中的每个消费者,都会实时记录自己消费到了哪个offset,以便出错恢复时,从上次的位置继续消费。由于生产者生产的消息会不断追加到log文件末尾,为防止log文
2022-06-06 02:52:54 156
原创 第2章 Kafka快速入门
官网:http://kafka.apache.org/downloads.html1)解压安装包2)修改解压后的文件名称3)在/opt/module/kafka-2.4.1目录下创建logs文件夹4)修改配置文件输入以下内容:5)配置环境变量6)分发安装包注意:分发之后记得配置其他机器的环境变量7)分别在hadoop103和hadoop104上修改配置文件/opt/module/kafka-2.4.1/config/server.properties中的broker.id=1、broker.
2022-06-06 02:51:54 93
原创 第1章 Kafka概述
Kafka是一个分布式的基于发布/订阅模式的消息队列(Message Queue),主要应用于大数据实时处理领域。使用消息队列的好处1)解耦允许你独立的扩展或修改两边的处理过程,只要确保它们遵守同样的接口约束。2)可恢复性系统的一部分组件失效时,不会影响到整个系统。消息队列降低了进程间的耦合度,所以即使一个处理消息的进程挂掉,加入队列中的消息仍然可以在系统恢复后被处理。3)缓冲有助于控制和优化数据流经过系统的速度,解决生产消息和消费消息的处理速度不一致的情况。4)灵活性 & 峰值处理能力在访问量剧增的情况下
2022-06-06 02:50:54 125
原创 大数据技术之Zookeeper源码详解
思考:Zookeeper是如何保证数据一致性的?这也是困扰分布式系统框架的一个难题。拜占庭将军问题是一个协议问题,拜占庭帝国军队的将军们必须全体一致的决定是否攻击某一支敌军。问题是这些将军在地理上是分隔开来的,并且将军中存在叛徒。叛徒可以任意行动以达到以下目标:欺骗某些将军采取进攻行动;促成一个不是所有将军都同意的决定,如当将军们不希望进攻时促成进攻行动;或者迷惑某些将军,使他们无法做出决定。如果叛徒达到了这些目的之一,则任何攻击行动的结果都是注定要失败的,只有完全达成一致的努力才能获得胜利。Paxos算法
2022-06-05 00:04:13 946
原创 第6章 zookeeper企业面试真题(面试重点)
半数机制,超过半数的投票通过,即通过。(1)第一次启动选举规则:投票过半数时,服务器id大的胜出(2)第二次启动选举规则:①EPOCH大的直接胜出②EPOCH相同,事务id大的胜出③事务id相同,服务器id大的胜出安装奇数台。生产经验:l 10台服务器:3台zk;l 20台服务器:5台zk;l 100台服务器:11台zk;l 200台服务器:11台zk服务器台数多:好处,提高可靠性;坏处:提高通信延时6.4 ZooKeeper的监听原理是什么?6.5 ZooKeeper的部署方式有哪几种?集群中的角
2022-06-04 23:53:53 122
原创 第5章 ZooKeeper分布式锁案例
什么叫做分布式锁呢?比如说"进程1"在使用该资源的时候,会先去获得锁,"进程1"获得锁以后会对该资源保持独占,这样其他进程就无法访问该资源,"进程1"用完该资源以后就将锁释放掉,让其他进程来获得锁,那么通过这个锁机制,我们就能保证了分布式系统中多个进程能够有序的访问该临界资源。那么我们把这个分布式环境下的这个锁叫作分布式锁。1)接收到请求后,在/locks节点下创建一个临时顺序节点2)判断自己是不是当前节点下最小的节点:是,获取到锁;不是,对前一个节点进行监听3)获取到锁,处理完业务后,delete节点释放
2022-06-04 23:52:31 126
原创 第4章 服务器动态上下线监听案例
1)集群规划在hadoop102、hadoop103和hadoop104三个节点上都部署Zookeeper。思考:如果是10台服务器,需要部署多少台Zookeeper?2)解压安装(1)在hadoop102解压Zookeeper安装包到/opt/module/目录下(2)修改apache-zookeeper-3.5.7-bin名称为zookeeper-3.5.73)配置服务器编号(1)在/opt/module/zookeeper-3.5.7/这个目录下创建zkData(2)在/opt/module/z
2022-06-04 23:51:06 118
原创 第3章 Zookeeper集群操作
1)集群规划在hadoop102、hadoop103和hadoop104三个节点上都部署Zookeeper。思考:如果是10台服务器,需要部署多少台Zookeeper?2)解压安装(1)在hadoop102解压Zookeeper安装包到/opt/module/目录下(2)修改apache-zookeeper-3.5.7-bin名称为zookeeper-3.5.73)配置服务器编号(1)在/opt/module/zookeeper-3.5.7/这个目录下创建zkData(2)在/opt/module/z
2022-06-04 23:49:19 394
原创 第2章 Zookeeper本地安装
1.安装前准备(1)安装JDK(2)拷贝apache-zookeeper-3.5.7-bin.tar.gz安装包到Linux系统下(3)解压到指定目录:(4)修改名称:2.配置修改(1)将/opt/module/zookeeper-3.5.7/conf这个路径下的zoo_sample.cfg修改为zoo.cfg;(2)打开zoo.cfg文件,修改dataDir路径:修改如下内容:(3)在/opt/module/zookeeper-3.5.7/这个目录上创建zkData文件夹3.操作Zookeeper
2022-06-04 23:47:45 119
原创 第1章 Zookeeper入门
Zookeeper是一个开源的分布式的,为分布式框架提供协调服务的Apache项目。Zookeeper从设计模式角度来理解,是一个基于观察者模式设计的分布式服务管理框架,它负责存储和管理大家都关心的数据,然后接受观察者的注册,一旦这些数据的状态发生了变化,Zookeeper就负责通知已经在Zookeeper上注册的那些观察者做出相应的反应.Zookeeper工作机制Zookeeper从设计模式角度来理解:是一个基于观察者模式设计的分布式服务管理框架,它负责存储和管理大家都关心的数据,然后接受观察者的注册,一
2022-06-04 23:46:18 101
价值上万的视频教程互联网程序开发+大数据+Hadoop、hive、Spark
2022-06-08
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人