hadoop
jiedaodezhuti
目前工作主要涉及大数据平台,数据治理方面的工作;
展开
-
HIVE-17824,删除hdfs分区信息,清理metastore元数据
当有大量未跟踪的分区时,运行MSCK REPAIR TABLE批处理避免OOME(内存不足错误)。通过为属性hive.msck.repair.batch.size提供配置的批大小,它可以在内部的批中运行。属性的默认值是0,这意味着它将一次执行所有分区。不带REPAIR选项的MSCK命令可用于查找元数据mismatch metastore的详细信息。若手动删除 HDFS 上多个分区文件夹,且快速刷新分区,则需要在存在。对于不存在元数据的分区,会更新到Hive metastore。原创 2023-10-23 10:34:31 · 994 阅读 · 0 评论 -
hive往es映射表写数据报错
需要提前将jar上传至hdfs上的jars目录。需要加载hadoop和es的jar包。原创 2023-10-18 11:11:58 · 728 阅读 · 0 评论 -
spark临时文件较大问题处理
【代码】【无标题】原创 2023-09-15 13:27:01 · 492 阅读 · 0 评论 -
datanode无法启动问题
根据报错,需要对根目录进行授权操作。原创 2023-09-14 16:16:32 · 121 阅读 · 0 评论 -
集群资源管理基础架构和工作机制
然后向集群RM申请运行一个application,RM返回要提交的JobApplication资源提交路径,主要放job.split(切片用来开启控制多少mapreduce),job.xml(参数配置),wc.jar(jar包即程序代码)。空闲的NodeManager就会领取调度队列中的Task任务,领走任务之后首先会创建容器container,任何任务的执行都在容器中执行,容器中有cpu,网络资源,磁盘,内存等。ReduceTask。Reduce执行结束后,MR会向RM注销自己,释放资源。...原创 2022-07-15 23:41:13 · 310 阅读 · 1 评论 -
大数据集群写数据流程原理分析
写入数据流程,即客户端如何把数据写入hdfs集群,底层原理如下: 右侧为hdfs集群,含有NameNode和DataNode节点,左侧为客户端准备把数据传送到集群,首先创建客户端(分布式的文件系统),创建好客户端后向NameNode请求,NameNode要进行两个方面的校验,1.检查权限,即有没有权限写;2.检查目录结构是否存在; 检查完毕响应可以上传,请求上传第一个Block,请求返回DataNode,选择策略,副本存储节点选择:1.本地节点;2.其他机架节点;3.其他机架另外原创 2022-07-12 23:37:21 · 356 阅读 · 0 评论 -
深入理解混洗过程
map方法之后,首先进入getpartition方法,标记数据属于那个分区,并打上分区编号,因为后续的数据都是按分区处理。 不同分区数据会进入不同的reduce里面,然后进入环形缓冲区(默然100M),左侧存索引,右侧存数据,当到达80%的时候进行反向溢写,原因是留给溢写时间,不至于等待,让环形缓冲区高效运转,利用率更高。在溢写之前,对数据进行一次排序,排序的手段为快排,是对key的索引按照字典顺序,快排完后进行第一次溢写,溢写文件有两个,一个是spill.index和一个真正落地的文件s原创 2022-07-09 00:03:44 · 525 阅读 · 0 评论 -
AMBARI HDP安装官方文档
https://docs.hortonworks.com/HDPDocuments/HDP2/HDP-2.6.2/index.html原创 2021-06-18 10:58:21 · 242 阅读 · 0 评论 -
集群数据均衡
1.节点间数据均衡开启数据均衡命令:start-balancer.sh -threshold 10对于参数 10,代表的是集群中各个节点的磁盘空间利用率相差不超过 10%,可根据实际情况进行调整。停止数据均衡命令:stop-balancer.sh注意:于 HDFS 需要启动单独的 Rebalance Server 来执行 Rebalance 操作,所以尽量不要在 NameNode 上执行 start-balancer.sh,而是找一台比较空闲的机器。2.磁盘间数据均衡(1)生成均衡计划(原创 2021-06-02 22:49:13 · 146 阅读 · 0 评论 -
hive排序
1.全局排序(Order By)Order By:全局排序,一个ReducerASC(ascend):升序(默认)DESC(descend):降序Order By子句在SELECT语句的结尾案例实操(1)查询员工信息按工资升序排列hive (default)> select * from emp order by sal;(2)查询员工信息按工资降序排列hive (default)> select * from emp order by sal desc;2.按照别名排序原创 2021-05-18 23:03:50 · 206 阅读 · 0 评论 -
连接谓词中不支持or
案例实操hive (default)> select > e.empno, > e.ename, > d.deptno > from > emp e > join > dept d > on > e.deptno=d.deptno or e.ename=d.dname;FAILED: SemanticException [Error 10019]: Line 10:3 OR notsupported in JOIN curr原创 2021-05-18 22:48:30 · 574 阅读 · 0 评论 -
笛卡尔积
1.产生条件(1)省略连接条件(2)连接条件无效(3)所有表中的所有行相互连接案例实操hive (default)> select empno, dname from emp, dept;原创 2021-05-18 22:46:49 · 111 阅读 · 0 评论 -
多表连接查询
hive (default)>SELECT e.ename, d.deptno, l.loc_nameFROM emp eJOIN dept dON d.deptno = e.deptnoJOIN location lON d.loc = l.loc;大多数情况下,Hive 会对每对 JOIN 连接对象启动一个 MapReduce 任务。本例中会首先启动一个 MapReduce job 对表 e 和表 d 进行连接操作,然后会再启动一个 MapReduce job将第一个 MapRedu原创 2021-05-18 22:42:25 · 99 阅读 · 0 评论 -
Having 语句
1.having 与 where 不同点(1)where 针对表中的列发挥作用,查询数据;having 针对查询结果中的列发挥作用,筛选数据。(2)where 后面不能写聚合函数,而 having 后面可以使用聚合函数。(3)having 只用于 group by 分组统计语句。...原创 2021-05-09 23:41:28 · 453 阅读 · 0 评论 -
hive导入/导出实操案例
Import 数据到指定 Hive 表中注意:先用 export 导出后,再将数据导入。hive (default)> import table student2 partition(month='201709')from '/user/hive/warehouse/export/student';2.数据导出Insert 导出(1)将查询的结果导出到本地hive (default)> insert overwrite local directory'/opt/module/.原创 2021-05-09 23:28:38 · 101 阅读 · 0 评论 -
Hive数据类型
1.基本数据类型对于 Hive 的 String 类型相当于数据库的 varchar 类型,该类型是一个可变的字符串,不过它不能声明其中最多能存储多少个字符,理论上它可以存储 2GB 的字符数。2.集合数据类型Hive 有三种复杂数据类型 ARRAY、MAP 和 STRUCT。ARRAY 和 MAP 与 Java 中的Array 和 Map 类似,而 STRUCT 与 C 语言中的 Struct 类似,它封装了一个命名字段集合,复杂数据类型允许任意层次的嵌套。3.类型转化Hive 的原子数据原创 2021-05-09 23:17:50 · 141 阅读 · 0 评论 -
Hive常见属性配置
Hive数据仓库位置配置1)Default 数据仓库的最原始位置是在 hdfs 上的:/user/hive/warehouse 路径下。2)在仓库目录下,没有对默认的数据库 default 创建文件夹。如果某张表属于 default数据库,直接在数据仓库目录下创建一个文件夹。3)修改 default 数据仓库原始位置(将 hive-default.xml.template 如下配置信息拷贝到hive-site.xml 文件中)。<property><name>hiv.原创 2021-05-09 23:02:01 · 125 阅读 · 0 评论 -
Hive常用交互命令
查看交互命令方法:[hadoop@hadoop102 hive]$ bin/hive -help1.“-e”不进入 hive 的交互窗口执行 sql 语句[hadoop@hadoop102 hive]$ bin/hive -e "select id from student;"2.“-f”执行脚本中 sql 语句[hadoop@hadoop102 datas]$ touch hivef.sql文件中写入正确的 sql 语句select * from student;(2)执行文件中的原创 2021-05-09 22:46:49 · 95 阅读 · 0 评论 -
启动 hive产生 java.sql.SQLException 异常问题
Exception in thread “main” java.lang.RuntimeException:java.lang.RuntimeException:Unable to instantiateorg.apache.hadoop.hive.ql.metadata.SessionHiveMetaStoreClientatorg.apache.hadoop.hive.ql.session.SessionState.start(SessionState.java:522)atorg.a原创 2021-05-09 22:38:13 · 849 阅读 · 0 评论 -
Hive 和数据库区别
1.由于 Hive 采用了类似 SQL 的查询语言 HQL(Hive Query Language),因此很容易将 Hive 理解为数据库。其实从结构上来看,Hive 和数据库除了拥有类似的查询语言,再无类似之处。本节将从多个方面来阐述 Hive 和数据库的差异。数据库可以用在 Online 的应用中,但是 Hive 是为数据仓库而设计的,清楚这一点,有助于从应用角度理解 Hive 的特性。2.Hive 是建立在 Hadoop 之上的,所有 Hive 的数据都是存储在 HDFS 中的。而数据库则可以将数据原创 2021-05-09 22:35:39 · 354 阅读 · 0 评论 -
修改表及实操案例
1.修改表名(1)语法ALTER TABLE table_name RENAME TO new_table_name(2)实操案例hive (default)> alter table dept_partition2 rename todept_partition3;2.增加、修改、替换列信息(1)语法更新列ALTER TABLE table_name CHANGE [COLUMN] col_old_name col_new_namecolumn_type [COMMENT c原创 2021-05-09 00:26:26 · 108 阅读 · 0 评论 -
分区表及实战
概念:分区表实际上就是对应一个 HDFS 文件系统上的独立的文件夹,该文件夹下是该分区所有的数据文件。Hive 中的分区就是分目录,把一个大的数据集根据业务需要分割成小的数据集。在查询时通过 WHERE 子句中的表达式选择查询所需要的指定的分区,这样的查询效率会提高很多。分区基本操作实战1.创建分区表语法hive (default)> create table dept_partition(deptno int, dname string, loc string)partitioned b原创 2021-05-09 00:18:02 · 181 阅读 · 0 评论 -
内部表和外部表区别
1.Hive 创建内部表时,会将数据移动到数据仓库指向的路径;若创建外部表,仅记录数据所在的路径,不对数据的位置做任何改变。2.在删除表的时候,内部表的元数据和数据会被一起删除,而外部表只删除元数据,不删除数据。...原创 2021-05-08 23:12:53 · 8949 阅读 · 0 评论 -
480000 millis timeout while waiting for channel to be ready for write异常处理
2014-08-25 15:35:05,691 ERROR org.apache.hadoop.hdfs.server.datanode.DataNode: DatanodeRegistration(10.130.136.136:50010, storageID=DS-1533727399-10.130.136.136-50010-1388038551296, infoPort=50075, ipcPort=50020):DataXceiverjava.net.SocketTimeoutException原创 2021-05-07 10:33:23 · 601 阅读 · 0 评论 -
集群安全模式
1.NameNode启动时,首先将镜像文件(Fsimage)载入内存,并执行编辑日志(Edits)中的各项操作。一旦在内存中成功建立文件系统元数据的映像,则创建一个新的Fsimage文件和一个空的编辑日志。此时,NameNode开始监听DataNode请求。这个过程期间,NameNode一直运行在安全模式,即NameNode的文件体系对于客户端来说是只读的。2.DataNode启动,系统中的数据块的位置并不是由NameNode维护的,而是以块列表的形式存储在DataNode中,在系统的正常操作期间,Nam原创 2021-04-30 15:53:50 · 138 阅读 · 1 评论 -
Fsimage和Edits概念
NameNode被格式化之后,将在/opt/module/hadoop-2.7.2/data/tmp/dfs/name/current目录中产生如下文件fsimage_0000000000000000000fsimage_0000000000000000000.md5seen_txidVERSION(1)Fsimage文件:HDFS文件系统元数据的一个永久性的检查点,其中包含HDFS文件系统的所有目录和文件inode的序列化信息。(2)Edits文件:存放HDFS文件系统的所有更新操作的路径,文原创 2021-04-30 15:03:39 · 893 阅读 · 1 评论 -
Hadoop副本节点选择
我的集群使用的是hadoop2.7.2版本,副本节点选择机制如下:(1)第一个副本在client所处的节点上,如果客户端在集群外,随机选一个。(2)第二个副本和第一个副本位于相同机架,随机节点。(3)第三个副本位于不同机架,随机节点。...原创 2021-04-30 14:10:52 · 420 阅读 · 0 评论 -
HDFS-HA 集群配置
环境准备修改 IP修改主机名及主机名和 IP 地址的映射关闭防火墙ssh 免密登录安装 JDK,配置环境变量等规划集群配置 Zookeeper 集群1.集群规划在 hadoop102、hadoop103 和 hadoop104 三个节点上部署 Zookeeper。2.解压安装(1)解压 Zookeeper 安装包到/opt/module/目录下[hadoop@hadoop102 software]$ tar -zxvf zookeeper-3.4.10.tar.gz -C /原创 2021-03-17 17:24:01 · 82 阅读 · 0 评论 -
HDFS HA 高可用
HA 概述1)所谓 HA(High Available),即高可用(7*24 小时不中断服务)。2)实现高可用最关键的策略是消除单点故障。HA 严格来说应该分成各个组件的 HA 机制:HDFS 的 HA 和 YARN 的 HA。3)Hadoop2.0 之前,在 HDFS 集群中 NameNode 存在单点故障(SPOF)。4)NameNode 主要在以下两个方面影响 HDFS 集群NameNode 机器发生意外,如宕机,集群将无法使用,直到管理员重启NameNode 机器需要升级,包括软件、硬件升原创 2021-03-17 16:20:33 · 99 阅读 · 0 评论 -
快照管理
快照相当于对目录做一个备份。并不会立即复制所有文件,而是记录文件变化。(1)hdfs dfsadmin -allowSnapshot 路径 (功能描述:开启指定目录的快照功能) (2)hdfs dfsadmin -disallowSnapshot 路径 (功能描述:禁用指定目录的快照功能,默认是禁用) (3)hdfs dfs -createSnapshot 路径 (功能描述:对目录创建快照) (4)hdfs dfs -createSnapshot 路径 名称 (功能描述:指定名称创建快照) (5)原创 2021-03-17 15:41:11 · 148 阅读 · 0 评论 -
小文件存档
1、HDFS存储小文件弊端每个文件均按块存储,每个块的元数据存储在NameNode的内存中,因此HDFS存储小 文件会非常低效。因为大量的小文件会耗尽NameNode中的大部分内存。但注意,存储小文件所需要的磁盘容量和数据块的大小无关。例如,一个1MB的文件设置为128MB的块存储,实际使用的是1MB的磁盘空间,而不是128MB。2、解决存储小文件办法之一HDFS存档文件或HAR文件,是一个更高效的文件存档工具,它将文件存入HDFS块,在减少NameNode内存使用的同时,允许对文件进行透明的访问。具原创 2021-03-17 14:41:36 · 95 阅读 · 0 评论 -
集群间数据拷贝
1.scp 实现两个远程主机之间的文件复制scp -r hello.txt root@hadoop103:/user/atguigu/hello.txt // 推 pushscp -r root@hadoop103:/user/atguigu/hello.txt hello.txt // 拉 pullscp -r root@hadoop103:/user/atguigu/hello.txt root@hadoop104:/user/hadoop//是通过本地主机中转实现两个远程主机的文件复制;如果原创 2021-03-17 14:34:11 · 158 阅读 · 0 评论 -
退役旧数据节点-黑名单退役
在黑名单上面的主机都会被强制退出。1.在 NameNode 的 /opt/module/hadoop-2.7.2/etc/hadoop 目 录下创建dfs.hosts.exclude 文件[hadoop@hadoop102 hadoop]$ pwd/opt/module/hadoop-2.7.2/etc/hadoop[hadoop@hadoop102 hadoop]$ touch dfs.hosts.exclude[hadoop@hadoop102 hadoop]$ vi dfs.hosts.ex原创 2021-03-17 14:02:24 · 102 阅读 · 0 评论 -
退役旧数据节点-白名单退役
1.添加白名单添加到白名单的主机节点,都允许访问 NameNode,不在白名单的主机节点,都会被退出。配置白名单的具体步骤如下:(1)在 NameNode 的/opt/module/hadoop-2.7.2/etc/hadoop 目录下创建 dfs.hosts 文件[hadoop@hadoop102 hadoop]$ pwd/opt/module/hadoop-2.7.2/etc/hadoop[hadoop@hadoop102 hadoop]$ touch dfs.hosts[hadoop@h原创 2021-03-17 13:57:04 · 88 阅读 · 0 评论 -
服役新数据节点
0.需求随着公司业务的增长,数据量越来越大,原有的数据节点的容量已经不能满足存储数据的需求,需要在原有集群基础上动态添加新的数据节点。1.环境准备(1)在 hadoop104 主机上再克隆一台 hadoop105 主机(2)修改 IP 地址和主机名称(3)删除原来 HDFS 文件系统留存的文件(/opt/module/hadoop-2.7.2/data 和 log) (4)source 一下配置文件[hadoop@hadoop105 hadoop-2.7.2]$ source /etc/prof原创 2021-03-17 13:51:18 · 64 阅读 · 0 评论 -
掉线时限参数设置
DataNode掉线时限参数设置1、DataNode进程死亡或者网络故障造成DataNode无法与NameNode通信;2、NameNode不会立即把该节点判定为死亡,要经过一段时间,这段时间暂称作超时时长;3、HDFS默认的超时时长为10分钟+30秒;4、如果定义超时时间为TimeOut,则超时时长的计算公式为:TimeOut = 2 * dfs.namenode.heartbeat.recheck-interval + 10 * dfs.heartbeat.interval而默认的dfs.原创 2021-03-17 13:43:47 · 264 阅读 · 0 评论 -
NameNode 多目录配置
NameNode 的本地目录可以配置成多个,且每个目录存放内容相同,增加了可靠性。2.具体配置如下(1)在 hdfs-site.xml 文件中增加如下内容<property> <name>dfs.namenode.name.dir</name><value>file:///${hadoop.tmp.dir}/dfs/name1,file:///${hadoop.tmp.dir}/dfs/name2</value></prop.原创 2021-03-16 19:39:42 · 139 阅读 · 0 评论 -
集群安全模式
1、NameNode启动NameNode启动时,首先将镜像文件(Fsimage)载入内存,并执行编辑日志(Edits)中的各项操作。一旦在内存中成功建立文件系统元数据的映像,则创建一个新的Fsimage文件和一个空的编辑日志。此 时,NameNode开始监听DataNode请求。这个过程期间,NameNode一直运行在安全模式,即NameNode的文件系统对于客户端来说是只读的。2、DataNode启动系统中的数据块的位置并不是由NameNode维护的,而是以块列表的形式存储在DataNode中。在系原创 2021-03-16 19:34:31 · 157 阅读 · 0 评论 -
NameNode故障处理
NameNode 故障后,可以采用如下两种方法恢复数据。方法一:将 SecondaryNameNode 中数据拷贝到 NameNode 存储数据的目录;kill -9 NameNode 进程删除 NameNode 存储的数据(/opt/module/hadoop-2.7.2/data/tmp/dfs/name)[hadoop@hadoop102 hadoop-2.7.2]$ rm -rf /opt/module/hadoop-2.7.2/data/tmp/dfs/name/*拷贝 Sec原创 2021-03-16 17:03:26 · 120 阅读 · 0 评论 -
为什么块的大小不能设置太小,也不能设置太大?
(1)HDFS的块设置太小,会增加寻址时间,程序一直在找块的开始位置;(2)如果块设置的太大,从磁盘传输数据的时间会明显大于定位这个块开始位置所需的时间。导致程序在处理这块数据时,会非常慢。总结:HDFS块的大小设置主要取决于磁盘传输速率。...原创 2021-03-16 14:34:07 · 553 阅读 · 1 评论