![](https://img-blog.csdnimg.cn/20201014180756919.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
大数据
炸鸡叔老白
贵阳热爱编程的小菜鸟一枚。
展开
-
hive清洗nginx日志之根据IP获取对应城市
3,继承GenericUDTF重写initialize,process,close1,引入ip2region(一个IP查询库,准确率99.9%的离线IP地址定位库,0.0x毫秒级查询,ip2region.db数据库只有数MB,提供了java,php,c,python,nodejs,golang,c#等查询绑定和Binary,B树,内存三种查询算法,比以往我们自己调网上的接口方便多了)2,下载ip2region.db,需要的评论区告诉我放在resource目录下注意:URL url = new原创 2022-06-18 20:30:41 · 650 阅读 · 0 评论 -
Hadoop 动态添加一台节点
可能要多等一下,也可以自己重新配置,如果是scp过来的记得要将Hadoop目录下的hadoopDatas删除,然后在自己重新创建这个目录,最后在TX上hadoop目录下输入在master上刷新在web ui上查看成功原创 2022-06-16 22:40:18 · 230 阅读 · 0 评论 -
Flume 解决jar冲突
在使用Flume跨集群数据采集的过程中遇到一个错误java.lang.NoSuchMethodError: com.google.common.base.Preconditions.checkArgument(ZLjava/lang/String;Ljava/lang/Object;)V问题解决Flume与hadoop jar冲突cp guava-27.0-jre.jar ~/awz/soft/apache-flume-1.7.0-bin/lib/再将原来Flume的guava包删除ok.原创 2022-03-29 09:59:06 · 2825 阅读 · 0 评论 -
关于hive的那些事(下)
自定义函数和MySQL一样的hive也为我们内置啦很多函数,比如sum,max,min等。但是有些时候这些内置函数不足以满足我们的需求,需要我们自定义函数去满足实际的业务需求。直接来一个案例现在有一份学生表如下我们需要在每一个学生姓名前面加上字符串”小杨同学“,使用自定义函数1,导入依赖<dependency> <groupId>org.apache.hive</groupId> <artifactId>hive-exec<原创 2022-03-26 15:19:02 · 1200 阅读 · 0 评论 -
关于Hive的那些事(中下)
1,数据导入与导出数据导入对于hive而言,对数据更多是查询导入与导出,那么hive数据如何导入呢?两种方式导入数据首先创建一张学生表create table student(id INT,name STRING,age INT)row format delimited fields terminated by ','第一种导入数据方式,直接再hdfs上导入文本到hive相关表的默认目录下例如/user/hive/warehouse/test.db/studenthadoo原创 2022-03-24 23:28:51 · 1899 阅读 · 0 评论 -
hive 报错 return code 1 from org.apache.hadoop.hive.ql.exec.MoveTask.
报错场景是这样的我创建了一个学生表student1,和学生分区表studentpar2,那么现在我要根据student1中的学生性别动态向studentpar2中加载数据,sql语句insert into table studentpar2 partition(sex) select * from student1;报错字符问题,因为我在原始数据中,性别使用男女来区分,字符没有转码,所以报错,解决办法是要么,做字符解码,而我就偷懒 用1代表男生,0,代表女生。解决问题...原创 2022-03-24 23:23:19 · 2092 阅读 · 0 评论 -
Hive报错 return code 1 from org.apache.hadoop.hive.ql.exec.MoveTask
报错场景是这样的我创建了一个学生表student1,和学生分区表studentpar2,那么现在我要根据student1中的学生性别动态向studentpar2中加载数据sql语句为insert into table studentpar2 partition(sex) select * from student1;然后就报错查啦很多资料,内存问题在Hadoop的配置文件mapred-site.xml添加<property> <name>mapreduce.原创 2022-03-24 23:16:49 · 2028 阅读 · 0 评论 -
关于Hive的那些事(中上)
MySQL的DDL,DML,DTL与hive的DDL,DML,DTL的区别对于一般的DDL,DML,DTL的概念和基本语句这里不做概述,以后我会专门梳理一下一套关于MySQL的DDL,DML,DTL。我个人认为学习hive应该要具备一些基础的MySQL知识,比如简单的增删查改。当然也有人认为,直接从上手会更好一些。因为hive是类sql语句,所以从sql语句的表面上来看。hive的DDL,DML和MySQL的DDL,DML没什么差别。而且功能也基本一致。区别呢?1,执行引擎不同:MySQL原创 2022-03-23 16:09:07 · 882 阅读 · 0 评论 -
关于hive的那些事(上)
今天来缕一缕关于Hive的那些事,什么事呢?别急,且听我慢慢道来,如果有不当或错误的地方,欢迎指正,不胜感激。hive常用命令在hive安装目录下输入(配置环境变量的话可以在任意目录下)bin/hive -help可以查看hive相关命令和参数这里只举例我们常用的“ -e ” 在不进入hive客户端的情况下,输入hive命令。如bin/hive -e "select * from nginx_db.nginx"这里需要注意的是指定数据库,如上nginx_db下的nginx表原创 2022-03-22 14:56:10 · 1451 阅读 · 0 评论 -
Hadoop清洗Nginx日志数据
对于上一篇Flume跨服务器监控日志数据 获取的nginx日志数据进行数据清洗原始数据是这样的对这些数据进行切分 ,获取//ip地址//日期//请求方式//状态码代理访问网址http协议请求页面地址操作系统名称//浏览器名称创建Maven项目导入依赖<?xml version="1.0" encoding="UTF-8"?><project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:x原创 2022-03-18 18:05:42 · 2832 阅读 · 0 评论 -
Hadoop如何加载第三方包
报错背景:本地idea编写Hadoop程序,对nginx日志进行分析,引入nl.bitwalker.useragentutils.UserAgent包解析nginx的浏览器信息获取浏览器系统名称和浏览器名称,本地测试可以完全ok,然后打包到Hadoop集群运行,报错找不到nl.bitwalker.useragentutils.UserAgent包原因Hadoop默认不支持第三方包,查了好多文档和博客依然没解决,无意间看见一篇博客(后来找不到啦)叫我在环境变量里面配置HADOOP_CLASSPATH原创 2022-03-18 17:28:27 · 1876 阅读 · 0 评论 -
java.io.IOException: Got error, status=ERROR, status message , ack with firstBadLink as
今天在向hadoop上传文件时报这样一个错误2022-03-17 17:17:11,994 INFO hdfs.DataStreamer: Exception in createBlockOutputStream blk_1073741946_1137java.io.IOException: Got error, status=ERROR, status message , ack with firstBadLink as 120.78.239.136:9866 at org.apache.hadoo原创 2022-03-17 17:24:09 · 2275 阅读 · 0 评论 -
Flume跨服务器监控日志数据
需求:对于web项目单独所部署的服务器,每天都会产生大量的nginx日志文件,我们需要定时对这些日志文件进行采集并上传到Hadoop集群进行离线分析,最后做出可视化。架构分析:第一步:数据采集从图中可以看出,我们分别再web服务器和slave1上部署Flume,再web服务器上agent的Source来源于nginx日志,经过channel传输到Sink,Sink将数据输出到slave1,Agent的Source,最终将数据上传到hdfs上。第二步:部署Flume之前写过Flume入原创 2022-03-17 16:46:42 · 4846 阅读 · 0 评论 -
一文带你入门Flume
1,Flume概述Flume是Cloudera提供的一款高可用,高可靠的,分布式海量日志采集软件。Flume的核心是把数据从数据源(source)收集过来,再将收集到的数据送到指定的目的地(sink)。为了保证数据的成功传输,在数据传送到目的地(sink)之前会先将数据缓存下来(channel),在数据真正到达目的地后,再将缓存的数据删除。2,架构图Agent:Flume的核心角色是Agent,Agent本身是一个JAVA进程他运行在Flume所在的节点。Source:采集源,数据源负责采集数据原创 2022-03-10 19:01:34 · 415 阅读 · 0 评论 -
hive读写文件机制
hive 读写文件机制hive读取文件机制:首先调用InputFormat(默认为TextInputFormat),返回一条条kv键值对记录(默认是一行对应一条键值对),然后调用SerDe(默认LazySimpleSerde)的Deserializer,将一行记录中的value根据分隔符切分成各个字段。hive写文件机制:将Row写入文件时,首先调用SerDe(默认LazySimpleSerde)的Serializer将对象转化为字节序列,然后调用OutputFormat将数据写HDFS文件系统中。原创 2022-03-02 21:47:33 · 1730 阅读 · 0 评论 -
hive分层结构
hive分层结构hive分层结构是根据不同的业务需求而设计的。目前主流的就两种设计三层结构ODS层:临时存储层,一般来说是对企业中所产生的数据采集过来做临时存储,对数据源系统做解耦合,为下一步分析做准备DW层:数据仓库层,数据加工与整合DA层:数据应用层,提供产品和数据分析所使用的数据四层结构ODS层:临时存储层,一般来说是对企业中所产生的数据采集过来做临时存储,对数据源系统做解耦合,为下一步分析做准备PWD层:数据仓库层,数据仓库层,数据加工与整合DM层:为数据集市层,这层数据是面向主题原创 2022-03-01 20:26:29 · 1775 阅读 · 0 评论 -
MySQL数据库与数据仓库有什么区别
之前一直有这样的疑问,既然MySQL也可以做分析为什么还要数据仓(如Hive,Hbase等)?而且数据仓库的搭建如此麻烦,维护也不方便,还不如直接用MySQL。 存在即合理,我带着这些疑惑重新看了一些资料,终于理清楚他们的区别啦。 想要理解他们的区别首先要理解什么是OLTP和OLAP系统。 OLTP即联机事务处理(on-line transaction processing) OLAP即逻辑分析处理(On-Line Analytical Processing)从字面原创 2022-02-28 21:45:17 · 2176 阅读 · 0 评论 -
The current failed datanode replacement policy is DEFAULT
The current failed datanode replacement policy is DEFAULT, and a client may configure this via ‘dfs.client.block.write.replace-datanode-on-failure.policy’ in its configuration.在向hive动态分区表中加载数据时报错解决方法 <property> <name>dfs.client.block.write.原创 2021-12-08 19:20:48 · 617 阅读 · 0 评论 -
hive Java heap space
java.lang.Exception: java.lang.OutOfMemoryError: Java heap space at org.apache.hadoop.mapred.LocalJobRunner$Job.runTasks(LocalJobRunner.java:492) ~[hadoop-mapreduce-client-common-3.1.4.jar:?] at org.apache.hadoop.mapred.LocalJobRunner$Job.run(LocalJobRun原创 2021-11-27 14:24:26 · 251 阅读 · 0 评论 -
ERROR tool.ImportTool: Error during import: No primary key could be found for table fullgrouped. Pl
记录一下sqoop报错ERROR tool.ImportTool: Error during import: No primary key could be found for table fullgrouped. Please specify one with --split-by or perform a sequential import with ‘-m 1’.修改sqoop并行度为1即–m 1原创 2021-11-26 00:01:25 · 484 阅读 · 0 评论 -
sqoop报错 java.lang.Exception: java.io.IOException: java.lang.ClassNotFoundException: covidchina
项目场景:从hdfs导入数据到mysql问题描述:java.lang.Exception: java.io.IOException: java.lang.ClassNotFoundException: covidchina at org.apache.hadoop.mapred.LocalJobRunner$Job.runTasks(LocalJobRunner.java:492) at org.apache.hadoop.mapred.LocalJobRunner$Job.run(Loc原创 2021-11-24 15:49:33 · 1569 阅读 · 1 评论 -
Caused by: java.io.IOException: com.mysql.jdbc.Driver
项目场景:hadoop直接输出mapper阶段到mysql,本地测试没问题问题描述:在集群上运行jar架包,报错java.lang.Exception: java.io.IOException: com.mysql.jdbc.Driver at org.apache.hadoop.mapred.LocalJobRunner$Job.runTasks(LocalJobRunner.java:492) at org.apache.hadoop.mapred.LocalJobRunner$Jo原创 2021-11-23 15:59:56 · 1608 阅读 · 1 评论 -
hadoop jar卡死问题
项目场景:用Hadoop编写map阶段,并将结果输出到mysql,本地测试通过,没问题问题描述:将项目打包到集群上就会出现卡死 原因分析:查看日志可能是内存和CPU资源太少,不能满足Hadoop和Hive运行所需的默认资源需求解决方案:在yarn-site.xml添加如下配置<property> <name>yarn.nodemanager.resource.memory-mb</name> <value&g原创 2021-11-23 15:53:43 · 2509 阅读 · 2 评论 -
/usr/bin/ssh-copy-id: ERROR
搭建hadoop的时候不小心配错域名导致配置免密码登陆的时候密码一直输入错误重新修改域名后在配置就一直报错解决办法在 ~/.ssh目录下修改known_hosts文件中配置错的域名 直接删除重新执行命令 ssh-copy-id slave2输入密码就可以啦...原创 2021-10-29 11:07:04 · 2807 阅读 · 0 评论 -
Call exception, tries=10, retries=35, started=47376 ms ago, cancelled=false
呵呵哒这个问题搞啦两天终于在我海量的问题搜索筛选中搞定啦使用Java对hbase进行api开发时遇到的问题报错信息如下Exception in thread "main" org.apache.hadoop.hbase.client.RetriesExhaustedException: Failed after attempts=36, exceptions:Thu Oct 14 10:20:58 CST 2021, null, java.net.SocketTimeoutException: c原创 2021-10-14 10:35:04 · 1052 阅读 · 1 评论 -
FileInputFormat 实现类(切片机制)
FileInputFormat 有两个主要实现类 TextInputFormat,CombineTextInputFormat1,TextInputFormat是FileInputFormat 默认实现类,在本地默认切片大小为64M 集群上为128M Hadoop1.x 是64M2,CombineTextInputFormat 主要处理小文件的FileInputFormat 实现类,默认大小为4M(可以自定义)虚拟存贮过程,小于4M的,大于4M且小于8M(2倍默认最大存储大小),则取平均值例如,3M原创 2021-09-05 10:45:28 · 369 阅读 · 0 评论 -
HDFS客户端代码实操
package cn.Awz.HadoopClientTest;import org.apache.hadoop.conf.Configuration;import org.apache.hadoop.fs.FileSystem;import org.apache.hadoop.fs.Path;import java.io.IOException;import java.net.MalformedURLException;import java.net.URI;import java.n原创 2021-08-28 11:14:00 · 82 阅读 · 0 评论 -
Namenode和SecondaryNamenode工作机制
1,首先Namenode需要和客户端进行交互 为了提高交互效率,Namenode需要把元数据放在内存中,但是为了防止断电数据丢失,元数据需要备份到磁盘(FsImage)2,在Namenode与客户端交互的过程中需要对元数据进行操作,在交互的过程中,如果同步更新FsImage,那么效率就会非常低,3,为了解决上述问题,因此引入Edits文件(此文件只进行追加操作)每当由元数据需要操作时,操作后的元数据追加到Edits中,这样即使断电,通过合并Edits和FsImage也可以进行数据保存。4,那么如果一直原创 2021-08-27 17:53:40 · 362 阅读 · 0 评论 -
Dependency ‘jdk.tools:jdk.tools:1.8‘ not found
hadoop学习遇到一些问题<dependency> <groupId>jdk.tools</groupId> <artifactId>jdk.tools</artifactId> <version>1.8</version> <scope>system</scope> <systemPath>{JAVA_H原创 2021-08-25 19:53:55 · 1897 阅读 · 0 评论 -
hdfs写入数据流流程
1,启动集群(一般三个节点(一个NameNode,两个datanode))2,客户端向nameNode发送传输数据流请求3,nameNode检查路径(已存在则返回路径已存在),路径不存在则返回可以传输数据流4,客户端请求参数节点(两个dataNode中的哪一个)5,nameNode返回两个dataNode可以传输6,两个dataNode节点向客户端应答成功(表示可以传输数据流)7,客户端向两个节点建立传输block通道8,开始传输数据流9,客户端向nameNode发送数据流传输完成至此数据原创 2021-08-25 19:42:26 · 134 阅读 · 0 评论 -
hdfs块大小(block)
1,hdfs中文件在物理上的分块存储(block)默认大小位128M(2.x),(1.x版本的是64M)2,集群中的block寻址时间位10ms,一般认为寻址时间为传输时间的1%位最佳状态,则传输时间为10ms/0.01=1s,目前磁盘传输速率为100M/s,所以在集群中的block大小为100M...原创 2021-08-23 14:31:25 · 1923 阅读 · 0 评论