【大数据】- Hadoop 基本概念

前言

Hadoop 是一个由 Apache 基金会所开发的分布式系统基础架构,它可以使用户在不了解分布式底层细节的情況下开发分布式程序,充分利用集群的威力进行高速运算和存储。

从其定义就可以发现,它解決了两大问题:大数据存储、大数据分析。也就是 Hadoop 的两大核心:HDFS 和 MapReduce。

HDFS(Hadoop Distributed File System)是可扩展、容错、高性能的分布式文件系统,异步复制,一次写入多次读取,主要负责存储。

MapReduce 为分布式计算框架,包含 map(映射)和 reduce(归约)过程,负责在 HDFS 上进行计算。

但是由于目前我没有用到 MapReduce,并且 MapReduce 能效过于地下并且很占系统资料,所以一般数据分析都会用其他的来代替。

所以这里介绍的 Hadoop,会重点讲解 HDFS 和其工作原理。

【kubernetes】nginx-ingress

前言

Ingress 是一个负载均衡的东西,其主要用来解决使用 NodePort 暴露 Service 的端口时 Node IP 会漂移的问题。同时,若大量使用 NodePort 暴露主机端口,管理会非常混乱。

好的解决方案就是让外界通过域名去访问 Service,而无需关心其 Node IP 及 Port。那为什么不直接使用 Nginx?这是因为在 K8S 集群中,如果每加入一个服务,我们都在 Nginx 中添加一个配置,其实是一个重复性的体力活,只要是重复性的体力活,我们都应该通过技术将它干掉。

Ingress 就可以解决上面的问题,其包含两个组件 Ingress Controller 和 Ingress:

  • Ingress (将 Nginx 的配置抽象成一个 Ingress 对象,每添加一个新的服务只需写一个新的 Ingress 的 yaml 文件即可)
  • Ingress Controller (将新加入的 Ingress 转化成 Nginx 的配置文件并使之生效)

PHP-CS-Fixer 配置详细对比

前言

由于我们项目比较多,而且每个人的编写代码的风格也不太一致,我们希望尽可能在格式上得到统一,这样子的好处有如下几点:

  • 遵循 PSR2
  • codereview 的时候可以免除格式差异所带来的干扰
  • 统一格式有利于大家在这个基础上写出更为优雅的代码格式

因此,我们实现了用于的统一格式化配套的工具链:

  • husky-php:用于实现客户端 githook 钩子,用于执行触发我们的 husky 项目(默认支持自动格式化,冲突校验)
  • composer-husky-plugin:专门由 husky-php 定制的 composer 插件,用于自动部署husky-php
  • php-cs-fixer-config:专门定义 php-cs-fixer 格式配置的组件

k8s の 基础知识

k8s 知识点一

k8s 总架构由于 2 个概念构成

  • Master
  • Node

MasterNode 都是服务器物理机或者虚拟机, 都可以由于一台或者多台组成,如果 Master 不考虑HA(高可用)的情况下。一般都是 1 台 Master + N 台 Node。

Master 上所需要的服务

  • etcd
  • Api Server
  • Controller Manager
  • Scheduler

后三个组件构成了 Kubernetes 的总控中心,这些进程实现了整个集群的资源管理、Pod 调度、弹性伸缩、安全控制、系统监控和纠错等管理功能,并且全都是自动完成。

Node 上所需要的服务

  • kubelet
  • proxy

rust-for-docker

说明

今天,我们开始学习一下 Rust,希望将来在公司可以推广 Rust 语言,并且用 Rust 语言做更多的事情。

在此, 进入我们的入学篇。

Rust for Docker

拉取最新版本的 Rust

1
docker pull rust:latest

由于官方上的命令有点问题,并且我希望我有一个交互的终端环境,所以,经过修改后,进入 Rust 容器的命令如下:

1
docker run -it --rm -e "USER=$(whoami)" -e "RUST_BACKTRACE=1" -v "$PWD":/usr/src/myapp -w /usr/src/myapp rust:latest bash
  • USER: cargo 打包的时候会用这个命名
  • RUST_BACKTRACE:终端调试的时候,会打印出错误栈

进入到容器后,我们创建属于我们的第一个项目:Hello,World

利用 Rust 的包管理工具:Cargo 进行开发和编译

1
2
3
cargo new hello_world

// car new --lib <package_name> 这个是创建类库的命令,暂时用不到,所以忽略先

【工具】oh-my-zsh 换行补偿

oh-my-zsh 换行补偿

大家应该也是经常会用到 linux 或者 macOS,大家应该都有了解 macos 必备软件之间,oh-my-zsh,它可以为我们的终端提供丰富的主题,当然,这里就不详细介绍了。现在主要说一下其中一个问题就是,oh-my-zsh 的 换行补偿机制

一般情况下,我们在终端有时候会发现会存在 %,例如:

root 账号的时候是 # 号
非 root 账号是 % 号

【Linux命令】ed命令

说明

ed 是 linux 下原始的编辑器,类似于一个行为记录器

ed 的所有操作都可以用一个文本来记录

里面的内容是所有的操作,有点类似于 dockerfile 的形式