- 博客(20)
- 问答 (1)
- 收藏
- 关注
原创 HDFS 命令
假设有一个文件块,一共三个副本,s1,s2,s3,datanode会向namenode发送协调报告,namenode会检查元数据信息(demo.log有1块,分别有三个副本b0-s1,b0-s2,b0-s3),等到datanode进行心跳响应时,namenode会进行校验,如果一台节点宕机,那么只收到两台节点汇报,相当于丢了一个副本的信息,此时namenode就会进入安全模式,把丢失的副本给其他服务器拷贝一份。三个副本放在一台节点上相当于覆盖,存的时候只有一块。
2023-12-25 11:47:12
932
1
原创 Linux shell脚本
(2) 变量定义或赋值时,变量名与值之间用等号连接:变量名=值,等号两边不能有空格,值中有空格或特殊字符需要用双引号或单引号引起来。(1) 变量名首字符必须为字母,名字只能用字母、数字、下划线、不要用bash关键字。(3) 倒引号``:位于Esc键下方,用倒引号括起一个命令时,这个命令将会被执行,执行后的结果作为这个表达式的值。(3) 使用 $变量名 或 ${变量名} 形式获取变量值,这两种方式没有什么区别,但推荐用${}方式。(2) for (( 控制变量的初始化;(1) 定义没有返回值的函数。
2023-12-19 13:21:39
1105
1
原创 Linux 权限、打包压缩与解压缩、包管理工具
在Linux系统中,文件的后缀名不重要,但是对于压缩文件的后缀名是必须的,因为可以让其他的程序员根据文件的后缀名使用对应的算法进行解压。sudo(SuperUser Do),可以让普通用户执行部分root权限,保证了root的密码安全,且执行的每条命令都会被记录,便于日后的日志审计,例如用户执行过高危操作命令。根据第一个字母(文件类型),d表示该文件是一个目录文件,-表示该文件是一个普通文件。(2) rpm提供了每个软件的信息及依赖关系,yum分析每个软件的信息及依赖关系,生成一个安装软件的。
2023-12-18 00:23:45
424
1
原创 Hive 优化
reduce要拉取属于自己分区的数据,在环形缓冲区中会进行分区,第一个reduce task会比第二个reduce task拉取的数据多,而在第一个reduce task拉取数据的时候,第二个reduce task可能已经把数据拉取完了,且执行完了15次加一的操作,这就造成了数据倾斜。开启mapjoin后,会把小表放到maptask所在节点,运行的时候会加载到内存中,读取的时候是读取大表的数据,在map阶段进行join,没有reduce,避免了shuffle和频繁大量溢写磁盘,节省时间提高效率。
2023-12-16 21:14:02
213
1
原创 Linux用户和用户组
passwd可以不跟选项、用户名,默认是修改自己的账号密码。修改他人密码,必须是root用户。一对多:即一个用户可以存在多个用户组中,那么此用户具有多个组的共同权限。多对一:多个用户可以存在一个组中,这些用户具有和组相同的权限。锁定用户和删除用户密码都是可以达到不允许账户远程登录的效果。创建一个用户的时候,默认情况下,会为其创建一个同名的用户组。一对一:即一个用户可以存在一个组中,也可以是组中唯一成员。用户与用户组的对应关系有:一对一,一对多,多对一。注:如果该用户组被追加了主组,是不可以删的。
2023-12-16 08:41:21
855
1
原创 Linux 扩展命令
要对进程进行监测和控制,首先要了解当前进程的情况,即查看当前进程,而ps命令就是最基本同时也是很强大的进程查看命令。top是一个动态显示过程,即可以通过用户按键来不断刷新当前状态,如果在前台执行该命令,它将独占前台,直到用户终止该程序为止,比较准确地说,top命令提供了实时的对系统处理器的状态监视,它将显示系统中CPU最敏感的任务列表。ps命令用来列出系统中当前运行的进程,列出的是当前进程的快照,即执行ps命令的哪个时刻的哪些进程。第二次提示:对私钥加密,输入密码,如果不需要输入密码,直接回车。
2023-12-14 11:50:07
202
1
原创 MapReduce
单机计算,需要使用cpu和内存(cpu核数包括内存的容量是有限的),如果要计算一个大文件,就会要很长的时间,比如说一个小时,所以提出了个概念,叫分布式计算(一台干不了的事情分成多台干,计算集群,),这个文件就需要分布式存储,问题是将来要对这个文件进行计算,计算任务需要启动到哪一台集群上,并行处理的话可能20分钟就计算完了,提高了计算的时间,另外一个问题,所有的及其已经处理完了各自的数据,那么处理完的结果如何汇总,如果引入到分布式来运行的话,是增加了程序的复杂度的,且开发难度也增加了。
2023-12-12 22:49:20
221
1
原创 Hive 安装
使用mysql做元数据的存储,使用metastore服务做元数据的管理,优点便于元数据库信息的保密,因为只需要在运行metastore的机器上配置元数据库连接信息,客户端只需要配置metastore连接信息即可,缺点会引发单点问题,例如metastore服务挂了,其他hive终端就获取不到元数据信息了。了metastore服务,可以直接连接mysql数据库,但是若连接过多会造成mysql数据库压力过大(一般练习时可以用),另外对于metastore服务来说不安全,因为所有的配置信息在配置文件中都能看到。
2023-12-12 10:50:37
120
原创 Hive 数据类型、操作符、聚合函数
数据由逗号(,)分隔;解析json字符串json_string,可以指定多个json数据中的key,返回对应的value,如果输入的json字符串无效,那么返回Null。count(1) count(*) 是包含null值,count(字段)不包含null值,count(1)稍微比count(*)快一点。Hive中的Date只支持YYYY-MM-DD格式的日期,其余写法都是错误的,如需带上时分秒,请使用timestamp。char是固定长度的,最大长度255,且尾部的空格不影响字符串的比较。
2023-12-10 21:59:48
279
原创 Hive数仓工具
需要将执行计划提交给ResourceManager,就相当于走了Yarn的Job的提交流程,即当向Yarn上提交一个任务的时候,首先会创建一个ApplicationMaster用于管理这个任务,再进行任务的初始化,发现有多少个MapTask,有多少个ReduceTask,然后分别在NodeManager上进行启动,并且监控,运行完后ApplicationMaster就结束了,将结果进行返回,最后返回到客户端,打印到屏幕上。Shuffle流程可控不多,就会造成HQL调优困难。
2023-12-08 21:41:23
180
原创 Hive表SQL操作
Hive默认是静态分区,在插入数据的时候要手动设置分区,如果源数据量很大的时候,那么针对一个分区就要写一个insert,比如有很多日志数据,要按日期作为分区字段,在插入数据的时候手动去添加分区太麻烦。(1)Hive的数据加载不会对本地数据文件做任何处理,只是将文件或目录中的所有文件拷贝到表定义的数据目录,分桶表使用load加载数据会生成mapreduce任务,将数据分到多个桶文件进行存放。(5)如果指定overwrite会覆盖相应表数据或分区数据,相当于rm原有目录数据,然后上传新数据文件。
2023-12-07 23:17:30
477
原创 Linux学习(day04)
利用Linux提供的管道符 | 将两个命令隔开,管道符左边命令的输出 就会作为管道符右边命令的输入。连续使用管道意味着第一个命令的输出会作为第二个命令的输入,第二个命令的输出又会作为第三个命令的输入,以此类推。③ cat > filename << EOF,以EOF作为输入结束,其中EOF可以是任何字符串,和ctrl+d作用一样。② cat > filename,创建新文件,并把标准输入输出到filename文件中,以ctrl+d作为输入结束。① cat << EOF,以EOF输入字符串为标准输入结束;
2023-12-06 22:45:12
116
1
原创 Hive 文件存储格式
方便HDFS进行读取更加高效,HDFS的block块设置为256MB,256MB就会对应一个切片,就对应一个map task线程进行处理,一个线程就可以把一个stripe里面的数据进行读取。这种文件格式可以提供一种高效的方法存储Hive数据,其设计目标是用于克服Hive其他格式的缺陷,运用ORC File可以提高Hive的读、写、及处理数据的性能。: 按行存储,不支持块压缩,默认格式,不支持压缩,磁盘开销大,加载数据的速度最高。(包含键值对的二进制的文件存储格式,支持压缩,可以节省存储空间)
2023-12-06 21:01:14
1209
原创 Hive DDL(表、库的操作,表分类,内部表,外部表,分区表,分桶表)
上,内部表是在hive.metastore.warehouse.dir(默认: /user/hive/warehouse),而外部表是由自己制定(如果没有location,hive将在HDFS上的/usr/hive/warehouse文件夹下以外部表的表名创建一个文件夹,并将属于这个表的数据存放到这里)。操作,内部表会将数据移动到hive指向的路径,外部表仅记录数据所在的路径,不对数据的位置做任何改变。注:普通表(外部表,内部表)、分区表这三个都是对应HDFS上的目录,分桶表对应是目录里的文件。
2023-12-05 22:26:53
260
原创 Hive中如何实现行转列、列转行?
提到了UDTF的两种使用方式,第一种是直接select后面使用,但不支持嵌套使用、不支持和其他字段一起使用、不支持和分组、排序一起使用;第二种是和lateral view一起使用(其本质是将udtf后的结果看成一张虚拟表,再和其他表的字段拼在一起使用,可以解决单独用udtf函数时不能实现的情况)。lateral view 侧写函数: 配合split,explode等UDTF函数一起使用,能够将一列数据拆成多行数据,并且对拆分后的结果进行聚合,即将多行结果组合成一个支持别名的虚拟表。
2023-12-04 13:30:56
362
1
原创 Hive笔记——Join、group by、排序、窗口函数
非全局排序,如果reducer数量设置为2,即有两个reduce task,数据再进入reduce之前会进行排序,即每个reduce会输出一个文件,文件中会进行排序,但只是局部有序;③task通常表示一个过程(进程),job通常表示用户提交的一个任务(目标),期望明确的结果,job可以包含多个task,可以认为task是一个JobHandler。③maptask运行的时候:会把小表中的数据读取到内存中,然后maptask会读取block块中大表的数据,读完后和小表中的内存中的数据join,最后对外输出。
2023-12-01 21:29:49
1091
1
原创 Linux学习笔记(day01)
Debian(www.debian.org):完全免费,社区维护的Linux版本,有很大的用户群,所以遇到问题基本都可以找到社区用户的支持。CentOS(www.centos.org):这个版本不来自红帽公司,是收集红帽公开的源码组成的免费版本,由社区维护,和红帽完全兼容。Ubuntu(www.ubuntu.com):由一个基金提供支持的免费Linux版本,继承自Debian,界面友好。SUSE Linux Enterprise(www.suse.com):和红帽商业版类似,德国的发行版本。
2023-11-30 00:33:47
110
原创 Hive的三种自定义函数是什么(区别)?实现的步骤与流程?(一位大数据小白的笔记)
Hive的三种自定义函数的简单了解及区别、UDF的实现流程、UDTF的实现流程及两种使用方法
2023-11-29 22:14:59
615
1
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅