Hadoop
大数据特点(4V)
1、Volume(大量)
2、Velocity(告诉)
3、Variety(多样)
4、Value(低价值密度)
hadoop的优势
高可靠性:多个数据副本,不会导致数据丢失
高扩展性:横向扩展
高效性:Hadoop并行工作,加快处理速度
高容错性:能够自动将失败的任务重新分配
一、Hadoop组成(重点)
1.x HDFS(数据存储)+ MapReduce(计算 + 资源调度) + Common(辅助工具)
2.x HDFS(数据存储)+ MapReduce(计算)+ Yarn(资源调度)+ Common(辅助工具)
解偶
Modules
The project includes these modules:
- Hadoop Common: The common utilities that support the other Hadoop modules.
- Hadoop Distributed File System (HDFS™): A distributed file system that provides high-throughput access to application data.
- Hadoop YARN: A framework for job scheduling and cluster resource management.
- Hadoop MapReduce: A YARN-based system for parallel processing of large data sets.
- Hadoop Ozone: An object store for Hadoop.
HDFS架构
HDFS(Hadoop Distributed File System)
1.NameNode(nn): 存储文件的 元数据,如文件名、文件目录结构,文件属性(生成时间、副本数、文件权限),以及每个文件的块列表和块所在的DataNode等。
2.DataNode(dn): 在本地文件系统存储文件块数据,以及块数据的校验和。
——真实数据
3.Secondary NameNode(2nn): 每隔一段时间对NameNode元数据备份。
——辅助NameNode工作,不能替换
YARN架构
1.ResourceManager(RM) ——管理集群中所有资源(每个DataNode上的资源)
(1)处理客户端请求
(2)启动或监控ApplicationMaster
(3)监控Nodemanager
(4)资源的分配和调度
2.NodeManager(NM) ——管理单个节点的资源(单个DataNode资源)
(1)管理单个节点上的资源
(2)处理来自ResourceManager的命令
(3)处理来自ApplicationMaster的命令
3.ApplicationMaster(AM) ——每个MapReduce(MR)任务会启动一个MrAppMaster, 负责为MapReduce向ResourceManager申请资源(MrAppMaster是AM的子类)
(1)负责数据的切分
(2)为应用程序申请资源并分配给内部的任务
(3)任务的监控与容错
4.Container:——对资源的封装,防止资源被侵占
Containe是YARN中的资源抽象,它封装了某个节点上的多维度资源,如内存、CPU、磁盘、网络等
举例:
运行一个MapReduce任务,MapReduce需要启动2个MapTask 和 1个 ReduceTask,也就是总共3个Task
首先会启动一个MrAppMaster ,需要用到资源,假如2G内存,此时RM会在有资源的NM上分配资源,运行MrAppMaster[此时就有1个container]
接下来 MrAppMaster 会根据MapReduce的情况, 比如需要总共启动3个Task , MrAppMaster会向RM申请资源,假如
一个Task需要1G的内存, RM会在有资源的NM上分配, 来运行Task. 每个Task单独运行,占用1G内存。此时又有3个Container
需要解释的是 MrAppMaster和所有的Task可以运行在不同的服务器.
最后当所有的Task都运行完成后,MrAppMaster会想RM注销自己,RM回收资源。
MapReduce架构
MapReduce将计算过程分为两个阶段:Map和Reduce
1)Map阶段并行处理输入数据
2)Reduce阶段对Map结果进行汇总
大数据生态体系
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-FhGJIfeB-1587564742487)(/Users/vanas/Library/Application Support/typora-user-images/截屏2020-04-08下午6.44.05.png)]
二、Hadoop运行环境搭建(开发重点)
虚拟机环境准备
根据前两篇 设置 然后继续
1)虚拟机配置要求如下:
单台虚拟机:内存4G,硬盘50G,安装必要环境(最小化安装)
补充安装各种指令、
sudo yum install -y epel-release
sudo yum install -y psmisc nc net-tools rsync vim lrzsz ntp libzstd openssl-static tree iotop
修改克隆虚拟机的静态IP(按照自己机器的网络设置进行修改)
sudo vim /etc/sysconfig/network-scripts/ifcfg-ens33
2)修改主机名:
修改主机名称
sudo vim /etc/hostname
配置主机名称映射,打开/etc/hosts
sudo vim /etc/hosts
3)关闭防火墙
sudo systemctl stop firewalld
sudo systemctl disable firewalld
4)创建用户
sudo useradd vanas
sudo passwd 123456
5)配置用户具有root权限
sudo vi /etc/sudoers
修改/etc/sudoers文件,找到下面一行(91行),在root下面添加一行,如下所示:
## Allow root to run any commands anywhere
root ALL=(ALL) ALL
Vanas ALL=(ALL) NOPASSWD:ALL
主机联动host映射文件之前已经写好就不用再改了
切换用户
su vanas
6)在/opt目录下创建文件夹
注意目前用户已经不是root
在/opt目录下创建module、software文件夹
sudo mkdir module
sudo mkdir software
修改module、software文件夹的所有者
sudo mkdir /opt/module /opt/software
sudo chown vanas:vanas /opt/module /opt/software
记得重启
reboot
安装JDK
-
将JDK安装包上传到Linux /opt/software目录下
-
解压JDK到/opt/module目录下
tar -zxvf jdk-8u212-linux-x64.tar.gz -C /opt/module/
3)配置JDK环境变量
新建/etc/profile.d/my_env.sh文件
sudo vim /etc/profile.d/my_env.sh
#JAVA_HOME
JAVA_HOME=/opt/module/jdk1.8.0_212
PATH=$PATH:$JAVA_HOME/bin
export PATH JAVA_HOME
保存后退出
:wq
- 测试JDK是否安装成功
source /etc/profile
java -version
安装Hadoop
Hadoop下载地址:https://archive.apache.org/dist/hadoop/common/hadoop-3.1.3/
-
将hadoop安装包上传到/opt/software目录下
-
解压安装文件到/opt/module下面
tar -zxvf hadoop-3.1.3.tar.gz -C /opt/module/
- 查看是否解压成功
ls /opt/module/
hadoop-3.1.3
- 将Hadoop添加到环境变量
获取Hadoop安装路径
pwd
/opt/module/hadoop-3.1.3
打开/etc/profile.d/my_env.sh文件(shift+g)
#JAVA_HOME
JAVA_HOME=/opt/module/jdk1.8.0_212
#HADOOP_HOME
HADOOP_HOME=/opt/module/hadoop-3.1.3
PATH=$PATH:$JAVA_HOME/bin:$HADOOP_HOME/bin:$HADOOP_HOME/sbin
export PATH JAVA_HOME HADOOP_HOME
保存后退出
:wq
让修改后的文件生效
source /etc/profile
- 测试是否安装成功
hadoop version
Hadoop 3.1.3
- 重启(如果Hadoop命令不能用再重启)
sync
sudo reboot
伪分布式
启动HDFS
(1)配置集群
[vanas@hadoop132 ~]$ cd /opt/
[vanas@hadoop132 opt]$ cd module/hadoop-3.1.3/etc/hadoop/
[vanas@hadoop132 hadoop]$ vim hadoop-env.sh
export JAVA_HOME=/opt/module/jdk1.8.0_212
[vanas@hadoop132 hadoop]$ vim core-site.xml
<!-- 指定HDFS中NameNode的地址 -->
<property>
<name>fs.defaultFS</name>
<value>hdfs://hadoop132:9820</value>
</property>
<!-- 指定Hadoop运行时产生文件的存储目录 -->
<property>
<name>hadoop.tmp.dir</name>
<value>/opt/module/hadoop-3.1.3/data/tmp</value>
</property>
[vanas@hadoop132 hadoop]$ vim hdfs-site.xml
<!-- 指定HDFS副本的数量 -->
<property>
<name>dfs.replication</name>
<value>1</value>
</property>
格式化后多处data 和logs
[vanas@hadoop132 hadoop]$ cd ..
[vanas@hadoop132 etc]$ cd ..
[vanas@hadoop132 hadoop-3.1.3]$ ll
总用量 204
drwxr-xr-x. 2 vanas vanas 4096 9月 12 2019 bin
drwxr-xr-x. 3 vanas vanas 4096 9月 12 2019 etc
drwxr-xr-x. 2 vanas vanas 4096 9月 12 2019 include
drwxrwxr-x. 2 vanas vanas 4096 4月 8 16:43 input
drwxr-xr-x. 3 vanas vanas 4096 9月 12 2019 lib
drwxr-xr-x. 4 vanas vanas 4096 9月 12 2019 libexec
-rw-rw-r--. 1 vanas vanas 147145 9月 4 2019 LICENSE.txt
-rw-rw-r--. 1 vanas vanas 21867 9月 4 2019 NOTICE.txt
-rw-rw-r--. 1 vanas vanas 1366 9月 4 2019 README.txt
drwxr-xr-x. 3 vanas vanas 4096 9月 12 2019 sbin
drwxr-xr-x. 4 vanas vanas 4096 9月 12 2019 share
[vanas@hadoop132 hadoop-3.1.3]$ hdfs namenode -format
[vanas@hadoop132 hadoop-3.1.3]$ ll
总用量 212
drwxr-xr-x. 2 vanas vanas 4096 9月 12 2019 bin
drwxrwxr-x. 3 vanas vanas 4096 4月 10 09:49 data
drwxr-xr-x. 3 vanas vanas 4096 9月 12 2019 etc
drwxr-xr-x. 2 vanas vanas 4096 9月 12 2019 include
drwxrwxr-x. 2 vanas vanas 4096 4月 8 16:43 input
drwxr-xr-x. 3 vanas vanas 4096 9月 12 2019 lib
drwxr-xr-x. 4 vanas vanas 4096 9月 12 2019 libexec
-rw-rw-r--. 1 vanas vanas 147145 9月 4 2019 LICENSE.txt
drwxrwxr-x. 2 vanas vanas 4096 4月 10 09:49 logs
-rw-rw-r--. 1 vanas vanas 21867 9月 4 2019 NOTICE.txt
-rw-rw-r--. 1 vanas vanas 1366 9月 4 2019 README.txt
drwxr-xr-x. 3 vanas vanas 4096 9月 12 2019 sbin
drwxr-xr-x. 4 vanas vanas 4096 9月 12 2019 share
(2)启动、测试集群增、删、查
注意:jps是JDK中的命令,不是Linux命令。不安装JDK不能使用jps
[vanas@hadoop132 hadoop-3.1.3]$ hdfs --daemon start namenode
[vanas@hadoop132 hadoop-3.1.3]$ hdfs --daemon start datanode
[vanas@hadoop132 hadoop-3.1.3]$ jps
14027 Jps
13149 NameNode
13694 DataNode
[vanas@hadoop132 hadoop-3.1.3]$ hdfs dfs -mkdir /input
[vanas@hadoop132 hadoop-3.1.3]$ hdfs dfs -put input/my.txt /input
[vanas@hadoop132 hadoop-3.1.3]$ hdfs dfs -ls /
Found 1 items
drwxr-xr-x - vanas supergroup 0 2020-04-10 11:57 /input 1
[vanas@hadoop132 hadoop-3.1.3]$ hadoop jar share/hadoop/mapreduce/hadoop-mapreduce-examples-3.1.3.jar wordcount /input /output
web端查看HDFS文件系统
http://hadoop132:9870
启动YARN并运行MapReduce程序
(1)配置集群在YARN上运行MR
[vanas@hadoop132 logs]$ cd ..
[vanas@hadoop132 hadoop-3.1.3]$ cd etc/hadoop/
[

2569

被折叠的 条评论
为什么被折叠?



