分享知识,分享快乐

0%

xargs可以将输入内容(通常通过命令行管道传递),转成后续命令的参数,通常用途有:

  1. 命令组合:尤其是一些命令不支持管道输入,比如ls
  2. 避免参数过长:xargs可以通过-nx来将参数分组,避免参数过长。

使用语法如下

1
2
Usage: xargs [OPTION]... COMMAND INITIAL-ARGS...
Run COMMAND with arguments INITIAL-ARGS and more arguments read from input.

入门例子

首先,创建测试文件

1
touch a.js b.js c.js

接着,运行如下命令:

1
ls *.js | xargs ls -al

输出如下:

阅读全文 »

重启dn导致集群不能写入数据,几百个任务都失败了, 经过一个通宵的折腾,记录一下这次重大事故。

报错日志

1
2
DataStreamer Exception
20-11-2020 09:48:59 CST mysql2sqoop-1-RD202006060009 INFO - org.apache.hadoop.ipc.RemoteException(java.io.IOException): File /user/yarn/.staging/job_1605809645188_1956/job.jar could only be written to 0 of the 1 minReplication nodes. There are 66 datanode(s) running and no node(s) are excluded in this operation.

报错的日志各种误导,走了很多弯路,只说一下,最终解决了这个问题的方法:

网上有人出现这个问题是格式化解决,它们日志是There are 0 datanode(s) running and no node(s) are excluded in this operation.我的hdfs集群是正常的所有节点都在,只是不能写入数据。

我用的分层策略是One_SSD,查看了DFS Storage Types,发现disk的空间不够。

image-20201120151830207

解决步骤

ssd磁盘的机器和普通磁盘的机器分2个角色组

普通组不加[SSD]

阅读全文 »

python时间strftime格式化去除前导0

解决方案:

linux (加一个“-”符号)

1
datetime.date(2020, 11, 9).strftime("%-m月%-d日")

windows (加一个“#”符号)

1
datetime.date(2020, 11, 9).strftime("%#m月%#d日")
阅读全文 »

hive数据导出,并指定分隔符,元素包含引号等

语法格式

1
beeline -n username -p password -u jdbc:hive2://host:10000 --verbose=true  --showHeader=false --outputformat=tsv2  --color=true  -e "select * from ${database}.${tablename}" > ${tableName}.csv

通过 outputformat 指定输出格式

–outputformat=[table/vertical/csv/tsv/dsv/csv2/tsv2] == 指定输出格式

–delimiterForDSV="*" ‘&’ 前提(–outputformat=dsv) 指定分隔符

不同格式对应的分隔符如下表:

格式 分隔符
table 表格式
vertical 如下所示
csv ‘,’ 逗号(元素包含引号)
tsv ‘\t’ 制表符(元素包含逗号)
dsv 默认‘|’ 竖线分割,可通过delimiterForDSV指定分隔符
csv2 ‘,’ 逗号(不含引号)
tsv2 ‘\t’ 制表符(不含引号)

说明:

csv格式 == 查询元素有’'单引号

csv2格式没有单引号

tsv,tsv2同上

实例

阅读全文 »

hive建表create table xxx as select的问题

create table xxx as select的方式创建的表默认存储格式是text,所以要注意了假如as select的是其他格式的比如RCFile,则可能会导致一行变多行的情况(因为RCFile格式的可能字段包含换行符等),所以必须要加上
create table xxx stored as RCFile as select…
所以使用这种方式建表注意加上指定的存储格式。

测试示例:

1
2
3
4
5
6
drop table if exists decision_model.member_close_reason;
create table decision_model.member_close_reason as
select 'mongodb_member' as intype, *
from mongo_baofoo_log.log_update_member_state
;
select * from decision_model.member_close_reason where intype <> 'mongodb_member';

img

正确的应该加上指定的存储格式。

1
2
3
4
5
6
7
8
9
10
11
drop table if exists decision_model.member_close_reason;
create table decision_model.member_close_reason
row format delimited
fields terminated by '|'
STORED AS RCFile
as
select 'mongodb_member' as intype, *
from mongo_baofoo_log.log_update_member_state
;

select * from decision_model.member_close_reason where intype <> 'mongodb_member';
阅读全文 »

解决spark streaming长时间运行日志不断增长问题

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
log4j.rootLogger=WARN,stdout,A1

log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.Threshold=WARN
log4j.appender.stdout.encoding=UTF-8
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=[%d{yyyy-MM-dd HH:mm:ss,SSS}] %m %n[%d{yyyy-MM-dd HH:mm:ss,SSS}] %p | %F:%L | %M%n%n

log4j.appender.A1=org.apache.log4j.RollingFileAppender
log4j.appender.A1.BufferedIO=true
log4j.appender.A1.BufferSize=8192
log4j.appender.A1.File=${spark.yarn.app.container.log.dir}/stderr
log4j.appender.A1.MaxFileSize=10MB
log4j.appender.A1.MaxBackupIndex=9
log4j.appender.A1.encoding=UTF-8
log4j.appender.A1.Append=true
log4j.appender.A1.Threshold=ERROR
log4j.appender.A1.layout=org.apache.log4j.PatternLayout
log4j.appender.A1.layout.ConversionPattern=[%d{yyyy-MM-dd HH:mm:ss,SSS}] %m %n[%d{yyyy-MM-dd HH:mm:ss,SSS}] %p | %F:%L | %M%n%n
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
#!/bin/bash

echo "================= spark job:CbDimStreamDriver start!!!========================"

spark-submit \
--master yarn \
--deploy-mode cluster \
--name stream-rm-cb-dim \
--queue bf_yarn_pool.production \
--class com.baofu.rm.streaming.CbDimStreamDriver \
--num-executors 32 \
--driver-memory 3G \
--executor-memory 4G \
--executor-cores 1 \
--conf spark.dynamicAllocation.enabled=false \
--conf spark.executor.extraJavaOptions=-XX:+UseConcMarkSweepGC \
--conf spark.streaming.backpressure.enabled=true \
--conf spark.streaming.kafka.maxRatePerPartition=1000 \
--conf spark.eventLog.enabled=false \
--conf spark.driver.extraJavaOptions=-Dlog4j.configuration=file:log4j.properties \
--conf spark.executor.extraJavaOptions=-Dlog4j.configuration=file:log4j.properties \
--files ./log4j.properties \
/home/bf_app_spark/spark-jobs/streams/fxJob/cbdim/rm-streaming-analysis-pro.jar

rc=$?
if [[ $rc != 0 ]]; then
echo "spark task: $0 failed,please check......"
exit 1
fi

echo "end run spark: `date "+%Y-%m-%d %H:%M:%S"`"
echo "================== spark job:CbDimStreamDriver end!!!===================="
1
nohup sh ./stream_CbDimStreamDriver.sh > /dev/null 2>&1

参考: http://mkuthan.github.io/blog/2016/09/30/spark-streaming-on-yarn/

阅读全文 »

有道笔记文件备份

阅读全文 »

IPFS音乐播放器

IPFS相关

IPFS第一次亲密接触

  • 什么是IPFS
  • IPFS对比HTTP/FTP等协议的优势
  • IPFS应用场景

-移动数据 交易 路由 网络

  • 定义数据 命名
  • 使用数据

具体场景;
挂载全球文件
版本管理功能
数据库
加密平台
各种类型cdn
永久访问的链接

ipfs入门

  • 官网地址:https://ipfs.io
  • 下载安装:https://dist.ipfs.io/#go-ipfs
  • 节点初始化
    • ipfs init
    • 如果出现Error: cannot acquire lock: can't lock file删除其后边给出的repo.lock文件即可
  • 节点配置
    • ipfs id 查看当前节点id等信息
    • ipfs config show ipfs配置信息
  • 节点服务器daemon
    • ipfs daemon
  • 修改IPFS默认路径
  • 开放API请求
    • ipfs config --json Addresses.API ‘"/ip4/0.0.0.0/tcp/5001"’
  • 开放公共网关
    • ipfs config --json Addresses.Gateway ‘"/ip4/0.0.0.0/tcp/8080"’

发布数据

阅读全文 »

hbase-hbck2

从官网下载hbck2 执行文件

http://hbase.apache.org/downloads.html

或 wget https://www.apache.org/dyn/closer.lua/hbase/hbase-operator-tools-1.0.0/hbase-operator-tools-1.0.0-bin.tar.gz

cdh官网的使用帮助

https://docs.cloudera.com/documentation/enterprise/6/6.3/topics/admin_hbase_hbck.html#concept_hkk_q25_llb

1
2
3
4
5
6
7
cd /opt/hbase-operator-tools-1.0.0/hbase-hbck2

hbase hbck -j hbase-hbck2-1.0.0.jar -s assigns 1588230740

hbase hbck -j hbase-hbck2-1.0.0.jar -s assigns hbase:namespace,,1594264903686.db55eec81d86ac0ae26eba718518ce26

hbase hbck -j hbase-hbck2-1.0.0.jar -s addFsRegionsMissingInMeta default:test n1:tbl_2 n2

hbase shell 实战

移动表的数据到另外一个服务器

1
2
3
# 语法:move 'encodeRegionName', 'ServerName'``
# encodeRegionName指的regioName后面的编码,ServerName指的是master-status的Region Servers列表
move '61a647884b761a785daf3b38049aaa27','bigdata-5.baofoo.cn,16020,1595233360076'
阅读全文 »