2020-11-23 15:40:08    9    0    0

一. hive执行流程

HiveQL 通过命令行或者客户端提交,经过 Compiler 编译器,运用 MetaStore 中的元数 据进行类型检测和语法分析,生成一个逻辑方案(Logical Plan),然后通过优化处理,产生一个 MapReduce 任务。

  • Hive的存储结构包括数据库、表、视图、分区。数据库、表、分区都对应 HDFS 上的目录,而数据对应 HDFS 对应目录下的文件。

  • Hive 中所有的数据都存储在 HDFS 中,没有专门的数据存储格式,Hive 是读模式的数据库,可支持 TextFile,SequenceFile,RCFile 或者自定义格式等。

  • 只需要在创建表的时候告诉 Hive 数据中的列分隔符和行分隔符,Hive 就可以解析数据

    • Hive 的默认列分隔符:控制符 ^A(Ctrl + A),在CREATE TABLE语句中可以使用八进制编码\001表示。
    • Hive 的默认行分隔符:换行符 \n。
  • Hive 中包含以下数据模型:

    • database:在 HDFS 中表现为${hive.metastore.warehouse.dir}目录下一个文件夹
    • table:在 HDFS 中表现所属 database 目录下一个文件夹
    • external table:与 table 类似, 外部表存放目录${hive.metastore.warehouse.dir},或者指定目录。
    • partition:在 HDFS 中表现为 table 目录下的子目录。
    • bucket:在 HDFS 中表现为同一个表目录或者分区目录下根据某个字段的值进行 hash 散列之后的多个文件。
    • view:与传统数据库类似,只读,基于基本表创建。
2020-11-21 18:28:22    8    0    0

场景再现

在多数集群中,节点的配置必须保持一致,一旦管理节点修改了配置,就需要把配置同步到其他节点,通常情况下是下面这样的,它的缺点是每次都需要写全路径。

  1. scp -r /path/conf node1:/path/conf
  2. scp -r /path/conf node2:/path/conf
  3. scp -r /path/conf node3:/path/conf

解决方法

使用 rsync 命令同步,同时自动获取到文件的绝对路径,脚本如下

  • 同步配置文件 sudo vim /usr/bin/xsync
    sudo chmod +x /usr/bin/xsync
2020-11-21 09:32:55    10    0    0

一. RPM

1.1 安装方式

  1. # 本地文件安装
  2. rpm -ivh /path/yyy.rpm
  3. # 远程下载安装
  4. rpm -ivh ftp://ftp.xxx.com/yyy.rpm
  5. rpm -ivh http://www.xxx.com/yyy.rpm

1.2 安装步骤

rpm包安装一般会是如下步骤

  • 1、软件包依赖性检测。
  • 2、检查软件包冲突检测。
  • 3、执行安装前的脚本。
  • 4、处理配置文件(不会将原来的配置文件覆盖掉,会给源文件加上后缀.rpmorig)。
  • 5、复制程序的文件到相应目录,同时设置文件权限。
  • 6、执行安装后脚本程序。
  • 7、更新RPM数据库,更新校验和卸载等。

1.3 选项总结

2020-11-06 19:01:52    12    0    0

一. 安装包列表

安装包列表如下,安装前保证防火墙关闭、selinux被禁用、JDK1.8以上被成功安装。

  1. kafka_2.11-2.3.0.tgz
  2. zookeeper-3.4.10.tar.gz

二. 安装zookeeper

  • 在node1、node2、node3上分别做如下操作,三台配置文件完全相同。
2020-11-04 09:14:52    13    0    0

letsencrypt 的使用场景通常是有外网的时候,如果安装的nginx不能访问外网,同时也不能被外网访问,只能在内网发布,这时候letsencrypt就无法安装了,使用openssl手动生成证书可以解决此问题。

  • 安装nginx
  1. # 安装nginx
  2. apt install nginx
  3. vim /etc/nginx/conf.d/test.conf
  4. server {
  5. listen 80;
  6. server_name www.test.com;
  7. root /var/www/html;
2020-10-28 11:13:22    6    0    0

指定Java编译版本

  • 方法1
  1. <build>
  2. <plugins>
  3. <plugin>
  4. <groupId>org.apache.maven.plugins</groupId>
  5. <artifactId>maven-compiler-plugin</artifactId>
  6. <configuration>
  7. <source>11</source>
  8. <target>11</target>
  9. </configuration>
  10. </plugin>
  11. </plugins>
  12. </build>
2020-09-24 20:10:31    31    0    0

一、PXE介绍

  PXE(Pre-boot Execution Environment)叫做预启动执行环境,它提供了一个通过网络启动操作系统或者启动安装器anaconda的环境。PXE的代码是内嵌在网卡内芯片上的。安装的第一步是加载一个启动管理器(boot loader)来加载内核和安装器(anaconda)。

1、anaconda
  是Red Hat、CentOS、Fedora等Linux的安装管理程序。它可以提供文本、图形等安装管理方式,并支持Kickstart等脚本提供自动安装的功能。

2、PXE启动流程

  • a. 网卡(NIC)申请DHCP信息,获得有效的客户端IP地址;
  • b. 同时DHCP服务器提供bootloader nametftp服务器IP地址;
  • c. NICtftp的地址去获取bootloader,然后BIOS执行bootloader,通常bootloader叫做pxelinux.0;
  • d. Bootloader再次用tftp去找kickstart配置文件ks.cfg,按配置文件内容运行。
  • e. 启动anconda安装器,由于ks.cfg中定义了安装镜像的位置以及安装器所需的必要信息,所以安装器就能在没有人为干预的情况下进行安装。
2020-09-24 10:45:15    25    0    0

如果某一个项目依赖其他项目,可以将依赖的项目以子模块的方式添加到当前项目里面,通常情况下,子模块以只读的方式来使用(也可以对子模块做修改提交)。

一. 添加子模块

  1. $ 把项目programb添加为当前项目(programa)的子模块,本地名字也叫programb,在third_party目录下,-b指定programbmaster分支
  2. git submodule add -b business git@1.1.1.1:yuchaoshui/programb.git third_party/programb
  3. $ 如果忘记指定-b参数,可以修改指定分支
  4. git config -f .gitmodules submodule.third_party/programb.branch business
  5. $ 提交在programa里面
  6. git commit -m "add submodule third_party/programb"
2020-09-19 18:13:58    27    0    0

使用go mod来管理项目,完全忽略掉GOPATH的存在,测试版本go1.15

一. 启用GO111MODULE并设置代理

  1. $ go env -w GO111MODULE=on
  2. $ go env -w GOPROXY=https://goproxy.cn,direct
  3. # 设置完成以后查看
  4. $ go env
2020-08-03 12:54:44    45    0    0

流量控制(tc)是一个非常有用的Linux实用程序,使您能够配置内核数据包调度程序。
tc可以模拟UDP或TCP应用程序的数据包延迟和丢失,或者限制特定服务的带宽等等场景。

命令安装

  1. # Debain和Redhat系列的系统安装iproute包即可
  2. sudo apt-get install -y iproute
  3. sudo yum install -y iproute


控制网络延迟(双向)

这里的延迟控制是双向的,即当前主机到其他主机延迟,其他主机到当前主机延迟。