Hadoop(HDFS+MapReduce+Hive+数仓基础概念)学习笔记(自用)

Posted ChinaManor

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Hadoop(HDFS+MapReduce+Hive+数仓基础概念)学习笔记(自用)相关的知识,希望对你有一定的参考价值。

在这里插入图片描述

修改虚拟机IP

*复制网卡的配置*

第一种方式:配置文件向识别的网卡兼容

1、 通过一个主机复制出多个主机

2、 开启复制的主机,启动时选择“复制”

img

3、 启动后查看IP ifconfig

img

查看系统识别的网卡

Ifconfig -a

img

这里ifconfig看不到IP 是因为系统识别的设备名称与系统配置文件不同导致。

配置文件名称img

解决方案:

修改配置文件名为系统识别的名称(将eth0改为eth1)

img

修改eth1内的配置

img

保存退出,重启网卡(报错)

img

错误原因:VM软件为新系统分配了新的mac地址,配置文件中还是原始的。两个不匹配

查看系统分配的mac地址,并记录。

img

方案:将配置文件中的历史的mac改为新的Mac地址

img

重启网卡

img

查看IP ifconfig

img

第二种方式:识别的网卡向配置文件兼容

通过一个主机复制出多个主机

开启复制的主机,启动时选择“复制”

img

启动后

查看IP ifconfig

img

查看系统识别的网卡

Ifconfig -a

img

这里ifconfig看不到IP 是因为系统识别的设备名称与系统配置文件不同导致。

配置文件名称img

方案:让系统识别的eth1变为eth0

第一步:修改配置文件img\\

文件中有两个配置,删除其中任意一个,修改剩下的一个配置将address改为系统新分配的mac地址,将NAME改成eth0,保存退出

img

第二步:修改配置文件img中的mac地址为系统重新分配的地址。保存退出

第三步:重启系统 reboot

img

002_Linux_随堂笔记_终版

操作系统

Windows 10

操作系统的分类

* 桌面操作系统

* 服务器操作系统

* 嵌入式操作系统

* 移动设备操作系统

桌面操作系统

* Window 系列

* macOS

* Linux

服务器操作系统

Linux

Windows Server

嵌入式操作系统

Linux

Linux创始人

林纳斯 托瓦兹

脱发兹
linux是开源免费

img

Linux分类

商业版 Redhat

稳定版 6.4 6.6 6.8 7.0(偶数)

开发板 6.5 5.7 6.9 (奇数)

免费版 CentOS

稳定版6.4 6.6 6.8 7.0

开发板 6.5 5.7 6.9

界面最好的

Ubuntu

国内的

红旗 中标麒麟

Linux 系统需要记住的目录

/etc: 系统配置,启动程序

/home:普通用户的家,目录默认数据存放目录

/mnt:临时挂载储存设备的挂载点,u盘插入光驱无法使用,需要挂载然后使用

/opt:额外的应用软件包

/root:Linux超级权限用户root的家目录

/tmp:临时文件目录,这个目录被当作回收站使用

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-GSWVWcxj-1624768770724)(C:\\Users\\ADMINI~1\\AppData\\Local\\Temp\\ksohtml25440\\wps161.png)]

文件夹的增删改查

添加 mkdir XXX

mkdir –p XXX

删除 rm –rf XXX

修改 mv XX XXX

查询 ll [-a]

ls [-a] [-l]

复制 cp [-a/-r] 原文件夹 目标文件夹

文件的增删改查

添加 touch 空文本

echo ‘XXXX’ > 或 >> 文本

删除 rm –rf xxx

修改 mv XX XXX

查询 ll [-a]

ls [-a] [-l]

查看内容

前10行 head 文件名

head -10 文件名

后10行 tail -10 文件名

查看所有

cat 文件名

赤壁

数据过滤

grep [参数] 关键字 文件名

img

编辑 ???????

其他

当前所在的目录 pwd

清空屏幕 clear

软连接 ln -s 目标文件绝对路径 快捷方式路径

帮助文档 命令+ --help

&& 前面的命令执行成功再执行后面的。

|| 前面的命令执行失败再执行后面的。

Vi编辑器的常用命令

1、 VI编辑器的三种模式

a) 命令模式

b) 编辑模式

c) 末行模式末行模式

保存并退出 :wq / x!

不保存强制退出 :q!

行内移动

以单词为单位向后移动 w

以单词为单位向前移动 b

光标移动到行首 0 / ^

光标移动到行尾 $

行数移动

移动到首行 gg

移动到尾行 G

定位到某一行 数字gg / 数字G / :数字

段落

以段落为单位后移 }

以段落为单位前移 {

撤销

撤销命令 u

取消撤销/恢复撤销 Ctrl+r

删除文本

删除多行 数字dd

删除一行 dd / 1dd

在光标所在的位置删除至行尾 D

在光标所在的位置删除至行首 d0 / d^

剪切 x

复制

复制多行 数字yy

复制一行 yy

粘贴 p

替换的命令

替换的是光标所在的位置以及后面的数据 R

只替换光标右侧的第一个字符 r

文件夹内查找

通过文件名指定路径查找 find 路径 -name *.txt

通过文件名在当前路径查找 find -name *.txt

文件内查找

/查找的内容

向上查找 N

向下查找 n

文件内替换

:%s/旧文本/新文本/g [c]

进入编辑模式【插入】

I、A、O / i、a、o

img img

压缩命令

gzip

制作压缩文件 tar zcvf 压缩文件名.tar.gz 被压缩的文件/文件夹

解压压缩文件 tar zxvf 压缩的文件名.tar.gz -C 路径

bzip2

制作压缩文件 tar jcvf 压缩文件名.tar.bz2 被压缩的文件/文件夹

解压压缩文件 tar jxvf 压缩的文件名.tar.bz2 -C 路径

关机

halt

重启

reboot

用户权限

drwxr-xr-x. 2 root root 4096 9月 14 23:15 aa

d:表示文件夹

rwx:当前用户具备的权限

r-x:当前用户所属的组具备的权限

r-x:其他用户所具备的权限

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-mKqGTGaI-1624768770725)(C:\\Users\\ADMINI~1\\AppData\\Local\\Temp\\ksohtml25440\\wps165.jpg)]

root:文件所属的用户

root:文件所属的用户所属的组

4096 :文件大小

9月 :文件创建的月份

14 23:15 文件创建的日期

aa:文件名

读权限:数字表示4

写权限:数字表示2

执行权限:数字表示1

读写执行能够构成的数字和是1、2、3、4、5、6、7

用户和组的添加

组的操作

添加组 groupadd 组名

删除组 groupdel 组名

查询当前所有的组 cat /etc/group

修改组 chgrp 组名 文件/目录名

用户的操作

添加用户同时指定组 useradd -g 组名 用户名

添加用户 useradd 用户名 【未指定组时,创建一个与用户名相同的组】

删除用户(删除家目录):userdel –r 用户名

查看当前用户 cat /etc/passwd

为用户设置密码 passwd 用户名

用户切换

Su 用户名

Root用户 切换到普通用户无需密码,普通用户之间切换需要密码

退出用户 exit

普通用户临时借用root权限使用sudo 命令【普通用户已经添加到/etc/sudoers文件中】

img

修改权限

1、chmod [-R] 777 文件名/文件夹名

2、chmod +/- rwx 文件名|目录名

3、chmod -R u=rwx,g=rwx,o=rwx 文件名|目录名

修改文件所属的组

chown -R 新用户:新用户的组 文件名/文件夹名

其他命令

获取当前日期 date

更新当前日期 date -s “yyyy-MM-dd HH:mm:ss”

查看磁盘空间 df -h

查看某一目录所占空间大小 du -h

查看进程详细信息 ps aux

查看cpu内存等使用情况 top

杀死某一进程 kill [-9] 进程号

查看内存使用率 free –h [-m/-g]

/opt目录下创建文件夹“dashuju”

在/opt/dasguju内创建10个文件,文件名为wenjian1.txt wenjian2.txt wenjian3.txt

… … wenjian10.txt

在目录/opt中,将dashuju文件夹中的内容添加到gzip格式的压缩文件dashuhu.tar.gz中

将压缩命令和过程截图发群里

img

进入 /opt/dasguju内 将文件wenjian1.txt wenjian2.txt wenjian3.txt

… … wenjian10.txt 添加到bzip2.tar.bz2 压缩文件中

将bzip2.tar.bz2的解压命令以及过程发到群里

img

添加“mingren”“woailuo”用户,属于huoying组

Mingren 密码:123321

Woailuo 密码:456654

使用mingren用户,添加新用户“kakaxi”

img

使用mingren用户在/tmp目录下创建文件1.txt, 将权限修改成rw-r-x-wx

使用woailuo用户在/tmp目录下创建文件2.txt, 文件所属组从woailuo: huoying

使用woailuo用户将系统日期修改成“2020-12-12 12:12:12”

使用woailuo用户查看系统磁盘使用情况【不显示单位】,记做截图1

查看cpu使用率 截图2,内存使用率 截图3。将三个截图截到一个图中发到群里。【添加姓名】

添加用户mignren1、mignren2、… … mingren5,所有人归属于mignren组

添加用户xiaoying1、xiaoying2、… …xiaoying5,所有人归属于xiaoying组

添加用户dou1、dou2、… …dou5,所有人归属于dou组

使用root用户创建文件huoying.txt

修改huoying.txt所属的用户和组。修改为mignren4用户,mignren组

img

修改权限使得

mignren4用户具有读写执行

mignren组所有成员具有读写权限,没有执行权限。

Xiaoying组和dou等其他组具有读权限,没有写和执行权限

img

Cut

按照字符提取 head -2 1.txt | cut -c 5

指定分隔符 head -2 1.txt | cut -d ‘:’ -f 1,2

Sort

文本排序 sort 文件名

文本排序反转 sort -r 文件名

文本排序去重 sort -u 文件名

数值按大小排序 sort -n 文件名

指定分隔符、指定排序列 sort -t ‘分隔符’ -k2nr 文件名

Wc

查看文件基本信息 wc 文件名

查看文件行数 wc – l 文件名

查看文件单词数 wc -w 文件名

查看文件字节 wc -c 文件名

查看多个文件信息 wc 文件1 文件2 文件3

Uniq

与sort连用

排序、去重 cat 5.txt | sort | uniq

排序、去重计算总数 cat 5.txt | sort | uniq -c

Tee

数据定位到多个文件 cat 5.txt | tee a.txt b.txt c.txt

Tr

小写i 替换成 echo “itheima” | tr ‘i’ ‘I’

把 HELLO 转成 小写 echo “HELLO” |tr ‘[A-Z]’ ‘[a-z]’

删除数字 echo ‘abc1d4e5f’ | tr -d ‘[0-9]’

Split

按照文件大小切分 split -b 10k 被切分的文件

按照行数进行切分 split -l 1000 被切分的文件

Awk

模糊查询 awk ‘/zhangsan|lisi/’ score.txt

按照分隔符拆分,根据角标显示

awk -F ‘,’ ‘{print $1, $2, $3}’ 1.txt

按照分隔符拆分,根据角标显示并指定分隔符

awk -F ‘,’ ’ {OFS="==="}{print $1, $2, $3}’ 1.txt

支持函数 awk -F ‘,’ ‘{print toupper($2),$3*100}’ 1.txt

If判断语句

awk -F ‘,’ ‘{if($4>60) print $1, $4, “及格”; else print $1, $4, “不及格”}’ score.txt

Shell编程

Shell 脚本的解释器

/bin/sh

/bin/bash

/sbin/nologin

/bin/dash

/bin/tcsh

/bin/csh

脚本的编写规范

首行描述解释器 #!/bin/bash

执行脚本的三种方式

1、bash 脚本名称 脚本参数

2、 sh 脚本名称 脚本参数

3、 ./脚本名称 脚本参数【./脚本名称之间没有空格】【chmod 777 脚本名称】

变量的声明

变量名=”值”【中间不能有空格】

变量名要求 字母或下划线或数字(开头不能是数字)构成

变量的引用

使用$ 或 ${}引用变量

删除变量 只读变量

删除 unset 变量名

只读 readonly 变量名

字符串使用

双引号(””):内部可以使用变量

反引号(``):表示可执行

单引号(‘’):内部所有的原样输出

字符串长度及截取

长度: echo ${#skill}

截取: echo ${str:2:2} 【在第二个字符开始截取截取两位】

脚本参数传递

bash 脚本名 参数1 参数2 参数3 。。。。。。

脚本内

$0 脚本名称

$1 参数1

$2 参数2

$n 参数n

$* 所有参数

$# 参数的个数

算数运算符

加法计算 expr 2 + 2

乘法计算 expr 2 \\* 2

流程控制if

if [ $a -gt 10 ];then

代码1

elif [ $a -lt 10 ];then

代码2

else

代码3

fi

关系运算符

大于小于大于等于小于等于等于不等于
-gt-lt-ge-le-eq-ne

循环

For 循环

For aa in XXXX

do

循环体

done

While循环

While 条件 ;

do

循环体

done

跳出循环

跳出所有循环 break

跳出当前循环,进入下一次循环 continue

case ()

case 值 in

结果1)

结果1对应的操作;;

结果2)

结果2对应的操作;;

结果3)

结果3对应的操作;;

esac

接收控制台数据

read 变量名

函数的使用

函数声明: [function] 函数名(){

函数体

$参数1

$参数2

$参数3

}

函数调用

函数名 参数1 参数2 参数3

数组

数组声明: 数组名称=(元素1 元素2 元素3 元素4)

数组的使用

单个使用 echo 数组名[角标] 【角标从0开始】

遍历数组 for var in ${my_arr[*]}

do

echo $var

done

文件加载

在文件中添加 . 脚本名称 或者 source 脚本名称

#!/bin/bash

source ./test1.sh # 加载test1.sh 的文件内容

实操部分

1、linux 服务器添加硬盘并进行分区,实现自动挂载

1、添加硬盘:在虚拟机中添加硬盘(忽略),添加后重启服务器,发现新硬盘

img

2、硬盘分区:查看硬盘 fdisk –l

img

Fdisk /dev/sdb

n

p

分区一的开始 1

分区一的结尾 自定义1

分区二的开始 自定义1+1

分区二的结尾 自定义2

w

3、磁盘格式化

mkfs -t ext4 /dev/sdc1

mkfs -t ext4 /dev/sdc2

4、硬盘挂载(临时挂载:重启linux系统后,不会挂载)

mount /dev/sdc2 /mnt/disk1/

mount /dev/sdc2 /mnt/disk2/

取消挂载

umount /mnt/disk2/

5、开机自动挂载(自动挂载:重启linux系统后,会自动挂载)

修改/etc/fstab

添加UUID=新硬件的UUID 挂载点路径 格式等

重启

其他说明

硬盘删掉后,/fstab没有删除UUID重启报错

使用 mount -o remount rw / 重新挂载,能够编辑/etc/fstab

删掉 添加UUID=新硬件的UUID

重启

光驱的挂载

目标虚拟机, 右键 设置

选中 CD/DVD, 浏览 选中本地的 centOS 镜像

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-tApR2o3c-1624768770730)(C:\\Users\\ADMINI~1\\AppData\\Local\\Temp\\ksohtml25440\\wps174.png)]img

创建目录 mkdir -p /mnt/cdrom

第一种方式挂载(仅限于VM):

挂载镜像文件 mount /dev/sr0 /mnt/cdrom

df -h

img

第二种方式挂载(上传ISO文件)

mount –o loop /tmp/CentOS-6.9-x86_64-bin-DVD1.iso /mnt/cdrom

2、软件的相关操作

安装部署

a: rpm -ivh 软件包名 【不能解决依赖问题】

b: yum install –y 软件名 【Yum解决依赖问题,用户无需关注】

查看

rpm -qa | grep 关键字(软件名)

卸载软件

rpm –e [–nodeps] 软件包名

3、 本地资源库安装部署

前提:本地需要有一个系统的ISO镜像文件 或 光盘,并且挂载到系统的某一目录(/mnt/cdrom)

进入系统目录/etc/yum.repos.d中,创建文件夹old。将目录中的所有.repo文件移动到old中。【系统自动到/etc/yum.repos.d找.repo文件】

拷贝CentOS-Media.repo 文件到/etc/yum.repos.d中,修改该文件。

[c6-media]name=CentOS-$releasever - Mediabaseurl=file:///media/CentOS/file:///media/cdrom/file:///media/cdrecorder/gpgcheck=1enabled=0gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-6

改为

[c6-media]name=CentOS-$releasever - Mediabaseurl= file:///mnt/cdrom/gpgcheck=0enabled=1

保存退出

清空yum 缓存 yum clean all

查询mysql软件包是否能找到 yum search mysql

安装mysql yum install -y mysql-server

4、网络yum源的配置过程

原理:一个节点配置资源库,其他节点通过http服务访问该节点资源,其他节点无需安装资源库。

Node01:资源库节点

Node02:其他节点

1、 在Node01安装httpd软件,并启动

a) yum install –y httpd

b) /etc/init.d/httpd status

i. /etc/init.d/httpd start

ii. /etc/init.d/httpd status

2、 到Node01节点的/var/www/html路径下,创建资源库路径的软连接

a) ln -s /mnt/cdrom /var/www/html/cdrom

b) 通过浏览器查看(关闭防火墙 /etc/init.d/iptables stop【重启系统时会启动】)防火墙开机不自启命令 chkconfig iptables off(on自启)

img

3、进入Node02节点的系统目录/etc/yum.repos.d中,创建文件夹old。将目录中的所有.repo文件移动到old中。【系统自动到/etc/yum.repos.d找.repo文件】

拷贝CentOS-Media.repo 文件到/etc/yum.repos.d中,修改该文件。

[c6-media]name=CentOS-$releasever - Mediabaseurl=file:///media/CentOS/file:///media/cdrom/file:///media/cdrecorder/gpgcheck=1enabled=0gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-6

改为

[c6-media]name=CentOS-$releasever - Mediabaseurl=http://192.168.10.132/cdromgpgcheck=0enabled=1

保存退出

清空yum 缓存 yum clean all

查询mysql软件包是否能找到 yum search mysql

安装mysql yum install -y mysql-server

5、JDK安装部署

1、软件包的上传大到/export/soft

2、加压安装包到/export/servers

tar -zxvf jdk-8u65-linux-x64.tar.gz -C /export/servers/

3、 修改系统配置创建vi /etc/profile.d/java.sh文件,添加一下内容,保存并退出

export JAVA_HOME=/export/servers/jdk1.8.0_65

export PATH= P A T H : PATH: PATH:JAVA_HOME/bin

4、使配置生效

source /etc/profile

5、更新/usr/bin/java 软链接

a) 删除/usr/bin/java链接 rm -rf /usr/bin/java

b) 创建新的软连接(将java1.8解压路径下的bin/java链接到/usr/bin/) ln -s /export/servers/jdk1.8.0_65/bin/java /usr/bin/java

6、验证是否生效

java -version

img

补充: 查看软件包安装在哪里 whereis java

查看历史所有的命令 history

6、TomCat安装部署【不用背】

1、软件包的上传与解压

tar zxvf apache-tomcat-6.0.53.tar.gz -C …/servers/

2、直接启动,并查看启动日志

./startup.sh && tail -100f …/logs/catalina.out

3、验证,在浏览器访问http://192.168.10.132:8080/

img

7、Mysql安装部署

7.1

a、安装部署 yum install -y mysql-server

b、启动mysql /etc/init.d/mysqld start

c、设置用户名密码 /usr/bin/mysqladmin -u root password ‘123456’

d、使用root登录 mysql -uroot -p123456

Mysql命令

查看数据库列表 show databases;

查看数据表 show tables;

数据库切换 use 数据库名

7.2

解决中文乱码

A: 查看当前编码集

mysql -uroot -p123456

show variables like ‘character_set_%’;

img

B:修改配置/etc/my.cnf

在/etc/my.cnf中添加一下内容

[client]default-character-set=utf8[mysql]default-character-set=utf8[mysqld]character-set-server=utf8

最终结果

img

C: 重启mysql

/etc/init.d/mysqld restart

D: 查看编码集

img

7.3 解决mysql远程连接失败

远程连接工具连接mysql报错如下

img

原因:mysql允许远程连接的服务器收到限制

修改mysql配置

A: mysql -uroot -p123456

B: mysql> use mysql

C: select host, user ,password from user;

img

D: 修改远程限制,让root用户在任意节点使用123456都能够访问

grant all privileges on *.* to ‘root’@‘%’ identified by ‘123456’ with grant option;

E: 刷新配置

flush privileges;

F: 查看最终结果

select host, user ,password from user;

img

G:再次连接

img

8、定时任务crontab

基本操作

查看已经配置的定时任务 crontab -l

编辑/添加新的定时任务 crontab -e

删除当前用户所有的任务 crontab -r

基本语法

* * * * * 命令/操作/动作

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-JQ6WXzKa-1624768770736)(C:\\Users\\ADMINI~1\\AppData\\Local\\Temp\\ksohtml25440\\wps187.jpg)]

9、时钟同步

A:与阿里云同步 ntpdate ntp4.aliyun.com

B: 局域网内部与某一个节点同步

1、 服务节点安装ntpd软件,并启动。

2、 修改配置/etc/ntp.conf

a) 解开第18行的注释,并将网段设置正确restrict 192.168.10.0 mask 255.255.255.0 nomodify notrap

b) 注释掉第22-25行#server 0.centos.pool.ntp.org iburst

#server 1.centos.pool.ntp.org iburst

#server 2.centos.pool.ntp.org iburst

#server 3.centos.pool.ntp.org iburst

c) 在文档最后 添加两个设置server 127.127.1.0

fudge 127.127.1.0 stratum 10

3、 修改配置文件/etc/sysconfig/ntpd保证Bios与系统时间同步 添加SYNC_HWLOCK=yes ,保存退出

4、 重启ntpd 服务/etc/init.d ntpd restart

5、 到其他节点执行同步命令ntpdate 192.168.10.132(时钟同步服务器的IP)

6、验证

10、集群部署及无密码访问

1、部署多台服务器(linux系统)

2、修改每个节点的主机名 /etc/sysconfig/network

img

注意:重启后生效

3、配置ip [动态或者静态]

4、配置每个主机的 主机名和IP的对应关系 /etc/hosts

img

5、验证

img

远程拷贝命令

scp [-r] 文件/文件夹 目标节点:/目标路径

scp /export/aaa/01.txt root@192.168.100.202:/export

scp /export/aaa/02.txt root@hadoop02:/export

scp /export/aaa/02.txt hadoop02:/export

scp /export/aaa/02.txt hadoop02:/$PWD

11、无密码登录

方式一

1、生成公钥私钥 ssh-keygen + 回车 回车 回车 回车

公钥私钥所在的路径 /root/.ssh

img

2、将公钥内的内容写入到目标服务器(免密码登录的节点)内的/root/.ssh/authorized_keys文件内(没有authorized_keys自己创建)

authorized_keys用户存储可以登录本节点的所有公钥

img

3、验证(无密码登录)

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-sNB48NIP-1624768770740)(C:\\Users\\ADMINI~1\\AppData\\Local\\Temp\\ksohtml25440\\wps193.jpg)]

方式二

1、生成公钥私钥 ssh-keygen + 回车 回车 回车 回车

公钥私钥所在的路径 /root/.ssh

2、ssh-copy-id 目标节点主机名/ip

img

3、验证(无密码登录)

img

003_大数据基础_随堂笔记_终版

什么是大数据

数据集(数据量)的大小已经超过了现有传统数据库软件的计算、处理能力的数据就是大数据

现有传统数据库软件

MysqlSQL (一亿) SQLServer Oracle(十亿) DB2

大数据的特点(4v)

海量化:数据量庞大 Tb是基本单位

多样化:数据类型比较多。例如:结构化数据(关系型数据库)、半结构化数据、非结构化数据

快速化:数据量的增长速度非常快

高价值:海量数据中含有的价值比少量数据更高。

本质:少量数据是微观角度,海量数据是宏观角度。宏观角度看待数据相对更真实。

大数据能做什么

前提:在海量数据的背景下

1、 海量数据的快速查询

2、 海量数据的存储

3、 海量数据的快速计算

4、 海量数据的实时计算

5、 海量数据的数据挖掘大数据从事的岗位

1、ETL工程师

2、数据仓库工程师

3、大数据开发工程师

4、Hadoop工程师

5、Spark/Flink工程师

6、大数据分析师

7、大数据算法工程师

8、大数据运维工程师

9、大数据解决方案

学习的技术

img

大数据项目流程

1、 数据生产

2、 数据收集

3、 数据存储

4、 需求分析

5、 数据预处理

6、 数据计算

7、 结果数据存储

8、 结果数据展示什么是服务器

也称伺服器,是一种高性能计算机,提供计算服务的设备。

服务器的类型

用途

通用性和专用型服务器

按机箱划分

1U 2U 4U 价值2w-15w

塔式服务器

刀片机

小型机 价值几百万

大型机 价值几千万

硬盘的划分

机械硬盘

SSD固态硬盘

混合硬盘

RAID

RAID0: 物理层连不做备份(冗余)空间使用率100%

RAID1: 两块硬盘做一个Raid1,物理层连做一份数据备份,空间使用率50%

什么是集群

集群是一组相互独立的、通过高速计算机网络互联的计算机,它们构成了一个组,并以单一系统的模式加以管理。一个客户与集群相互作用时,集群像是一个独立的服务器。

什么是网络

计算机网络是指 将地理位置不同的具有独立功能的多台计算机及其外部设备,通过通信线路连接起来,在网络操作系统,网络管理软件及网络通信协议的管理和协调下,实现资源共享和信息传递的计算机系统。

什么是交换机

交换机(Switch)意为“开关”是一种用于电(光)信号转发的网络设备。

什么是局域网

局域网是指在某一区域内由多台计算机互联成的计算机组

什么是网络拓扑

网络拓扑(Network Topology)结构是指用传输介质互连各种设备的物理布局

类型

以太网

优点:价格低廉、随处可见、软件支持比较丰富

缺点:网络传输时延时较大,吞吐量较小

适用场景:构建常用的局域网络

InfiniBand网络

优点:吞吐量高,速度快、延时低

缺点:价格昂贵,软件支持比较少

适用场景:在高速网络环境中适用

和谐号复兴号为什么那么快

1、和谐号分布式动力。每节车厢都有动力

004_HDFS_随堂笔记_10-12

*复制网卡的配置*

第一种方式:配置文件向识别的网卡兼容

4、 通过一个主机复制出多个主机

5、 开启复制的主机,启动时选择“复制”img

6、 启动后查看IP ifconfig

img

查看系统识别的网卡

Ifconfig -a

img

这里ifconfig看不到IP 是因为系统识别的设备名称与系统配置文件不同导致。

配置文件名称img

解决方案:

修改配置文件名为系统识别的名称(将eth0改为eth1)

img

修改eth1内的配置

img

保存退出,重启网卡(报错)

img

错误原因:VM软件为新系统分配了新的mac地址,配置文件中还是原始的。两个不匹配

查看系统分配的mac地址,并记录。

img

方案:将配置文件中的历史的mac改为新的Mac地址

img

重启网卡

img

查看IP ifconfig

img

第二种方式:识别的网卡向配置文件兼容

通过一个主机复制出多个主机

开启复制的主机,启动时选择“复制”

img

启动后

查看IP ifconfig

img

查看系统识别的网卡

Ifconfig -a

img

这里ifconfig看不到IP 是因为系统识别的设备名称与系统配置文件不同导致。

配置文件名称[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-RHFWR9Jz-1624768770748)(C:\\Users\\ADMINI~1\\AppData\\Local\\Temp\\ksohtml25440\\wps211.jpg)]

方案:让系统识别的eth1变为eth0

第一步:修改配置文件[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ZLqDKjxr-1624768770748)(C:\\Users\\ADMINI~1\\AppData\\Local\\Temp\\ksohtml25440\\wps212.jpg)]\\

文件中有两个配置,删除其中任意一个,修改剩下的一个配置将address改为系统新分配的mac地址,将NAME改成eth0,保存退出

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-5iuXk5Cj-1624768770748)(C:\\Users\\ADMINI~1\\AppData\\Local\\Temp\\ksohtml25440\\wps213.jpg)]

第二步:修改配置文件[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-dXl5Rgks-1624768770749)(C:\\Users\\ADMINI~1\\AppData\\Local\\Temp\\ksohtml25440\\wps214.jpg)]中的mac地址为系统重新分配的地址。保存退出

第三步:重启系统 reboot

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-nnUOcH6h-1624768770749)(C:\\Users\\ADMINI~1\\AppData\\Local\\Temp\\ksohtml25440\\wps215.jpg)]

004_HDFS_随堂笔记_10-12

传统数据与大数据的对比

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-LnKkEXxm-1624768770749)(C:\\Users\\ADMINI~1\\AppData\\Local\\Temp\\ksohtml25440\\wps216.jpg)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-MX7yZ18K-1624768772937)(C:\\Users\\ADMINI~1\\AppData\\Local\\Temp\\ksohtml25440\\wps217.png)]

传统Linux系统与大数据linux系统安装的区别

传统

系统硬盘(与数据硬盘100%隔离)

两块硬盘做一个RAID1

引导分区 200M

交换分区 内存的两倍

根分区 /(所有的空间)

数据硬盘

多个硬盘制作一个逻辑卷,即将多个物理硬盘制作成一个大的逻辑硬盘

大数据

系统硬盘

两块硬盘做一个RAID1

引导分区 200M

交换分区 可以不设置或设置的很小。因为在大数据中需要将其关闭

根分区 /(所有的空间)

数据硬盘

多个硬盘,每个硬盘独立挂载,有多少个硬盘,挂载多少个目录

数据硬盘优先不做RAID,必须做时,做RAID0

做RAID: 优点:数据的读写效率稍高,缺点:不支持热插拔。一个硬盘损坏,整个服务器需要全部关机再能处理该硬盘。不做RAID: 优点:支持热插拔。硬盘损坏即把即插。不用关机。缺点:数据的读写效率稍低。

传统数据与大数据处理方式对比

img

大数据技术快的原因

1、分布式存储

2、分布式并行计算

3、移动程序到数据端

4、更前卫、更先进的实现思路

5、更细分的业务场景

6、更先进的硬件技术+更先进的软件技术

img

img

Hadoop发展史

Hadoop之父 Doug Cutting

2003-2004年 谷歌发布了三篇论文,Doug Cutting基于这三篇论文进行了实现,构成了hadoop的原型。

img

Hadoop三大公司

1、 apache

2、 hortonWorks

3、 Cloudera

4、 星环科技(国内)

创建三台虚拟机

主机名 node01、node02、node03

Ip 自己定

磁盘大小50G

Hadoop集群安装部署

1、 服务器主机名和IP配置(三台)

2、 修改每个主机的/etc/hosts文件,添加IP和主机名的对应关系(三台)

3、 管理节点到从节点配置无密码登录

4、 配置jdk 1.8(三台)

5、 关闭防火墙(三台)

6、 关闭selinux(三台)vi /etc/selinux/config

SELINUX=enforcing à SELINUX=disabled

重启系统

安装流程

1、 上传软件包到管理节点,在管理节点解压并配置

2、 将修改完的解压包,远程拷贝到所有的从节点

3、 启动软件Hadoop安装部署

1、 软件包上传并解压

a) tar -zxvf hadoop-2.6.0-cdh5.14.0-with-centos6.9.tar.gz -C …/servers/

2、 第二步查看hadoop支持的压缩方式以及本地库

a) ./hadoop checknativeimg

b) 安装opensslyum -y install openssl-devel

./hadoop checknative

img

3、 修改配置文件

a) core-site.xml

b) hdfs-site.xml

c) Hadoop-env.sh (不用改)

d) mapred-site.xml

i. cp mapred-site.xml.template mapred-site.xml

ii. 修改

e) yarn-site.xml

f) slaves

4、 创建文件夹

mkdir -p /export/servers/hadoop-2.6.0-cdh5.14.0/hadoopDatas/tempDatasmkdir -p /export/servers/hadoop-2.6.0-cdh5.14.0/hadoopDatas/namenodeDatasmkdir -p /export/servers/hadoop-2.6.0-cdh5.14.0/hadoopDatas/datanodeDatas mkdir -p /export/servers/hadoop-2.6.0-cdh5.14.0/hadoopDatas/dfs/nn/editsmkdir -p /export/servers/hadoop-2.6.0-cdh5.14.0/hadoopDatas/dfs/snn/namemkdir -p /export/servers/hadoop-2.6.0-cdh5.14.0/hadoopDatas/dfs/nn/snn/edits

5、安装包的分发

scp -r hadoop-2.6.0-cdh5.14.0/ node02:$PWD

scp -r hadoop-2.6.0-cdh5.14.0/ node03:$PWD

6、配置hadoop环境变量

a) 创建文件/etc/profile.d/hadoop.sh 并编辑export HADOOP_HOME=/export/servers/hadoop-2.6.0-cdh5.14.0

export PATH= P A T H : PATH: PATH:HADOOP_HOME/bin

b) source /etc/profile

7、 启动集群

a) 格式化集群在第一个节点执行 hadoop namenode -format

img

b) 启动

i. 每个组件独立启动

\\1. 启动namenode node01节点 ./hadoop-daemon.sh start namenode

\\2. 启动datanode node01、02、03节点 ./hadoop-daemon.sh start datanode

\\3. 启动resourcemanager node01节点 ./yarn-daemon.sh start resourcemanager

\\4. 启动nodemanager node01、02、03节点 ./yarn-daemon.sh start nodemanager

ii. 单独启动

\\1. 单独启动HDFS : ./start-dfs.sh 关闭 ./stop-dfs.sh

\\2. 单独启动Yarn : ./start-yarn.sh 关闭 ./stop-yarn.sh

iii. 一键启动所有启动: ./start-all.sh 关闭:./stop-all.sh

8、浏览器查看启动页面

http://主节点ip:50070

img

http://主节点ip:8088

img

Hadoop集群初体验

数据的上传

创建文件夹:hadoop fs -mkdir /BD19

查看文件夹内容: hadoop fs -ls /BD19

上传数据:hadoop fs -put XXX.txt /BD19

大数据计算

计算pi 3.141592653……

hadoop jar /export/servers/hadoop-2.6.0-cdh5.14.0/share/hadoop/mapreduce/

hadoop-mapreduce-examples-2.6.0-cdh5.14.0.jar pi 10 100

img

img

img

img

img

背诵次数:

读的遍数(全部):

⭐⭐⭐

截止时间:

10月29日

1、传统数据与大数据的对比****⭐

img

2、大数据服务器安装规范

系统硬盘

两块硬盘做一个RAID1

引导分区 200M

交换分区 可以不设置或设置的很小。因为在大数据中需要将其关闭

根分区 /(所有的空间)

数据硬盘

多个硬盘,每个硬盘独立挂载,有多少个硬盘,挂载多少个目录

数据硬盘优先不做RAID,必须做时,做RAID0

做RAID: 优点:数据的读写效率稍高,缺点:不支持热插拔。一个硬盘损坏,整个服务器需要全部关机再能处理该硬盘。不做RAID: 优点:支持热插拔。硬盘损坏即把即插。不用关机。缺点:数据的读写效率稍低。

3、传统数据与大数据处理方式对比****⭐

img

4、大数据技术快的原因****⭐⭐⭐

1、分布式存储

2、分布式并行计算

3、移动程序到数据端

4、更前卫、更先进的实现思路

5、更细分的业务场景

6、更先进的硬件技术+更先进的软件技术

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-DjbCmTvY-1624768770757)(C:\\Users\\ADMINI~1\\AppData\\Local\\Temp\\ksohtml25440\\wps237.png)]分一个

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-1kE6oNN4-1624768770758)(C:\\Users\\ADMINI~1\\AppData\\Local\\Temp\\ksohtml25440\\wps238.png)]

5、Hadoop内部组成⭐⭐⭐

HDFS: 海量数据的存储

MapReduce: 海量数据****的离线计算

Yarn: 集群资源调度

6、HDFS全称****⭐⭐

Hadoop Distribute File System 即 Hadoop分布式文件系统

主要作用:即存储海量数据

为什么能存储海量数据??

因为其空间大,空间大的原因为服务器多、磁盘多。且支持扩展

7、HDFS组成部分****⭐⭐

管理者-Master NameNode 集群中有1-2个,用于管理集群中的工作者

工作者-Slave DataNode 集群中有多个 用于存储计算数据

辅助管理 SecondaryNameNode 集群中有0-1 只负责辅助NameNode管理工作

8、HDFS存储数据的方式****⭐

以数据块的方式存储数据。默认一个数据块128M,该数值可以修改。

注意:这里的128仅仅是切分数据的阈值。

一个大的数据被切分成多个小的128M的数据块,分别存储在集群多个节点的不同位置。

数据副本机制

数据副本默认是3份。

一个数据存储到HDFS后,数据自动复制两份,共三份(三分相同的数据-数据冗余)

9、数据副本存放机制****⭐⭐

第一个副本在客户端所在的节点(客户端也是集群内的节点),若客户端在集群外,那么根据一定的计算规则选一个节点。

第二份副本,在与第一份相同机柜,且不在同一个服务器的节点上。

第三份与第一份第二份不在同一个机柜,且逻辑距离(网络拓扑)最近的机柜选择一个节点存储。

10、什么是名字空间****⭐⭐⭐

名字空间:HDFS文件系统的目录树,目录结构。

11、NameNode的作用****⭐⭐⭐

1、 维护目录树,维护命名空间。

2、 负责确定指定的文件块到具体的Datanode结点的映射关系。(在客户端与Datanode之间共享数据)3、管理Datanode结点的状态报告

12、DataNode的作用****⭐⭐⭐

1、 负责管理它所在结点上存储的数据的读写,及存储数据。

2、 向Namenode结点报告DataNode节点的状态。

3、 通过流水线复制实现三份数据副本,

13、HDFS写入数据的流程****⭐⭐

img

1、 client发起文件上传请求,通过RPC与NameNode建立通讯,NameNode检查目标文件是否已存在,父目录是否存在,返回是否可以上传;

2、 client请求第一个block该传输到哪些DataNode服务器上;

3、 NameNode根据配置文件中指定的备份数量及机架感知原理进行文件分配,返回可用的DataNode的地址如:A,B,C;

4、 client请求3台DataNode中的一台A上传数据(本质上是一个RPC调用,建立pipeline),A收到请求会继续调用B,然后B调用C,将整个pipeline建立完成,后逐级返回client;

5、 client开始往A上传第一个block(先从磁盘读取数据放到一个本地内存缓存),以packet为单位(默认64K),A收到一个packet就会传给B,B传给C;A每传一个packet会放入一个应答队列等待应答。

6、 数据被分割成一个个packet数据包在pipeline上依次传输,在pipeline反方向上,逐个发送ack(命令正确应答),最终由pipeline中第一个DataNode节点A将pipelineack发送给client;

7、关闭输出流。

8、 当一个block传输完成之后,client再次请求NameNode上传第二个block到服务器。

14、HDFS读取数据的流程****⭐

img

1、客户端通过调用FileSystem对象的open()来读取希望打开的文件。

2、 Client向NameNode发起RPC请求,来确定请求文件block所在的位置;

3、 NameNode会视情况返回文件的部分或者全部block列表,对于每个block,NameNode 都会返回含有该 block 副本的 DataNode 地址; 这些返回的 DN 地址,会按照集群拓扑结构得出 DataNode 与客户端的距离,然后进行排序,排序两个规则:网络拓扑结构中距离 Client 近的排靠前;心跳机制中超时汇报的 DN 状态为 STALE,这样的排靠后;

4、 Client 选取排序靠前的 DataNode 来读取 block,如果客户端本身就是DataNode,那么将从本地直接获取数据(短路读取特性);

5、 底层上本质是建立 Socket Stream(FSDataInputStream),重复的调用父类 DataInputStream 的 read 方法,直到这个块上的数据读取完毕;

6、并行读取,若失败重新读取

7、 当读完列表的 block 后,若文件读取还没有结束,客户端会继续向NameNode 获取下一批的 block 列表;

8、返回后续block列表

9、 最终关闭读流,并将读取来所有的 block 会合并成一个完整的最终文件。

15、数据校验****⭐⭐⭐

img

1、 数据第一次写入成功后,会进行数据校验,获得校验和。

2、 数据读取前,对数据进行校验,获得校验和,计算得到的校验和与第一次上传后的校验和进行对比。

3、 两个校验和相同表示数据相同,可以提读取数据

4、 两个校验和不相同表示数据不相同,节点去其他节点读取

5、 数据节点周期进行校验和计算,防止数据丢失。16、DataNode节点丢失周期 ⭐⭐⭐

DataNode节点长时间没有给NameNode汇报心跳,NameNode认为其丢失。

长时间(10分钟+30秒): 2 * 超时时间 + 10 * 心跳周期

17、HDFS适用场景****⭐⭐⭐

1、 海量数据存储

2、 高容错

3、 商用廉价的硬件

4、 存储大文件

5、 一次写入多次读取18、HDFS不适用场景****⭐⭐

1、 查询时效性要求低延迟的场景

2、 大量小文件。

3、 需要频繁修改数据的场景

4、 多个用户同时操作一个文件19、Fsimage,Edits的作用⭐⭐⭐

Fsimage,Edits用于永久存储HDFS文件系统的镜像和操作日志。集群在二次启动时,使用Fsimage,Edits将集群状态恢复到集群关闭前的状态。

20、secondarynameNode如何辅助管理FSImage与Edits文件****⭐⭐⭐****

img

1、 secnonaryNN通知NameNode切换editlog,生成edits.new

2、secondaryNN从NameNode中获得FSImage和editlog(通过http方式),将FSImage载入内存,然后开始合并editlog,合并之后成为新的fsimage

3、secondaryNN将新的fsimage.ckpt发回给NameNode

4、NameNode用新的fsimage.ckpt替换旧的fsimage

5、NameNode用新的edits.new替换旧的edits

21、SecondaryNamenode存在的意义是什么?****⭐⭐⭐⭐****

一:进行Fsimage和Edits的合并操作,减少edits日志大小,加快集群的启动速度

二:将Fsimage与Edits进行备份,防止丢失

22、SecondaryNamenode工作的触发因素有哪些?****⭐⭐⭐****

1.时间维度,默认一小时触发一次 dfs.namenode.checkpoint.period :3600

2.次数维度,默认100万次触发一次 dfs.namenode.checkpoint.txns : 1000000

3、六十秒判断一次是否达到100W

23、使用SNN还原NN****⭐⭐⭐****

1、 记录NN存储FSimage和Edits_Log的路径

2、 记录SNN存储FSimage和Edits_Log的路径

3、 删掉NN的FSimage和Edits_Log模拟数据丢失

4、 将SNN的FSimage和Edits_Log复制到NN的FSimage和Edits_Log对应的目录下,

5、 启动集群进行验证注意:SNN的FSimage和Edits_Log和NN的FSimage和Edits_Log不要混用

24、什么时候进入安全模式?****⭐⭐⭐****

1、在集群重启(二次启动)的时候进入安全模式,状态持续30s

2、人为进入

25、安全模式有什么特点?****⭐⭐⭐****

安全模式中只能读取数据,不能修改数据(增、删、改)

26、在安全模式下集群在做什么?****⭐⭐⭐****

1、在安全模式下集群在进行恢复元数据,即在合并fsimage和edits log

2、接受datanode的心跳信息,恢复block的位置信息。

27、被添加到集群的新节点需要做哪些准备?****⭐⭐⭐****

1.配置JDK

2.配置SSH免密钥

3.关闭防火墙

4.关闭selinux

5.修改主机名

6.修改hosts

28、添加新节点到集群****⭐⭐****

a) 在hadoop配置文件路径中创建dfs.hosts(白名单:可以和NN通信的所有节点)文件,并添加可以通信的所有DataNode

b) 在hdfs-site.xml中添加一下配置

dfs.hosts /export/servers/hadoop-2.6.0-cdh5.14.0/etc/hadoop/dfs.hosts

c) 刷新NameNode和ResourceManager

i. hdfs dfsadmin –refreshNodes

ii. yarn rmadmin –refreshNodes

d) 启动新节点的DataNode 和NodeManager
sbin/hadoop-daemon.sh start datanodesbin/yarn-daemon.sh start nodemanager

e) 在Slaves中添加新节点

f) 验证

g) 负载均衡29、集群删除节点⭐⭐

a) 创建黑名单文件 dfs.hosts.exclude 并添加需要退役的节点

b) 在hdfs-site.xml中添加一下配置

dfs.hosts.exclude/export/servers/hadoop-2.6.0-cdh5.14.0/etc/hadoop/dfs.hosts.exclude

c) 刷新集群NameNode 和ResourceManager

i. hdfs dfsadmin -refreshNodes

ii. yarn rmadmin –refreshNodes

d) 在白名单中删掉退役的节点

e) 在slaves文件中删除掉退役的节点

f) 负载均衡30 HA执行流程⭐⭐

1、集群启动NN和NN,每个NN都会有一个ZKFC,每个zkfc到Zookeeper上争抢一个临时节点,哪个优先抢占到了这个临时节点,哪个就是Active,没有抢到的就是standby ,同时变为standby的ZKFC会申请临时节点的watch,监控临时节点的状态,(若节点发生变化,表示Active出现异常)

\\2. HA方案中有两个NN,一个是ANN,一个是SNN,每个NN都会有一个ZKFC,ZKFC的作用是监控NN健康状态和与Zookeeper 保持连接,ANN 的链接就是申请临时节点的链接。SNN的链接就是链接的watch。3、当ActiveNN出现异常,Active状态的ZKFC得知异常后断开与Zookeeper的链接,此时ZK上的临时节点就会消失。StandbyZKFC收到zk的断开信息,通知standbyNN, standbyNN远程登录到原始activeNN节点,强行killNN进程。

4、通知standbyZKFC抢占Zookeeper上的临时节点,抢占成功,将状态从standby变为active

5、当原始activeNN重新恢复后,优先到Zokeeper上申请临时节点,此时已被申请,他只能申请临时节点的watch充当standbyNN角色。

资料:

img

img

31 Zookeeper 节点类型及相应特点****⭐⭐****

临时节点:会话结束,节点消失,不能有子节点

永久节点:和会话没有关系,可以有子节点

序列节点:在给定的文件名后追加序列号(序列号依次递增)

32 Zookeeper 增删改查 shell命令****⭐⭐****

创建

Create [-s 序列] [-e 临时节点] 路径 数据

Create -e /dashuju12 dashuju12

以上是关于Hadoop(HDFS+MapReduce+Hive+数仓基础概念)学习笔记(自用)的主要内容,如果未能解决你的问题,请参考以下文章

Hadoop中MapReduce计算框架以及HDFS可以干点啥

初学Hadoop之图解MapReduce与WordCount示例分析

Hadoop-2.6.0分布式单机环境搭建HDFS讲解Mapreduce示例

Hadoop之分布式存储HDFS和离线计算MapReduce 网盘分享 百度云

Hadoop核心架构HDFS+MapReduce+Hbase+Hive内部机理详解

Hadoop核心架构HDFS+MapReduce+Hbase+Hive内部机理详解