
大数据生态圈从入门到精通
主要涉及大数据从入门思想的引领到后期提升相关知识,有hadoop,hive,zookeeper,hbase,flume,sqoop,scala,spark,kafka,redis等大数据生态圈内容及简单的linux相关知识,欢迎订阅哦!
未来@音律
爱睡觉,爱美食,喜欢奇思妙想;
展开
-
hive通过元数据库查询分区和非分区的数据量及存储占用
【代码】hive通过元数据库查询分区和非分区的数据量及存储占用。原创 2025-03-17 11:20:11 · 125 阅读 · 0 评论 -
访问Hdfs文件,文件明明存在却报错说文件不存在的问题解决
今天在访问hdfs文件的时候出现了一个奇怪的问题,我去访问 /user/hive/warehouse/ 下的一个表文件的时候,明明这个文件存在,可是在访问的时候后台就是报错这个文件不存在。这是因为需要显式指定 Hadoop 配置项 “fs.defaultFS”;conf.set("fs.defaultFS", "hdfs://localhost:9000"); //没有这一项会报错FileSystem fs = FileSystem.get(conf);...原创 2021-09-27 09:53:36 · 5583 阅读 · 0 评论 -
CentOS7为不同的用户设置不同的jdk环境变量
在设置之前我们首先需要了解几个概念:1. /etc/profile 这个文件中的环境变量是针对所有用户起作用的。2. /home目录下可以查看所有的用户3. 每个用户自己的目录下 都会有 .bash_profile 和 .bashrc,设置在.bash_profile中的环境变量虽然source之后会在当时起作用,但是只要重新开启一个终端,就又会失效,还需要重新source。所以为了避免每次都要重新source,我们需要把环境变量设置在.bashrc中,因为每个用户登录的时候它对应的.bashr原创 2020-05-09 15:35:48 · 1248 阅读 · 0 评论 -
java实现结合mysql管理kafka的偏移量避免重复消费,并按日期存成文件
1.偏移量类,方便入库@Entity@Table(name = "table")public class PartitionAndOffset { @Id @GeneratedValue(generator = "Generator") @GenericGenerator(name = "Generator", strategy = "uuid") public Stri...原创 2020-04-10 14:12:33 · 456 阅读 · 0 评论 -
无法找到目标主机的错误
今天我遇到一个很奇怪的错误,我在windows中的hosts文件中已经配置好了ip与域名的映射,可是当我ping我的虚拟主机的时候,出现了无法找到目标主机的错误。于是我尝试直接ping ip地址,这样就可以ping通了,然后我尝试修改hosts中的域名,当我把域名修改了之后,也可以ping通。只要我一用marshal这个域名,就ping不通。这个问题特别奇怪。 不过最后...原创 2018-07-31 23:37:01 · 1714 阅读 · 0 评论 -
CentOS7安装mysql5.7
1.在官网上下载mysql对应的CentOS7的rpm包2.3.4. cd /etc/yum.repos.d5. vi mysql-community.repo6.7.8.启动mysql9.第一次登录要先去找初始密码(可能会报错):10.重启mysql并登录修改密码:将之前对/etc/my.cnf的修改改回来。...原创 2018-08-15 15:23:31 · 353 阅读 · 0 评论 -
ntpdate实现集群的时间同步
1.如果是最小化安装则首先要安装ntp(桌面版的不用):yum install -y ntp2.首先选择一台主机作为ntp服务器并操作命令(我使用的是centos7):systemctl start ntpd.service3.在集群中的其他机器中操作命令同步时间(这里我的服务器主机名为marshal):ntpdate marshal4.这里如果出现失败的情况首先检查一下网络是否联通...原创 2018-08-15 16:36:19 · 536 阅读 · 0 评论 -
大数据学习之路1-hdfs集群安装-参数配置-namenode格式化--手动启动
1.将hadoop解压2.修改配置文件 首先了解一下hadoop包中的目录文件都是干嘛的: hadoop-env.sh: 再配置下一个文件之前,先想清楚逻辑: namenode需要存储元数据的目录,这样namenode就可以知道文件存储到哪了。 datanode需要存储从元数据中拆分出来的文件块的目录,可是datanode怎么才...原创 2018-07-25 10:37:11 · 653 阅读 · 0 评论 -
大数据学习之路2-脚本批量启动原理和使用
1.首先我们可以先了解一下原理 我们尝试着通过ssh在一台主机上发送命令对另一台主机进行操作: 操作结果: 但是这里的ssh不是真正的登录,所以不会source /etc/profile,所以配置文件中的path不会生效,使用这种方式,我们如果希望写一 个脚本来对datanode进行操作如:sh hadoop-daemon.sh stop datanod...原创 2018-07-25 19:55:59 · 282 阅读 · 0 评论 -
大数据学习之路3-集群常见错误
1.不恰当的format:导致namenode上生成了clusterid.跟datanode上记录的clusterid不一致,导致datanode无法向namenode注册。 解决办法:将datanode所在机器的数据目录删除,重启datanode的时候会自动创建。2.不恰当的复制(把datanode的数据目录复制给了另一台,导致两台datanode的datanodeUUID重复冲突,两...原创 2018-07-25 21:19:24 · 368 阅读 · 0 评论 -
高可用hadoop集群start-yarn.sh之后一个namenode消失问题解决
今天在启动高可用hadoop集群的时候,start-dfs.sh之后namenode还都在,但是start-yarn.sh之后,就发现其中一台namenode消失了,查找日志发现以下报错192.168.175.113:8485: Call From marshal/192.168.175.110 to marshal03:8485 failed on connection exception: java.net.ConnectException: 拒绝连接; For more details s.原创 2021-07-27 10:51:42 · 1051 阅读 · 0 评论 -
namenode启动报错,There appears to be a gap in the edit log. We expected txid 54314, but got txid 54452.
今天在启动hadoop集群的时候发现两个namenode节点都没启动,然后去查启动日志的时候发现报错如下:There appears to be a gap in the edit log. We expected txid 54314, but got txid 54452.这种错误表示:该节点namenode元数据发生了损坏。需要恢复元数据以后,才能启动namenode恢复方法如下:1.进入hadoop目录下的bin目录2.执行命令:hadoop namenode -recover.原创 2021-07-21 18:06:21 · 1391 阅读 · 2 评论 -
大数据学习之路4-hdfs客户端的理解
通过前面的操作,我们已经搭建好了hdfs集群,现在的hdfs集群就相当于一个整体,如果我们想要用这个集群的话,就需要使用一个客户端来对文件进行操作。hdfs中的文件 不是指本机的文件,而是指,交由namenode和datanode管理的文件。那么这个客户端在哪里呢?我们的hadoop安装包中已经自带了客户端。那么我们如何使用这个客户端呢?我们只需要通过hadoop中自带的脚本,就可以操作...原创 2018-07-30 17:26:28 · 829 阅读 · 0 评论 -
大数据学习之路5-hdfs复习和javaee思想引领
1.hdfs工作原理: 1)hdfs是分布式文件系统,它由很多程序运行实例组成,包括namenode,datanode,secondarynamenode以及客户端,这些都是管理文件 2)文件在hdfs中是分块存储的 3)文件块在hdfs中可以存储多个副本 4)文件块由datanode存储在自己的机器的磁盘目录中 5)文件的路径和...原创 2018-07-31 00:18:54 · 226 阅读 · 0 评论 -
大数据学习之路6-hdfs的命令行客户端常用操作
1.hdfs集群状态查看hdfs dfsadmin -report2.目录信息查看hdfs dfs -ls / (这是新的写法)hadoop fs -ls / (这是旧的写法)3.上传文件hdfs dfs -put /root/a.txt /aaa/或 hdfs dfs -copyFromLocal /root/a.txt /aaa/a.txt.2 ...原创 2018-07-31 17:03:08 · 342 阅读 · 0 评论 -
hadoop页面删除目录报错Permission denied: user=dr.who, access=WRITE, inode=“/user/hive/warehouse“
今天在hadoop的web页面删除目录时报错解决方案如下:直接修改/user目录的权限设置hdfs dfs -chmod -R 777 /user之后就可以删除了原创 2021-07-21 19:29:25 · 2317 阅读 · 8 评论 -
大数据学习之路7-hdfs的客户端api基本使用入门
我们要写程序去访问hdfs的话,我们可以使用hdfs提供的工具jar包。我们不知道具体需要哪些jar包的话,我们可以将有关的jar包一股脑全部导入。这些jar包全部都在hadoop的安装包下。我们可以这样导入:接下来就是在myeclipse中,通过java代码来操作hdfs文件啦:package com.test.hdfs;import java.io.IOExcep...原创 2018-08-03 13:47:03 · 299 阅读 · 0 评论 -
大数据学习之路8-NAMENODE元数据管理机制
1.namenode的元数据放在内存加磁盘中。为什么要放在内存中? 因为客户端经常要做一些操作。那么namenode放在内存中是什么东西? 是一颗树,这个树其实就是一个对象。我们可以估计一下这个对象的大小。每记录一个块,就要耗费大概150Byte。假如我们存10个块,就是1.5k,存10000个块就是1.5M,再扩大1000倍就是1.5G。这里只是namenode的大小,如果一个块...原创 2018-08-08 16:39:30 · 1630 阅读 · 0 评论 -
大数据学习之路9-yarn集群基本概念解释,安装启动
YARN:接收客户端提交过来的程序jar包,并帮助客户端,在服务端上分配内存+cpu资源,并帮用户启动jar中的程序。在yarn中的老大是Resource Manager,小弟是Node Manager在使用yarn的时候我们需要配好机器上可用的总内存,可用的总cpu。Resource Manager在哪里无所谓,但是Node Manager最好和datanode在同一台机器上。假如m...原创 2018-08-13 10:09:58 · 667 阅读 · 0 评论 -
大数据学习之路10-mapreduce思想引入
单机mapreduce:package com.test.mryinru;import java.io.BufferedReader;import java.io.InputStreamReader;import java.net.URI;import java.util.HashMap;import java.util.Map.Entry;import java.util.S...原创 2018-08-13 17:32:38 · 233 阅读 · 0 评论 -
大数据学习之路12-求网站topN页面,本地模拟方式运行mr程序
分析内容:2017/07/28 qq.com/a2017/07/28 qq.com/bx2017/07/28 qq.com/by2017/07/28 qq.com/by32017/07/28 qq.com/news2017/07/28 sina.com/news/socail2017/07/28 163.com/ac2017/07/28 sina.com/news/socail...原创 2018-08-14 17:07:52 · 1285 阅读 · 0 评论 -
大数据学习之路13-求网站topN页面改进,如何如何向map和reduce传参数
在之前的例子中我们可以求出每个域名访问前三的页面那么如果我们想要访问前五的话怎么办?我们能不能像传递文件输入路径那样将参数传递给map或者reduce程序?我们也有办法,我们可以通过Configuration,Configuration中封装了很多参数,所有的worker都可以拿到,所以调用map和reduce的worker也可以拿到。那map和reduce又如何从worker中拿到conf中的参...原创 2018-08-14 22:54:19 · 238 阅读 · 0 评论 -
大数据学习之路14-求访问次数topN,cleanup方法的工作机制,treemap的用法
如果还是原来的文件,如果我们想求被访问次数最多的三个网站,这里和之前不一样。之前我们求的是每个网站访问前三的页面。这里我们如果还是和之前一样调用reduce方法我们只能知道一组数据的总次数,我们根本不知道其他组的总次数,所以不能进行比较。所以我们就需要将每一次的结果使用hashmap记录下来。那么什么时候才能使用比较方法呢?我们希望能在所有reduce方法执行完之后能够再次执行比较方法。这个时候就...原创 2018-08-15 17:43:00 · 489 阅读 · 0 评论 -
大数据学习之路15-mr运行机制中的排序机制解释--map和reduce两个worker都会对数据按key排序
在上一个例子中我们希望能对数据进行排序,于是我们将map的数据先寄放在内存中,但是这样会很耗费内存,如果数据量很大,内存很容易爆掉。那么我们能不能不要每次都是先在内存中攒着然后再去排序?答案是可以的。因为mapreduce框架中本身就带着排序机制。map和reduce两个worker都会对数据按key排序.现在我们要做的是:统计之前的文件每个页面的总次数,同时要求输出结果文件中的数据按照次数大...原创 2018-08-16 10:12:44 · 515 阅读 · 0 评论 -
大数据学习之路16-倒排索引创建,输入切片FileSplit应用
我们需要将文本使用mapreduce整理成需求的样子。也就是单词加文件名的样子,那我们又怎么能知道map方法现在调用的这行数据属于哪个文件呢?调用这个方法的是mapworker,而且调用这个map方法的还不止一个worker。虽然调用map方法的有很多worker但是,每个worker再调用方法的时候都会传一个context而这个context就包含了这个worker正在读的数据属于哪个文件。...原创 2018-08-16 17:16:40 · 386 阅读 · 0 评论 -
大数据学习之路17-MR编程案例,线段重叠次数计算
首先看看需求:其实这个也是一个WordCount的问题我们应该这么看问题。比如2,5这条线段就包含(2,1),(3,1),(4,1),(5,1)这几个点。这样就可以按照WordCount的方式去处理问题了。按照这种方式处理完问题之后,我们可以得到重叠的点和次数。接下来我们需要取出重叠次数最多的前三个点。我们可以将这两个属性封装成一个实体,然后实现WritableComparable接口...原创 2018-08-17 10:18:22 · 597 阅读 · 0 评论 -
大数据学习之路18-线段重叠次数topN计算,自定义GroupingComparator
在上一节中我们求重叠次数最多的前三个的时候我们使用的是变量,当等于三的时候就return,其实这样做有缺点,虽然return了可是后面的reduce还是会照样执行。这样会影响执行效率。接下来我们优化一下。优化思路:想办法让worker将那一堆数据看成一组,这样的话worker就会将那一堆数据只调用一次reduce这样就涉及到一个知识点,worker是如何让key相同的为一组的?我们要知道我...原创 2018-08-17 14:58:43 · 466 阅读 · 0 评论 -
大数据学习之路19-让map按照域名分区,自定义partitioner的使用
今天我们想要做的就是把域名相同的分在同一个区。可是如果按照我们以前默认的分区规则是达不到我们的要求的。默认的分区规则是:key.hashcode()%reduceworker数,这个默认的分区规则的所属类为HashPartitioner以下为HashPartitioner的源码:package org.apache.hadoop.mapreduce.lib.partition;i...原创 2018-08-17 17:58:00 · 267 阅读 · 0 评论 -
大数据学习之路20-mr控制输出格式
我们之前写入数据的时候没有指定过格式,如果不指定mr默认使用的输出数据组件是TextOutputFormat,如果我们想直接往文件中写入对象,就可以指定输出结果为SequenceFileOutputFormat,产生的文件格式为SequenceFile。job.setOutputFormatClass(SequenceFileOutputFormat.class);输入组件也可以指定...原创 2018-08-17 20:01:52 · 347 阅读 · 0 评论 -
大数据学习之路21-MR编程,join算法
数据集如下:任务为:将两个文档通过用户id相同的进行合并思路:将两个文档的内容合并为一个实体,实体中再加一个用户与订单区分的字段,在map阶段使用uid做为key,我们可以通过context拿到FileSplit,再通过FileSplit得到文件名,通过文件名区分用户数据与订单数据。经过map阶段uid相同的肯定会被分配到同一个区。到了reduce阶段,这里的数据都是用户id相同的用户...原创 2018-08-18 13:19:46 · 340 阅读 · 0 评论 -
大数据学习之路22-数据倾斜场景
比如说又以下数据:a a a a a a a a a a a a a a a a a a a a ba a a a a a a c c b b c h h f d s h j需要做wordcount,但是会有一个问题存在:a特别多,负责处理a这个单词数据的reduce worker就会很累(负载不均衡,过大)这时有一种解决办法就是使用Combiner,其实Combiner和Redu...原创 2018-08-18 15:19:57 · 542 阅读 · 0 评论 -
大数据学习之路23-MR编程,json数据解析案例
还是原来的mr编程模型,这次主要学习的是如何使用json解析,数据如下:我们用的json解析工具是jackson,因为这个json解析工具是hadoop自带的第三方工具。以下贴出代码:package com.test.json;import java.io.IOException;import org.apache.hadoop.conf.Configuration;i...原创 2018-08-18 16:37:53 · 747 阅读 · 0 评论 -
大数据学习之路24-从windows平台提交job到yarn上运行
借用上一篇json解析的案例,我们来实现从windows平台提交job到yarn上运行。1.在与yarn交互的代码中我们首先要添加下面的代码://不设置这个默认在本地运行conf.set("fs.defaultFS","hdfs://marshal:9000");conf.set("mapreduce.framework.name","yarn");conf.set("yarn.r...原创 2018-08-18 19:52:21 · 620 阅读 · 0 评论 -
大数据学习之路25-Hive的概念介绍及安装,初体验
Hive就是一种方便的工具,有了它我们不需要亲自去写mapreduce,mapreduce就变成了hive的底层支撑平台,在hive的底层有许多基本sql逻辑单元事先写成了mr模板程序,我们写的sql语句可以通过sql语法解析引擎进行解析。存数据使用HDFS,运行逻辑使用mapreduce,而mapreduce又跑在yarn上。这样hive就可以直接面向使用者。而我们的建表语句就相当于告诉程序我们...原创 2018-08-19 00:32:56 · 600 阅读 · 0 评论 -
大数据学习之路26-hive的基本建表语句,内外部表的区别,删除表导入数据
1.建库hive中有一个默认的库:库名:default库目录:hdfs://marshal:9000/user/hive/warehouse新建库:create database db_order;我们的数据库在DBS中可以看到:库建好后,在hdfs中会生成一个库目录,目录名为库名.db2.基本建表语句use db_order;create tab...原创 2018-08-19 17:43:01 · 561 阅读 · 0 评论 -
hive修改表备注,字段备注
修改表备注:ALTER TABLE 数据库名.表名 SET TBLPROPERTIES('comment' = '新的表备注');修改字段备注:ALTER TABLE 数据库名.表名 CHANGE COLUMN 字段名 新的字段名(如果不变就保持原字段) 字段类型(若不变就采用原来的字段) COMMENT '新的字段备注'; ...原创 2021-09-07 14:55:16 · 5073 阅读 · 0 评论 -
大数据学习之路27-hive的jdbc服务端的搭建和使用,hive客户端概念的讲解,shell脚本的编写
在我们的集群中,如果我们哪台机器想使用hive的话,可以自己启动建立一个,但是其实我们还有另外一种方式,就是将hive作为一种服务使用,哪台机器需要使用hive只要调用这个服务即可。 首先我们启动hive服务端:hiveserver2然后我们在另外一台机器去连接客户端:前面启动hive服务端的方式是启动为前台,还有一种启动为后台的方式:nohup b...原创 2018-08-20 09:32:22 · 387 阅读 · 0 评论 -
使用Zookeeper实现HiveServer2的HA
我使用的版本是hive-1.2.1要使hive实现HA则首先需要需要将这些hive的配置指向同一个元数据库即配置如下:在hive-site.xml中然后在hive-site.xml中配置需要利用zk做HA的hive服务配置,我这里需要在marshal及marshal01机器上启动hive服务,且在这两台机器上做HA,所以zk信息写了2个:marshal:2181,marshal01:2181 <property> <name>hive.ser原创 2021-09-13 14:25:59 · 485 阅读 · 0 评论 -
java连接zookeeper高可用Hive报错
今天在使用Java连接zookeeper高可用Hive时报错:java.lang.NullPointerExceptionat org.apache.thrift.transport.TSocket.open(TSocket.java:209)当前我的hadoop版本及hive版本如下:<hadoop.version>2.6.0-cdh5.5.2</hadoop.version><hive.version>1.1.0-cdh5.16.2<..原创 2021-09-13 17:42:42 · 1341 阅读 · 1 评论 -
hive删除不为空的数据库
如果数据库不为空,可以采用cascade命令,强制删除drop database db_hive cascade;原创 2021-07-23 21:15:01 · 1161 阅读 · 0 评论