点进来看看什么是真小白 hadoop的第一天
了解hadoop的生态圈
(1)Sqoop:Sqoop 是一款开源的工具,主要用于在Hadoop、Hive 与传统的数据库(MySQL)间进行数据的传递,可以将一个关系型数据库(例如 :MySQL,Oracle 等)中的数据导进到Hadoop 的HDFS 中,也可以将HDFS 的数据导进到关系型数据库中。
(2)Flume:Flume 是一个高可用的,高可靠的,分布式的海量日志采集、聚合和传输的系统,Flume 支持在日志系统中定制各类数据发送方,用于收集数据。
(3)Kafka:Kafka 是一种高吞吐量的分布式发布订阅消息系统。
(4)Spark:Spark 是当前最流行的开源大数据内存计算框架。可以基于Hadoop 上存储的大数据进行计算。
(5)Flink:Flink 是当前最流行的开源大数据内存计算框架。用于实时计算的场景较多。
(6)Oozie:Oozie 是一个管理Hadoop 作业(job)的工作流程调度管理系统。
(7)Hbase:HBase 是一个分布式的、面向列的开源数据库。HBase 不同于一般的关系数据库,它是一个适合于非结构化数据存储的数据库。
(8)Hive:Hive 是基于Hadoop 的一个数据仓库工具,可以将结构化的数据文件映射为一张数据库表,并提供简单的SQL 查询功能,可以将SQL 语句转换为MapReduce 任务进行运行。其优点是学习成本低,可以通过类SQL 语句快速实现简单的MapReduce 统计,不必开发专门的MapReduce 应用,十分适合数据仓库的统计分析。
(9)ZooKeeper:它是一个针对大型分布式系统的可靠协调系统,提供的功能包括:配置维护、名字服务、分布式同步、组服务等。
spark的生态圈
(1)Spark Core:Spark核心,提供底层框架及核心支持。包含Spark的基本功能,包括任务调度、内存管理、容错机制等。
(2)BlinkDB:一个用于在海量数据上运行交互式SQL查询的大规模并行查询引擎。
(3)Spark SQL:可以执行SQL查询,包括基本的SQL语法和HiveQL语法。
(4)Spark Streaming:流式计算。
(5)MLBase:专注于机器学习,让机器学习的门槛更低,让一些可能并不了解机器学习的用户也能方便地使用MLBase。
(6)MLlib:MLBase的一部分,MLlib是Spark的数据挖掘算法库,实现了一些常见的机器学习算法和实用程序,包括分类、回归、聚类、协同过滤、降维以及底层优化。
(7)GraphX:内置了很多的图相关算法。
(8)SparkR:SparkR是AMPLab发布的一个R开发包,使得R摆脱单机运行的命运,可以作为Spark的Job运行在集群上,极大地扩展了R的数据处理能力。
mapreduce和spark的区别
- mkapreduce是基于硬盘的迭代
- spark是基于内存
所以,spark的运行速度比mapreduce快。
硬盘的迭代是指的技术的不断更新,提升了可存储,读写,可靠性。一般来说,硬盘的迭代会带来更高的性能,更大的容量
mapreduce和spark运行框架对比
mapreduce的运行框架
有五个步骤:(Map,Sort,Combine,Shuffle,Reduce)map和reduce是最重要的两个步骤
- Map步骤是在不同的机器上独立且同步运行的。主要目的是要把数据转换为key-value的形式
- Reduce步骤是做聚合运算,它是在不同机器上独立且同步运行的
- Map 和 Reduce 中间夹杂着一步数据移动,也就是 shuffle,这步操作会涉及数量巨大的网络传输,需要大量的时间
- 由于 MapReduce 的框架限制,一个 MapReduce 任务只能包含一次 Map 和一次 Reduce,计算完成之后,MapReduce 会将运算结果写回到磁盘中(更准确地说是分布式存储系统)供下次计算使用。
- 在MapReduce 框架下,数据的格式都是key-value 形式
Spark的运行框架
- Spark框架的核心是一个计算引擎,整体来说,它采用了标准的master-slave的结构。
- 三个主要组件组成:Driver节点、Cluster Manager和Executor节点。
- Driver节点是应用程序的入口点,它负责解析用户的应用程序代码,并将任务划分成一系列的任务,以及在集群上为任务安排调度。Driver节点负责管理各个任务之间的依赖关系,并将它们转换成一个可执行的物理执行计划
- Cluster Manager负责在集群中为应用程序分配资源。它可以是Standalone,YARN或Mesos等。
- Executor节点负责在工作节点上执行任务。每个Executor都运行在自己的JVM进程中,并且为应用程序分配了一定数量的内存和CPU资源。Executor在运行过程中负责接收和执行任务。
区别
- spark把运算的中间数据(shuffle阶段产生的数据)存放在内存,迭代计算效率更高,mapreduce的中间结果需要落地,保存到磁盘
- Spark容错性高,它通过弹性分布式数据集RDD来实现高效容错。
- Spark更通用,提供了transformation和action这两大类的多功能api,另外还有流式处理sparkstreaming模块、图计算等等,mapreduce只提供了map和reduce两种操作,流计算及其他的模块支持比较缺乏 。
- Spark计算框架对内存的利用和运行的并行度比mapreduce高,Spark运行容器为executor,内部ThreadPool中线程运行一个Task,mapreduce在线程内部运行container,container容器分类为MapTask和ReduceTask.程序运行并行度高
需要的基础linux命令
pwd
[root@hmm opt]# pwd
/opt
ls
[root@hmm opt]# ls
containerd hadoop.txt
cd
[root@hmm ~]# cd ..
[root@hmm /]# cd ~
[root@hmm ~]# cd -
/
mkdir
[root@hmm /]# mkdir 0503
[root@hmm /]# ls
0503 boot etc lib media opt root sbin sys usr
bin dev home lib64 mnt proc run srv tmp var
rm
[root@hmm /]# ls
0503 boot etc lib media opt root sbin sys usr
bin dev home lib64 mnt proc run srv tmp var
[root@hmm /]# rm -rf 0503/
[root@hmm /]# ls |grep 0503
···
### cp
```bash
[root@hmm /]# cd /opt/
[root@hmm opt]# ls
containerd hadoop.txt
[root@hmm opt]# cp hadoop.txt /root/hmmmmm
[root@hmm opt]# ls /root/hmmmmm
/root/hmmmmm
cat
[root@hmm opt]# cat hadoop.txt
yun3 hmm
tar
[root@hmm opt]# tar -cvf hmm.tar hadoop.txt
hadoop.txt
[root@hmm opt]# ls
containerd f g hadoop.txt hmm.tar
[root@hmm opt]# ls
containerd hadoop.txt hmm.tar
useradd
[root@hmm opt]# useradd hmm
passwd
[root@hmm opt]# passwd hmm
Changing password for user hmm.
New password:
BAD PASSWORD: The password is shorter than 8 characters
Retype new password:
passwd: all authentication tokens updated successfully.
chown
[root@hmm opt]# chown hmm:root hadoop.txt
[root@hmm opt]# ll hadoop.txt
-rwxrwxrwx 1 hmm root 9 Mar 8 17:34 hadoop.txt
chmod
[root@hmm opt]# ls
containerd hadoop.txt hmm.tar
[root@hmm opt]# chmod 777 hadoop.txt
[root@hmm opt]# ll
total 16
drwx--x--x. 4 root root 28 Mar 5 16:57 containerd
-rwxrwxrwx 1 root root 9 Mar 8 17:34 hadoop.txt
-rw-r--r-- 1 root root 10240 Mar 8 17:37 hmm.tar
su
[root@hmm opt]# su hmm
[hmm@hmm opt]$ who
root tty1 2024-03-08 17:25
root pts/0 2024-03-08 17:27 (192.168.130.1)
vim
[root@hmm opt]# vim hadoop.txt
yun3 hmm
clear
[root@hmm opt]# clear
hostname
[root@hmm opt]# hostname
hmm
hostnamectl
[root@hmm opt]# hostname
hmm
[root@hmm opt]# hostnamectl set-hostname hmmm
[root@hmm opt]# bash
[root@hmmm opt]#
ip
[root@hmmm opt]# ip a show ens33
2: ens33: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
link/ether 00:0c:29:3d:66:01 brd ff:ff:ff:ff:ff:ff
inet 192.168.130.101/24 brd 192.168.130.255 scope global noprefixroute ens33
valid_lft forever preferred_lft forever
inet6 fe80::51a2:e08c:264f:1c70/64 scope link noprefixroute
valid_lft forever preferred_lft forever
[root@hmmm opt]#
systemctl
[root@hmmm opt]# systemctl stop firewalld
[root@hmmm opt]# systemctl status firewalld
● firewalld.service - firewalld - dynamic firewall daemon
Loaded: loaded (/usr/lib/systemd/system/firewalld.service; disabled; vendor preset: enabled)
Active: inactive (dead)
Docs: man:firewalld(1)
[root@hmmm opt]# systemctl start firewalld
[root@hmmm opt]# systemctl status firewalld
● firewalld.service - firewalld - dynamic firewall daemon
Loaded: loaded (/usr/lib/systemd/system/firewalld.service; disabled; vendor preset: enabled)
Active: active (running) since Fri 2024-03-08 17:50:40 CST; 1s ago
Docs: man:firewalld(1)
Main PID: 1585 (firewalld)
Tasks: 2
Memory: 24.7M
CGroup: /system.slice/firewalld.service
└─1585 /usr/bin/python -Es /usr/sbin/firewalld --nofork --nopid
Mar 08 17:50:39 hmmm systemd[1]: Starting firewalld - dynamic firewall daemon...
Mar 08 17:50:40 hmmm systemd[1]: Started firewalld - dynamic firewall daemon.
[root@hmmm opt]# systemctl enable firewalld
Created symlink from /etc/systemd/system/dbus-org.fedoraproject.FirewallD1.service to /usr/lib/systemd/system/firewalld.service.
Created symlink from /etc/systemd/system/multi-user.target.wants/firewalld.service to /usr/lib/systemd/system/firewalld.service.
export
[root@hmmm opt]# export -p
declare -x HISTCONTROL="ignoredups"
declare -x HISTSIZE="1000"
declare -x HOME="/root"
declare -x HOSTNAME="hqs-docker"
declare -x LANG="en_US.UTF-8"
declare -x LESSOPEN="||/usr/bin/lesspipe.sh %s"
declare -x LOGNAME="root"
declare -x LS_COLORS="rs=0:di=01;34:ln=01;36:mh=00:pi=40;33:so=01;35:do=01;35:bd=40;33;01:cd=40;33;01:or=40;31;01:mi=01;05;37;41:su=37;41:sg=30;43:ca=30;41:tw=30;42:ow=34;42:st=37;44:ex=01;32:*.tar=01;31:*.tgz=01;31:*.arc=01;31:*.arj=01;31:*.taz=01;31:*.lha=01;31:*.lz4=01;31:*.lzh=01;31:*.lzma=01;31:*.tlz=01;31:*.txz=01;31:*.tzo=01;31:*.t7z=01;31:*.zip=01;31:*.z=01;31:*.Z=01;31:*.dz=01;31:*.gz=01;31:*.lrz=01;31:*.lz=01;31:*.lzo=01;31:*.xz=01;31:*.bz2=01;31:*.bz=01;31:*.tbz=01;31:*.tbz2=01;31:*.tz=01;31:*.deb=01;31:*.rpm=01;31:*.jar=01;31:*.war=01;31:*.ear=01;31:*.sar=01;31:*.rar=01;31:*.alz=01;31:*.ace=01;31:*.zoo=01;31:*.cpio=01;31:*.7z=01;31:*.rz=01;31:*.cab=01;31:*.jpg=01;35:*.jpeg=01;35:*.gif=01;35:*.bmp=01;35:*.pbm=01;35:*.pgm=01;35:*.ppm=01;35:*.tga=01;35:*.xbm=01;35:*.xpm=01;35:*.tif=01;35:*.tiff=01;35:*.png=01;35:*.svg=01;35:*.svgz=01;35:*.mng=01;35:*.pcx=01;35:*.mov=01;35:*.mpg=01;35:*.mpeg=01;35:*.m2v=01;35:*.mkv=01;35:*.webm=01;35:*.ogm=01;35:*.mp4=01;35:*.m4v=01;35:*.mp4v=01;35:*.vob=01;35:*.qt=01;35:*.nuv=01;35:*.wmv=01;35:*.asf=01;35:*.rm=01;35:*.rmvb=01;35:*.flc=01;35:*.avi=01;35:*.fli=01;35:*.flv=01;35:*.gl=01;35:*.dl=01;35:*.xcf=01;35:*.xwd=01;35:*.yuv=01;35:*.cgm=01;35:*.emf=01;35:*.axv=01;35:*.anx=01;35:*.ogv=01;35:*.ogx=01;35:*.aac=01;36:*.au=01;36:*.flac=01;36:*.mid=01;36:*.midi=01;36:*.mka=01;36:*.mp3=01;36:*.mpc=01;36:*.ogg=01;36:*.ra=01;36:*.wav=01;36:*.axa=01;36:*.oga=01;36:*.spx=01;36:*.xspf=01;36:"
declare -x MAIL="/var/spool/mail/root"
declare -x OLDPWD
declare -x PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin"
declare -x PWD="/opt"
declare -x SHELL="/bin/bash"
declare -x SHLVL="3"
declare -x SSH_CLIENT="192.168.130.1 2282 22"
declare -x SSH_CONNECTION="192.168.130.1 2282 192.168.130.101 22"
declare -x SSH_TTY="/dev/pts/0"
declare -x TERM="xterm"
declare -x USER="root"
declare -x XDG_RUNTIME_DIR="/run/user/0"
declare -x XDG_SESSION_ID="2"
echo
[root@hmmm opt]# echo 'this is echo' >> hadoop.txt
[root@hmmm opt]# cat hadoop.txt
yun3 hmm
this is echo
[root@hmmm opt]#
source
[root@hmmm opt]# source /etc/profile
结构化数据和非结构化数据
- 结构化数据
结构化的数据是指可以使用关系型数据库表示和存储,表现为二维形式的数据。一般特点是:数据以行为单位,一行数据表示一个实体的信息,每一行数据的属性是相同的
- 非结构化数据
非结构化数据 顾名思义,就是没有固定结构的数据。各种文档、图片、视频/音频等都属于非结构化数据。对于这类数据,我们一般直接整体进行存储,而且一般存储为二进制的数据格式
冷备,热备和温备
- 冷 备:在服务器处于不可访问模式或完全关闭时进行,无法操作数据。
- 热 备:在数据库正常读取和修改数据时进行,几乎不会中断对数据的操作。
- 温 备:备份时允许应用程序读取数据,但不允许修改数据。