Hadoop(HDFS+MapReduce+Hive+数仓基础概念)学习笔记(自用)
Posted ChinaManor
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Hadoop(HDFS+MapReduce+Hive+数仓基础概念)学习笔记(自用)相关的知识,希望对你有一定的参考价值。
修改虚拟机IP
*复制网卡的配置*
第一种方式:配置文件向识别的网卡兼容
1、 通过一个主机复制出多个主机
2、 开启复制的主机,启动时选择“复制”
3、 启动后查看IP ifconfig
查看系统识别的网卡
Ifconfig -a
这里ifconfig看不到IP 是因为系统识别的设备名称与系统配置文件不同导致。
配置文件名称
解决方案:
修改配置文件名为系统识别的名称(将eth0改为eth1)
修改eth1内的配置
保存退出,重启网卡(报错)
错误原因:VM软件为新系统分配了新的mac地址,配置文件中还是原始的。两个不匹配
查看系统分配的mac地址,并记录。
方案:将配置文件中的历史的mac改为新的Mac地址
重启网卡
查看IP ifconfig
第二种方式:识别的网卡向配置文件兼容
通过一个主机复制出多个主机
开启复制的主机,启动时选择“复制”
启动后
查看IP ifconfig
查看系统识别的网卡
Ifconfig -a
这里ifconfig看不到IP 是因为系统识别的设备名称与系统配置文件不同导致。
配置文件名称
方案:让系统识别的eth1变为eth0
第一步:修改配置文件\\
文件中有两个配置,删除其中任意一个,修改剩下的一个配置将address改为系统新分配的mac地址,将NAME改成eth0,保存退出
第二步:修改配置文件中的mac地址为系统重新分配的地址。保存退出
第三步:重启系统 reboot
002_Linux_随堂笔记_终版
操作系统
Windows 10
操作系统的分类
* 桌面操作系统
* 服务器操作系统
* 嵌入式操作系统
* 移动设备操作系统
桌面操作系统
* Window 系列
* macOS
* Linux
服务器操作系统
Linux
Windows Server
嵌入式操作系统
Linux
Linux创始人
林纳斯 托瓦兹
脱发兹
linux是开源免费
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 [参数] 关键字 文件名
编辑 ???????
其他
当前所在的目录 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
压缩命令
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文件中】
修改权限
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中
将压缩命令和过程截图发群里
进入 /opt/dasguju内 将文件wenjian1.txt wenjian2.txt wenjian3.txt
… … wenjian10.txt 添加到bzip2.tar.bz2 压缩文件中
将bzip2.tar.bz2的解压命令以及过程发到群里
添加“mingren”“woailuo”用户,属于huoying组
Mingren 密码:123321
Woailuo 密码:456654
使用mingren用户,添加新用户“kakaxi”
使用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组
修改权限使得
mignren4用户具有读写执行
mignren组所有成员具有读写权限,没有执行权限。
Xiaoying组和dou等其他组具有读权限,没有写和执行权限
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、添加硬盘:在虚拟机中添加硬盘(忽略),添加后重启服务器,发现新硬盘
2、硬盘分区:查看硬盘 fdisk –l
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)]
创建目录 mkdir -p /mnt/cdrom
第一种方式挂载(仅限于VM):
挂载镜像文件 mount /dev/sr0 /mnt/cdrom
df -h
第二种方式挂载(上传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自启)
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
补充: 查看软件包安装在哪里 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/
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_%’;
B:修改配置/etc/my.cnf
在/etc/my.cnf中添加一下内容
[client]default-character-set=utf8[mysql]default-character-set=utf8[mysqld]character-set-server=utf8
最终结果
C: 重启mysql
/etc/init.d/mysqld restart
D: 查看编码集
7.3 解决mysql远程连接失败
远程连接工具连接mysql报错如下
原因:mysql允许远程连接的服务器收到限制
修改mysql配置
A: mysql -uroot -p123456
B: mysql> use mysql
C: select host, user ,password from user;
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;
G:再次连接
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
注意:重启后生效
3、配置ip [动态或者静态]
4、配置每个主机的 主机名和IP的对应关系 /etc/hosts
5、验证
远程拷贝命令
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
2、将公钥内的内容写入到目标服务器(免密码登录的节点)内的/root/.ssh/authorized_keys文件内(没有authorized_keys自己创建)
authorized_keys用户存储可以登录本节点的所有公钥
3、验证(无密码登录)
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-sNB48NIP-1624768770740)(C:\\Users\\ADMINI~1\\AppData\\Local\\Temp\\ksohtml25440\\wps193.jpg)]
方式二
1、生成公钥私钥 ssh-keygen + 回车 回车 回车 回车
公钥私钥所在的路径 /root/.ssh
2、ssh-copy-id 目标节点主机名/ip
3、验证(无密码登录)
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、大数据解决方案
学习的技术
大数据项目流程
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、 开启复制的主机,启动时选择“复制”
6、 启动后查看IP ifconfig
查看系统识别的网卡
Ifconfig -a
这里ifconfig看不到IP 是因为系统识别的设备名称与系统配置文件不同导致。
配置文件名称
解决方案:
修改配置文件名为系统识别的名称(将eth0改为eth1)
修改eth1内的配置
保存退出,重启网卡(报错)
错误原因:VM软件为新系统分配了新的mac地址,配置文件中还是原始的。两个不匹配
查看系统分配的mac地址,并记录。
方案:将配置文件中的历史的mac改为新的Mac地址
重启网卡
查看IP ifconfig
第二种方式:识别的网卡向配置文件兼容
通过一个主机复制出多个主机
开启复制的主机,启动时选择“复制”
启动后
查看IP ifconfig
查看系统识别的网卡
Ifconfig -a
这里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: 优点:支持热插拔。硬盘损坏即把即插。不用关机。缺点:数据的读写效率稍低。
传统数据与大数据处理方式对比
大数据技术快的原因
1、分布式存储
2、分布式并行计算
3、移动程序到数据端
4、更前卫、更先进的实现思路
5、更细分的业务场景
6、更先进的硬件技术+更先进的软件技术
Hadoop发展史
Hadoop之父 Doug Cutting
2003-2004年 谷歌发布了三篇论文,Doug Cutting基于这三篇论文进行了实现,构成了hadoop的原型。
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 checknative
b) 安装opensslyum -y install openssl-devel
./hadoop checknative
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
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
http://主节点ip:8088
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
背诵次数:
读的遍数(全部):
⭐⭐⭐
截止时间:
10月29日
1、传统数据与大数据的对比****⭐
2、大数据服务器安装规范
系统硬盘
两块硬盘做一个RAID1
引导分区 200M
交换分区 可以不设置或设置的很小。因为在大数据中需要将其关闭
根分区 /(所有的空间)
数据硬盘
多个硬盘,每个硬盘独立挂载,有多少个硬盘,挂载多少个目录
数据硬盘优先不做RAID,必须做时,做RAID0
做RAID: 优点:数据的读写效率稍高,缺点:不支持热插拔。一个硬盘损坏,整个服务器需要全部关机再能处理该硬盘。不做RAID: 优点:支持热插拔。硬盘损坏即把即插。不用关机。缺点:数据的读写效率稍低。
3、传统数据与大数据处理方式对比****⭐
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写入数据的流程****⭐⭐
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读取数据的流程****⭐
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、数据校验****⭐⭐⭐
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文件****⭐⭐⭐****
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角色。
资料:
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 网盘分享 百度云