说明:本文档只是记录个人在工作中常用的一些命令与操作。
目录
du (disk usage): 显示每个文件和目录的磁盘使用空间,也就是文件的大小。
一、linux
1.1 查看端口占用情况
man help 都是查看命令的帮助文档。
一般用 man 比较多,比如 man ps。
-- 1、查看端口占用情况
netstat -tunlp | grep 8200
-- 2、查看被哪个进程所占用
jps | grep 进程号
[root@sandbox-bigdata-1 elasticsearch]# netstat -tunlp | grep 8200
tcp6 0 0 10.39.235.24:8200 :::* LISTEN 99839/java
[root@sandbox-bigdata-1 elasticsearch]# netstat -anpt | grep 8200
tcp 0 0 10.39.235.24:59672 10.39.235.24:8200 TIME_WAIT -
tcp 0 0 10.39.235.24:58534 10.39.235.24:8200 TIME_WAIT -
tcp 0 0 10.39.235.24:59052 10.39.235.24:8200 TIME_WAIT -
tcp 0 0 10.39.235.24:60888 10.39.235.24:8200 TIME_WAIT -
tcp6 0 0 10.39.235.24:8200 :::* LISTEN 99839/java
tcp6 0 0 10.39.235.24:8200 172.26.22.59:53776 ESTABLISHED 99839/java
tcp6 0 0 10.39.235.24:8200 172.26.18.147:54848 ESTABLISHED 99839/java
tcp6 0 0 10.39.235.24:8200 172.26.18.147:54849 ESTABLISHED 99839/java
注意:其中 8200 端口前 是监听的哪个ip下的端口号。
1.2 查看当前目录使用情况
du (disk usage): 显示每个文件和目录的磁盘使用空间,也就是文件的大小。
-h #以K M G为单位显示,提高可读性(最常用的一个)
du -sh *
du -sh /* 表示根目录使用情况。
真实环境下测试:
df命令可以显示目前所有文件系统的可用空间及使用情形
df -h
通过命令du -h –max-depth=1 *,可以查看当前目录下各文件、文件夹的大小,这个比较实用。
查询当前目录总大小可以使用du -sh,其中s代表统计汇总的意思,即只输出一个总和大小。
-- 显示目录下的几级 PLSQL/ 表示在哪个目录下 已经测试过真实可用的
对于指定文件夹也可以指定显示层次深度,如du -h --max-depth=0 PLSQL/及du -h --max-depth=1 PLQSL/
1.3 nohub 执行 Java 程序
nohup java -cp jar ihsplatform-data-kafka-1.0.0.0-SNAPSHOT.jar com.baidu.ihs.data.kafka.producer.MockJX 2>&1 > /dev/null &
nohup 英文全称 no hang up(不挂起),用于在系统后台不挂断地运行命令,退出终端不会影响程序的运行。
如果要停止运行,你需要使用以下命令查找到 nohup 运行脚本到 PID,然后使用 kill 命令来删除:
nohup /root/runoob.sh & ps -aux | grep "runoob.sh"
ps 是显示所有活动进程。
二、往 kafka mock 数据
2.1 使用Java 方式,往 kafka mock数据
用途:
①、当数据没有接入时,可以先往kafka中mock些数据,以测试代码逻辑。
②、有些实时sink到新组件的测试,比如 读取 kafka 的数据到 es。
package com.baidu.ihs.data.kafka.producer;
import org.apache.kafka.clients.producer.KafkaProducer;
import org.apache.kafka.clients.producer.Producer;
import org.apache.kafka.clients.producer.ProducerRecord;
import java.util.Properties;
import java.util.Random;
public class MockSanSi {
private static final String JING_XIOING_TEST_BOOT_STRAP_SERVER="10.39.235.24:8092";
public static void main(String[] args) {
Properties props = new Properties();
props.put("bootstrap.servers", JING_XIOING_TEST_BOOT_STRAP_SERVER);
props.put("acks", "-1");
props.put("retries", 0);
// props.put("batch.size", 16384);
props.put("linger.ms", 1);
// props.put("buffer.memory", 33554432);
props.put("key.serializer", "org.apache.kafka.common.serialization.StringSerializer");
props.put("value.serializer", "org.apache.kafka.common.serialization.StringSerializer");
Producer<String, String> producer = new KafkaProducer<>(props);
int k = 0;
for (int i = 0;i < 10; i++){
int num = 0;
while (true) {
k++;
String meesage = "{\"id\":\""+k+"\",\"road_name\":\"京雄test\",\"road_dir\":2,\"create_time\"" +
":\"2022-03-28\"}";
System.out.println(">>>>>>");
System.out.println(meesage);
// 超过10000条停止
if (num > 10) {
k--;
break;
}
num++;
// 发送kafka小心 json
producer.send(new ProducerRecord<>("rsl_bas_road_base_kafka_4", String.valueOf(num), meesage));
// try {
// Thread.sleep(1);
// } catch (InterruptedException e) {
// e.printStackTrace();
// }
}
}
producer.close();
}
}
三、hadoop
1、在做集群节点有变动时,服务新节点或退役旧节点时,
如果数据不均衡,可以用命令实现集群的再平衡
[hadoop102 sbin]$ ./start-balancer.sh
2、HDFS 直接操作
2.1 -rm:删除文件或文件夹
[hadoop]$ hadoop fs -rm /user/test/jinlian2.txt
真实环境测试(这个不要在用了,会造成元数据无法删除):
-- 删除分区数据,可以进行模糊匹配删除多个分区的数据,真实删除物理磁盘上的数据。
[hadoop-3.1.3]$ hadoop fs -rm -r -f /user/hive/stg/rsl_road_base/dt=2021-12-*
用这个可以彻底删除数据:
-- 删除单个分区
ALTER TABLE stg_uniview_traffic_flow_info_h drop PARTITION (dt='2021-09-08');
-- 删除多个分区
ALTER TABLE stg_uniview_traffic_flow_info_h drop PARTITION (dt>'2021-09-08', dt<'2022-07-01');
2.2 注册 UDF 函数
create function explod_time as 'com.baidu.ihs.data.hive.udtf.ExplodTime' using jar 'hdfs://bigdata-1:9000/user/hive/resource/udf/ihsplatform-data-udf-1.0.0.0-SNAPSHOT.jar';
2.3 创建 snappy 压缩表
CREATE EXTERNAL TABLE `rsl_ud_devc_multcopt_d`(
`state_time` string COMMENT 'yyyyMMddHHmmss ??',
`devc_id` string COMMENT '??ID/???? ?????????',
`road_name` string COMMENT '????',
`road_id` string COMMENT '??id',
`road_number` string COMMENT '????',
`lane_num` bigint COMMENT '???? ????1????????????',
`stake_code` string COMMENT '??',
`stake_dir_no` string COMMENT '????',
`obstacle_id` string COMMENT '?????id',
`flow` bigint COMMENT '??? ????',
`speed` double COMMENT '???? ??km/h',
`vhc_type_no` bigint COMMENT '????,????,',
`source` bigint COMMENT '???????,??hk?????-1?????????AI???-2?etc-3?????-4????-5?mec-6')
COMMENT '???????????-???'
PARTITIONED BY (
`dt` string COMMENT '??',
`post_code` string COMMENT '????')
ROW FORMAT DELIMITED
FIELDS TERMINATED BY '\u0001'
STORED AS INPUTFORMAT
'org.apache.hadoop.hive.ql.io.orc.OrcInputFormat'
OUTPUTFORMAT
'org.apache.hadoop.hive.ql.io.orc.OrcOutputFormat'
TBLPROPERTIES (
'last_modified_by'='hdfs',
'last_modified_time'='1657015748',
'orc.compress'='SNAPPY',
'transient_lastDdlTime'='1657015748')
;
当报错 text 不能转化为 orc 时:
Caused by: java.lang.ClassCastException: org.apache.hadoop.io.Text cannot be cast to org.apache.hadoop.hive.ql.io.orc.OrcSerde$OrcSerdeRow
at org.apache.hadoop.hive.ql.io.orc.OrcOutputFormat$OrcRecordWriter.write(OrcOutputFormat.java:81)
at org.apache.hadoop.hive.ql.exec.FileSinkOperator.process(FileSinkOperator.java:763)
at org.apache.hadoop.hive.ql.exec.Operator.forward(Operator.java:841)
at org.apache.hadoop.hive.ql.exec.SelectOperator.process(SelectOperator.java:88)
at org.apache.hadoop.hive.ql.exec.Operator.forward(Operator.java:841)
at org.apache.hadoop.hive.ql.exec.FilterOperator.process(FilterOperator.java:122)
at org.apache.hadoop.hive.ql.exec.Operator.forward(Operator.java:841)
at org.apache.hadoop.hive.ql.exec.TableScanOperator.process(TableScanOperator.java:133)
at org.apache.hadoop.hive.ql.exec.MapOperator$MapOpCtx.forward(MapOperator.java:170)
at org.apache.hadoop.hive.ql.exec.MapOperator.process(MapOperator.java:555)
... 18 more
这里将表的序列化方式修改为orc:
ALTER TABLE rsl_ud_devc_multcopt_d SET FILEFORMAT ORC;
四、hive
4 基础操作
4.1 表的重命名
ALTER TABLE rsl_ud_devc_multcopt_d rename to rsl_ud_devc_multcopt_d_test;