每天一点小芝士(自我总结&错误梳理)

2021:

2021/01/09 总结记录:

如果namenode进程被杀死如何重启:hadoop-daemon.sh start namenode,该脚本路径为/usr/local/soft/hadoop-2.7.6/sbin

2021/01/10 总结记录:

元数据和数据的区别,元数据相当于某个索引,数据才是实实在在存在的数据文件,例如今天学的分区的修复方式里面,是有数据的但是没有元数据。

在/usr/local/soft/hive-1.2.1/bin下执行
先启动Hive后台服务nohup hiveserver2 &
beeline -u jdbc:hive2://test:10000 -n root

2021/01/13 总结记录:

hive中设置自动分桶开关
set hive.enforce.bucketing=true;

2021/01/22 总结记录:

连接phoenix
sqlline.py master,node1,node2

phoenix创建索引:CREATE INDEX DIANXIN_INDEX ON DIANXIN ( end_date );
phoenix删除索引:DROP INDEX DIANXIN_INDEX ON DIANXIN;

2021/01/24 总结记录:

判断端口是否被占用
netstat -tunlp | grep 44444

向文件里追加输入:echo 要加入的数据 >> 文件

2021/01/28 总结记录:

flume:对于HBasesink
(1) 对于Flume-1.6.0 及以下版本:HBasesink目前只支持往 HBase-0.98 版本及以下版本写入数据,当HBase超过0.98版本,1.6.0 及以下版本的Flume则不支持往HBase写入数据;
(2) 对于Flume-1.7.0 及以上版本:HBasesink目前支持往0.98及以上版本的HBase写入数据(当然也支持往0.98及以下版本的HBase写入数据);

2021/02/01 总结记录:

查看所有端口信息
netstat -nltp

2021/03/10 总结记录:

spark:task提交过程中算子之外的代码就是在driver端执行,算子内的代码是在executor内执行

2021/03/12 总结记录:

启动hive元数据服务
nohup hive --service metastore >> metastore.log 2>&1 &

2021/03/14 总结记录:

linux上安装netcat
yum install -y nc
nc -lt 8888

2021/03/18 总结记录:

cat文件查找所属字段的内容
cat xxx(文件) | grep -i xxx(查找的单词)

2021/03/19 总结记录:

hdfs退出安全模式
hadoop dfsadmin -safemode leave

2021/03/26 总结记录:

initialize 初始化
ps -ef 查看进程

2021/04/15 总结记录:

1、spark提交流程(命令行)
spark的提交作业参数
spark-submit
–class xxx xxx.jar
–master yarn-cluster
–name “xxx”
–num-executor 10
–executor-cores 4
–executor-memory 8g
–driver-cores 2
–driver-memory 8g
InputPath
OutputPath

2、hive里面去重的方式
distinct去重
group by去重
row_number() over()选取第一条数据

2021/04/27 错误记录:

https://blog.csdn.net/qq_24452475/article/details/79874630 终于将Hadoop2.6.0搭建在windows任务完成,错误居然是hadoop.dll 版本问题, 个人可能下载的是 32位或者不是hadoop2.6版本

2021/04/29 总结记录:

主键冲突的处理:
1、replace into模式:目前只有MySQL数据库支持replace into模式 没有遇到主键/唯一性索引冲突时,与insert into行为一致,冲突时会用新行替换原有行所有字段;
2、insert into模式:当主键/唯一性索引冲突时会写不进去冲突的行,以脏数据的形式体现,脏数据的配置与管理请参考脏数据管理

PV(访问量):即Page View, 具体是指网站的是页面浏览量或者点击量,页面被刷新一次就计算一次。如果网站被刷新了1000次,那么流量统计工具显示的PV就是1000 。

UV(独立访客):即Unique Visitor,访问您网站的一台电脑客户端为一个访客。00:00-24:00内相同的客户端只被计算一次。

2021/04/30 错误记录:

1、数栈test有关shell脚本编写,如果要写hivesql,格式为hive -e “具体sql语句”,当然每个表记得加库,否则是访问不到的
2、安装hive:
不仅要写hive-site.xml、hive-env.sh,还要添加mysql的一个依赖包;
启动hive的时候需要先启动元数据服务hive --service metastore,再启动hive之前要确保Hadoop目录下的\share\hadoop\yarn\lib下的jline-0.9.94.jar要改成jline-0.9.94.jar.bak

2021/05/06 错误记录:

1、使用spoon工具操作mysql数据库进行简单双表join,要join先排序;出现了中文乱码的问题,在表输入需要数据库连接的时候Advanced里面加上set names utf8;

2021/05/08 错误记录:

数栈shell中MR使用方法
hdfs dfs -get (jar包的hdfs路径) /opt/probelib/
hadoop jar /opt/probelib/(jar包名称) (参数)

1、首先是关于数栈平台的MR任务,因为发现shell脚本有所问题就直接拿出里面的hadoop jar进行独立的MR运行,却发现MR一直运行都有报Main函数的错误,仔细检查jar包发现并无问题,最终的排查原来是数栈底层的改动导致MR需要某些配置才可以运行,所以转为Shell执行

2、利用hadoop WordCount测试脚本,发现没有问题,于是开始运行项目的ods_probedata脚本,发现一直报错,一个是 no manifiest section for signature file entry com/sun/mail/iap/Atom.class错误,这个只需要删除jar包下META-INF下的sun文件得到解决
还有一个是Filesystem closed错误,这个在driver代码内添加conf.setBoolean (“fs.hdfs.impl.disable.cache”, true);得到解决

3、jar跑完,发现load hive的表数据进不去,desc formatted 发现表的格式居然是orc,于是转为textfile,成功导入分区内数据

2021/05/10 错误记录:

hive里面不可以随意的update数据,要进行此操作建表必须添加以下配置:
CLUSTERED BY (SERIALNO) --根据某个字段分桶
INTO 7 BUCKETS --分为多少个桶
STORED AS ORC --存储格式为orc
TBLPROPERTIES(‘transactional’=‘true’);–增加额描述信息,比如最后一次修改信息,最后一个修改人。

2021/05/11 错误记录:

用IDEA打包jar的时候,如果发现缺少依赖的jar包可以新建lib文件夹并修改依赖包路径即可,具体:https://www.cnblogs.com/huahua035/p/11988631.html

2021/05/12 总结记录:

sqoop导数据格式:
sqoop import
–connect $PROBE_CONNECT \ 连接的url
–username $PROBE_USER_NAME
–password $PROBE_PASSWORD
–query “select id,url,url_name,status,creator,create_time,dominid from probe_heatmap_url where $CONDITIONS” \ sql语句
–fields-terminated-by ‘,’ \ 分隔符
–target-dir /user/hive/warehouse/micen.db/probe_heatmap_url_4 \ Hdfs的目录
-m 1 map的数量
Oracle查询分区表范例:
select * from DM_PROBE_HEATMAP partition(PART_20210509);

错误记录:

sqoop在导入数据时,可以使用–query搭配sql来指定查询条件,并且必须在sql中添加$CONDITIONS,来实现并行运行mr的功能。
数栈的数据同步功能从Oracle到hive过程中,hive的表不能是textfile否则每行数据将被定在一格内

2021/05/13 错误记录:

pl-sql中select * from dual 这个dual是什么?
Dual简单的说就是一个空表,Oracle提供的最小的工作表,只有一行一列,具有某些特殊功用。常用来通过select语句计算常数表达式。
特性:
1、Oracle提供的最小的表,不论进行何种操作(不要删除记录),它都只有一条记录——‘X’。
例如:执行select * from dual,里面只有一条记录;执行insert into dual values(‘Y’)后,再次查询dual表,仍然显示一条记录。
2、是sys用户下的一张内部表,所有用户都可以使用DUAL名称访问,无论什么时候这个表总是存在
例如:执行一个查看当前日期的语句 select sysdate from dual,这条语句在放在放在任何一个oracle数据库当中都不会报错,所以一般做一些特定查询的时候用这个表是最稳妥的。
oracle sql中 ||是什么?
连接作用。 也就是可以把两个字段百的数据或者某些字符组成我们想要的表达形式
sqoop中 --input-null-string 是什么?
对于string类型的字段,当Value是NULL,替换成指定的字符
hive动态分区:
set hive.exec.dynamic.partition=true; 是开启动态分区
set hive.exec.dynamic.partition.mode=nonstrict;
这个属性默认值是strict,就是要求分区字段必须有一个是静态的分区值,随后会讲到,当前设置为nonstrict,那么可以全部动态分区

2021/05/17 错误记录:

数栈的数据同步中要加导入前sql不要加;否则会报错

2021/05/19 错误记录:

presto去连接hive,启动时一直报No factory for connector hive-master错误
解决方法
在hive.properties中 connector.name写错了,应该为指定的版本,以便于presto使用对应的适配器,修改为:
connector.name=hive-hadoop2

总结记录:

关于presto虚拟机配置jvm.config,其实主要配置的还是垃圾回收,即用即收

Data Warehouse(数据仓库):是一个包含各种数据(历史+当前)的中心存储系统,是BI(business intelligence,商业智能)的核心部件
BI:将企业中现有的数据转化为知识,帮助企业进行明智业务经营决策的工具
数据--->知识,需要借助数仓、OLAP(online analytical processing,联机分析处理)工具、数据挖掘等技术

hadoop启动历史服务器:sbin/mr-jobhistory-daemon.sh start historyserver

2021/05/26 错误记录:

linux mysql 出现报错: Can’t connect to local MySQL server through socket ‘/var/lib/mysql/mysql.sock’
权限问题
chown -R mysql:mysql /var/lib/mysql
/etc/init.d/mysqld start

2021/05/30 总结记录:

1.小表对大表(broadcast join)
将小表的数据分发到每个节点上,供大表使用。executor存储小表的全部数据,一定程度上牺牲了空间,换取shuffle操作大量的耗时,这在SparkSQL中称作Broadcast Join
Broadcast Join的条件有以下几个:
被广播的表需要小于 spark.sql.autoBroadcastJoinThreshold 所配置的值,默认是10M (或者加了broadcast join的hint)
基表不能被广播,比如 left outer join 时,只能广播右表
2.Shuffle Hash Join
Shuffle Hash Join分为两步:
对两张表分别按照join keys进行重分区,即shuffle,目的是为了让有相同join keys值的记录分到对应的分区中
对对应分区中的数据进行join,此处先将小表分区构造为一张hash表,然后根据大表分区中记录的join keys值拿出来进行匹配
3.Sort Merge Join
将两张表按照join keys进行了重新shuffle,保证join keys值相同的记录会被分在相应的分区。分区后对每个分区内的数据进行排序,排序后再对相应的分区内的记录进行连接
因为两个序列都是有序的,从头遍历,碰到key相同的就输出;如果不同,左边小就继续取左边,反之取右边(即用即取即丢)

你可能感兴趣的:(大数据)