0%

背景

deployment使用hostpath将宿主机的目录挂在到容器内,让容器内进程的日志可以写到hostpath目录上,然后被采集。
日志目录对权限有要求,查询k8s文档,如果将hostPath 卷指定 type值为DirectoryOrCreate,则权限为0755。
如果需要更精细的控制,可以使用 initContainers ,与spec.containers同级

initContainers

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
# 新增init容器调整日志目录,此处只能调整共同挂载卷的权限
initContainers:
- name: initc
securityContext:
runAsUser: 0
command:
- sh
- -c
- whoami; chmod 750 /applog; chown -R 65532:65532 /applog
image: debian:10
imagePullPolicy: IfNotPresent
resources: {}
terminationMessagePath: /dev/termination-log
terminationMessagePolicy: File
volumeMounts:
- mountPath: /applog
name: applog

如果没有共同挂在卷呢?

答:在Dockerfile中修改,可能需要USER指令改变RUN的命令权限。

Q5和UNT403A跑Armbian, 使用ipv6跑容器魔方. Q5有tf卡, UNT-403A用U盘引导,外加一个移动硬盘做数据盘.

阅读全文 »

Hadoop3.3.2 on Windows10

简介

在windows系统上进行hadoop相关开发,不需要高可用,仅用作开发调试还是很方便的。

环境

hadoop: 3.3.2
jdk: 1.8
winutils 3.3.x 和 hadoop.dll: https://github.com/kontext-tech/winutils/tree/master/hadoop-3.3.1/bin

实测3.3.1的winutils可以适配3.3.2的hadoop版本。本机3.2.2hadoop在启动datanode时会失败。

安装和配置步骤

下载解压hadoop,假设解压到D:\PortableSoftware\hadoop-3.3.2
下载对应版本的winutils.exehadoop.dll复制到D:\PortableSoftware\hadoop-3.3.2\bin

  1. JAVA_HOME,如果你的java安装路径是含有”Program Files”, 使用Progra~1代替”Program Files”,或使用Progra~2 代替 “Program Files(x86)”
  2. HADOOP_HOME
  3. PATH变量加入%JAVA_HOME%\bin;%HADOOP_HOME%\bin;%HADOOP_HOME%\sbin
  4. 检查: 新开cmd窗口,输入hadoop -version
  5. 配置%HADOOP_HOME%\etc\hadoop\hdfs-site.xml
  6. 配置%HADOOP_HOME%\etc\hadoop\core-site.xml
  7. 配置%HADOOP_HOME%\etc\hadoop\mapred-site.xml
  8. 配置%HADOOP_HOME%\etc\hadoop\yarn-site.xml
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    <!-- hdfs-site.xml -->
    <configuration>
    <property>
    <name>dfs.replication</name>
    <value>1</value>
    </property>
    <property>
    <name>dfs.namenode.name.dir</name>
    <value>file:///D:/PortableSoftware/hadoop-3.3.2/data/dfs/namenode</value>
    </property>
    <property>
    <name>dfs.datanode.data.dir</name>
    <value>file:///D:/PortableSoftware/hadoop-3.3.2/data/dfs/datanode</value>
    </property>
    <property>
    <name>dfs.permissions</name>
    <value>false</value>
    </property>
    </configuration>
    1
    2
    3
    4
    5
    6
    7
    <!-- core-site.xml -->
    <configuration>
    <property>
    <name>fs.default.name</name>
    <value>hdfs://localhost:9820</value>
    </property>
    </configuration>
    1
    2
    3
    4
    5
    6
    7
    8
    <!-- mapred-site.xml -->
    <configuration>
    <property>
    <name>mapreduce.framework.name</name>
    <value>yarn</value>
    <description>MapReduce framework name</description>
    </property>
    </configuration>
    1
    2
    3
    4
    5
    6
    7
    8
    <!-- yarn-site.xml -->
    <configuration>
    <property>
    <name>yarn.nodemanager.aux-services</name>
    <value>mapreduce_shuffle</value>
    <description>Yarn Node Manager Aux Service</description>
    </property>
    </configuration>

试验:

hadoop version

启动HDFS

第一次使用需要hdfs namenode -format

启动:

start-dfs.cmd

停止:

stop-dfs.cmd

访问:

http://localhost:9870/

功能描述

CDH平台需要集成多个采集端的采样数据,采集端可能来自学校或公司,可能存在非校园网,网络不通情况。
采集端数据分目录存放,文件是csv格式。
平台侧需接收文件和文件夹,同时解析入库(MySQL)和HDFS(Hadoop分布式文件系统)。
集成采取定时任务形式,初步设定为每小时一次。

概要设计

同步记录

数据集成采取增量集成模式,需在平台侧记录哪些数据已经同步完成,哪些数据尚未同步,采集端程序每次仅传输未集成的新数据。

平台端增加表记录哪个目录已经集成,提供接口告诉采集端,哪些已经采集完成。

采集端程序

采集端采用定时任务形式,任务开始会扫描数据目录下的文件夹,对比服务器上查询的同步记录,过滤未同步的文件夹。先对新目录进行zip压缩后通过Http接口上传到平台。采集端需要图形界面配置。

图形界面

  1. 定时任务间隔,单位分钟,整数输入框1个
  2. 配置数据目录,文件夹选择器1个
  3. 手动触发上传,按钮1个

报价

  • 平台侧改造,增加表、增加接口、解析入口改造:100
  • 采集端界面,pyqt界面工作量:200
  • 采集端定时,定时任务和界面结合,兼容手动按钮:100
  • 采集端上传,调用查询同步情况接口,开始上传:100
  • 整体功能联调:100

跨网络传输方案

跨局域网点对点

自己搭建zerotier或vpn,模拟局域网。————理论方案,尚未实践,需要公网ip服务器

公网ip服务器搭建中转点,采集端先上传到服务器,再下载到平台侧。————方案较复杂,实践过。

跨网方案费用预计

服务器,腾讯云最小规格500多一年,一般熟人或新客有打折。

按中转的上传下载方案,程序和服务器配置方面要增加500元。