0%

前言

大家在使用Centos操作系统安装软件包和库时,经常会使用到yum命令去安装相关软件,使用yum时会自动去下载安装软件所需的所有依赖,这种方式极大提高了用户安装软件的速度。

但是,有些场景下这种方式又会带来一些问题,比如在离线安装的场景下【比如:政府部门、高校等部门服务器是不允许连接互联网的】,依赖问题就无法在线解决,这个时候就需要使用到离线安装技术。

阅读全文 »

引言

在工作中我们经常会遇到这样的一些问题,例如公司服务器数据存放在公司内容,现在在外面出差无法通过资源浏览器直接访问,通常的做法是使用远程控制软件如to_desk、向日葵等等,这种方式虽然能够解决我们文件查找的问题,但是在进行传输的时候,第三方工具的传输速度太慢,并且这种方式也不太优雅;再比如,公司在做开发时,一般是很多人一起完成一个项目,每个人负责一部分代码,这个时候就设置到一个代码同步的问题,场景的做法就是在局域网中搭建gitlab,然后大家统一将代码上传到gitlab,但是有的时候由于一些原因有些工作需要回家完成,但是在家完成后又无法直接上传到公司的局域网gitlab,和其他同事之间就无法进行及时的同步进度~~~~。

这些问题在学习完本文的内容后都会得到解决。

安装前的准备工作

设备

我在这里演示的设备有3个:

  1. 服务端:阿里云服务器Centos7操作系统。【服务端一定要位于公网】
  2. 客户端1:本机Windows11操作系统。
  3. 客户端2:公司服务器Centos7操作系统
阅读全文 »

项目目录结构

例如,在此演示的发布库的项目结构如下所示:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
MinglogUtils
├─LICENSE
├─README.md
├─setup.py
├─CVUtils
│ ├─CVUtils.py
│ ├─test.py
│ ├─__init__.py
│ ├─files
│ │ ├─province.txt
│ │ └─WordAndNum.txt
│ └─__pycache__
│ ├─CVUtils.cpython-38.pyc
│ └─__init__.cpython-38.pyc
└─SpiderUtils
├─SpiderUtils.py
└─__init__.py
阅读全文 »

Hadoop集群规划

hadoop102 hadoop103 hadoop104
HDFS NameNode DataNode DataNode SecondaryNameNode DataNode
YARN NodeManager ResourceManager NodeManager NodeManager

这里的规划方式和前面我们讲到的一致。

相关IP配置如下所示:

宿主机网络信息:

IP192.168.128.66

GATEWAY192.168.128.2

DNS1192.168.128.2

集群网络配置:

hadoop102192.168.128.102

hadoop103192.168.128.103

hadoop104192.168.128.104

阅读全文 »

第一题

现有数据score_info.txt文件,文件内容如下所示:

1
2
3
4
5
6
7
8
9
1001    01 90
1001 02 90
1001 03 90
1002 01 85
1002 02 85
1002 03 70
1003 01 70
1003 02 70
1003 03 85

编写HiveQL代码,完成以下问题:

  1. 创建score_info表,字段名分别为uidsubject_idscore

    1
    2
    3
    4
    5
    6
    7
    8
    create table if not exists score_info(
    uid string,
    subject_id string,
    score int
    )
    row format delimited
    fields terminated by '\t'
    lines terminated by '\n';
  2. 将数据导入score_info表。

    1
    2
    3
    load data local 
    inpath '/opt/module/hive-3.1.2/datas/score_info.txt'
    overwrite into table score_info;
  3. 求出每门学科的平均成绩。

    1
    2
    3
    4
    5
    6
    select uid,
    score,
    subject_id,
    avg(score) over (partition by subject_id) avg_score
    from
    score_info
  4. 找出所有科目成绩都大于某个学科平均成绩的学生。

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    select
    t2.uid
    from
    (
    select
    t1.uid,
    if(score > avg_score, 0, 1) flag
    from(
    select uid,
    score,
    subject_id,
    avg(score) over (partition by subject_id) avg_score
    from
    score_info
    ) t1
    ) t2
    group by uid
    having sum(t2.flag) = 0;

第二题

现有数据action.txt文件,文件内容如下所示:

1
2
3
4
5
6
7
8
u01 2017/1/21  5
u02 2017/1/23 6
u03 2017/1/22 8
u04 2017/1/20 3
u01 2017/1/23 6
u01 2017/2/21 8
u02 2017/1/23 6
u01 2017/2/22 4

编写HiveQL代码,完成以下问题:

  1. 创建action表,字段名分别为userIdvisitDatevisitCount

    1
    2
    3
    4
    5
    6
    7
    8
    create table if not exists action(
    userid string,
    visitDate string,
    visitCount int
    )
    row format delimited
    fields terminated by '\t'
    lines terminated by '\n';
  2. 将数据导入action表。

    1
    2
    3
    load data local 
    inpath '/opt/module/hive-3.1.2/datas/action.txt'
    into table action;
  3. 统计出每个用户的月累计访问次数。

    1
    2
    3
    4
    5
    select
    userid,
    substring(visitDate, 0, 6) visitMonth,
    sum(visitCount) over (partition by userid, month(visitDate)) sumCount
    from action;
  4. 统计出每个用户的逐月累计访问次数。

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    select
    userid,
    visitMonth,
    max(sumCount)
    from(
    select
    uid,
    substring(visitDate, 0, 6) visitMonth,
    sum(visitCount) over (partition by userid, month(visitDate) order by visitDate) sumCount
    from action) t1
    group by userid, visitMonth;

docker简介

什么是docker

Docker 最初是dotCloud公司创始人Solomon Hykes在法国期间发起的一个公司内部项目,它是基于 dotCloud公司多年云服务技术的一次革新,并于2013年3月Apache 2.0 授权协议开源,主要项目代码在 GitHub上进行维护。Docker 项目后来还加入了Linux基金会,并成立推动开放容器联盟(OCI)。

Docker使用 Google 公司推出的Go语言进行开发实现,基于Linux 内核的cgroupnamespace,以及OverlayFS 类的Union FS 等技术,对进程进行封装隔离,属于操作系统层面的虚拟化技术。由于隔离的进程独立于宿主和其它的隔离的进程,因此也称其为容器。最初实现是基于LXC,从 0.7版本以后开始去除 LXC,转而使用自行开发的libcontainer,从 1.11开始,则进一步演进为使用runCcontainerd

Docker在容器的基础上,进行了进一步的封装,从文件系统、网络互联到进程隔离等等,极大的简化了容器的创建和维护。使得 Docker 技术比虚拟机技术更为轻便、快捷。

阅读全文 »

前言

不知道大家是否需要过这样的问题,自己有多台电脑,例如:一个在家,一个在公司。有的时候在家使用电脑时,需要用到公司电脑的文件,这个时候一般的做法是远程控制公司电脑,然后将文件拷贝过来。但是这样做有以下弊端:

  1. 想要远控公司电脑,必须保证公司电脑是开启且不休眠的状态。
  2. 对于小文件,少量文件这样做没有问题,但是对于大量小文件或者大文件而言,使用远程工具去拷贝对于网速的要求非常高,并且速度很慢。
阅读全文 »

分区表与分桶表

我们创建一个hive表时,此时在hdfs上就在默认路径下创建了一个以表的名字命名的文件夹。

image-20230809140220687

Hive表中的数据在hdfs上则是对应文件夹下的所有文件。在查询表中数据时,其实就是将文件夹下的所有文件进行读取,在海量数据的场景下,这无疑是非常耗时的,并且在实际生产环境中,往往会进行查询过滤。

阅读全文 »