一起重新开始学大数据-hadoop篇-Day44-Hadoop、hdfs概述架构简析,Hadoop集群搭建 |
? ? ? ? ?
科普环节
概念、名词科普
- Apache基金会
是专门为支持开源软件项目而办的一个非盈利性组织 - 服务器(节点)
可以理解为我们的一台笔记本/台式机 在这里可以认为是我们的一台虚拟机 后面学习中,我们会把一台服务器称为一个节点 - 机架
负责存放服务器的架子
Hadoop概述:
Hadoop是一个适合海量数据的分布式存储和分布式计算的平台。 |
作者Doug Cutting 受Google三篇论文的启发,开发了hadoop。
- Google FS
- MapReduce
- BigTable
hadoop三大组件
hadoop 是一个统称,目前hadoop主要包含三大组件 hdfs :是一个分布式存储框架,适合海量数据存储 mapreduce :是一个分布式计算框架,适合海量数据计算 yarn :是一个资源调度平台,负责给计算框架分配计算资源
分布式存储
分布式存储介绍
- 在分布式存储系统中,分散在不同节点中的数据可能属于同一个文件。
- 为了组织众多的文件,把文件可以放到不同的文件夹中,文件夹可以一级一级的包含。我们把这种组织形式称为命名空间(namespace)。命名空间管理着整个服务器集群中的所有文件。
- 集群中不同的节点承担不同的职责。
- 负责命名空间职责的节点称为主节点(master node)
- 负责存储真实数据职责的节点称为从节点(slave node)。
- 主节点负责管理文件系统的文件结构,从节点负责存储真实的数据,称为主从式结构(master-slaves)。
- 用户操作时,应该先和主节点打交道,查询数据在哪些从节点上存储,然后再到从节点读取。
- 在主节点上,为了加快用户访问的速度,会把整个命名空间信息都放在内存中,当存储的文件越多时,那么主节点就需要越多的内存空间。
- 在从节点存储数据时,有的原始数据文件可能很大,有的可能很小,大小不一的文件不容易管理,那么可以抽象出一个独立的存储文件单位,称为块(block)。
- 数据存放在集群中,可能因为网络原因或者节点硬件原因造成访问失败,最好采用副本(replication)机制,把数据同时备份到多台节点中,这样数据就安全了,数据丢失或者访问失败的概率就小了。
hdfs架构分析
- 负责数据的分布式存储
- 主从结构
- 主节点,可以有2个:namenode
- 从节点,有多个:datanode
- namenode负责
- 接收用户操作请求,是用户操作的入口
- 维护文件系统的目录结构,称作命名空间
- datanode负责
mapreduce架构分析
- 依赖磁盘io的批处理计算模型
- 主从结构
- 主节点,只有一个: MRAppMaster
- 从节点,就是具体的task
- MRAppMaster负责
- 接收客户端提交的计算任务
- 把计算任务分给NodeManager的Container中执行,即任务调度
- Container是YARN中资源的抽象,它封装了某个节点上一定量的资源(CPU和内存两类资源)
- Container由ApplicationMaster向ResourceManager申请的,由ResouceManager中的资源调度器异步分配给ApplicationMaster
- Container的运行是由ApplicationMaster向资源所在的NodeManager发起的
- 监控Container中Task的执行情况
- Task负责:
hadoop特点
- 扩容能力(Scalable):能可靠(reliably)地存储和处理PB级别的数据。如果数据量更大,存储不下了,再增加节点就可以了。
- 成本低(Economical):可以通过普通机器组成的服务器集群来分发以及处理数据.这些服务器集群可达数千个节点。
- 高效率(Efficient):通过分发计算程序,hadoop可以在数据所在节点上(本地)并行地(parallel)处理他们,这使得处理非常的迅速
- 可靠性(Reliable):hadoop能够自动地维护数据的多份副本,并且在任务失败后能够自动地重新部署(redeploy)计算任务.
? ? ? ? ? ? ? ?
Hadoop集群搭建(分布式版本)
一、准备工作
-
三台虚拟机:master、node1、node2 -
时间同步
1.安装chrony
yum install chrony
2.启用
systemctl start chronyd
systemctl enable chronyd
3.设置时区
timedatectl set-timezone Asia/Shanghai
4.启用NTP同步
timedatectl set-ntp yes
java -version
-
修改主机名 三台分别执行 vim /etc/hostname 并将内容指定为对应的主机名
-
关闭防火墙:systemctl stop firewalld
- 查看防火墙状态:
systemctl status firewalld - 取消防火墙自启:
systemctl disable firewalld -
静态IP配置
-
免密登录 ①生成密钥 ssh-keygen -t rsa ②配置免密登录 ssh-copy-id master ssh-copy-id node1 ssh-copy-id node2 ③测试免密登录 ssh node1 -
配置好映射文件:/etc/hosts 192.168.190.100 master
192.168.190.101 node1
192.168.190.102 node2
二、搭建Hadoop集群
1、上传安装包并解压
使用xftp上传压缩包至master的/usr/local/soft/packages/
cd /usr/local/soft/packages/ 解压 tar -zxvf hadoop-2.7.6.tar.gz -C /usr/local/soft/
2、配置环境变量
vim /etc/profile
JAVA_HOME=/usr/local/soft/jdk1.8.0_171
HADOOP_HOME=/usr/local/soft/hadoop-2.7.6
export PATH=$JAVA_HOME/bin:$HADOOP_HOME/bin:$HADOOP_HOME/sbin:$PATH
重新加载环境变量 source /etc/profile
3、修改Hadoop配置文件
-
cd /usr/local/soft/hadoop-2.7.6/etc/hadoop/ -
core-site.xml <property>
<name>fs.defaultFS</name>
<value>hdfs://master:9000</value>
</property>
<property>
<name>hadoop.tmp.dir</name>
<value>/usr/local/soft/hadoop-2.7.6/tmp</value>
</property>
<property>
<name>fs.trash.interval</name>
<value>1440</value>
</property>
-
hadoop-env.sh export JAVA_HOME=/usr/local/soft/jdk1.8.0_171
-
hdfs-site.xml <property>
<name>dfs.replication</name>
<value>1</value>
</property>
<property>
<name>dfs.permissions</name>
<value>false</value>
</property>
-
mapred-site.xml.template # 1、重命名文件
cp mapred-site.xml.template mapred-site.xml
# 2、修改
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
<property>
<name>mapreduce.jobhistory.address</name>
<value>master:10020</value>
</property>
<property>
<name>mapreduce.jobhistory.webapp.address</name>
<value>master:19888</value>
</property>
-
slaves node1
node2
-
yarn-site.xml <property>
<name>yarn.resourcemanager.hostname</name>
<value>master</value>
</property>
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
<property>
<name>yarn.log-aggregation-enable</name>
<value>true</value>
</property>
<property>
<name>yarn.log-aggregation.retain-seconds</name>
<value>604800</value>
</property>
4、分发Hadoop到node1、node2
cd /usr/local/soft/
scp -r hadoop-2.7.6/ node1:`pwd`
scp -r hadoop-2.7.6/ node2:`pwd`
5、格式化namenode(第一次启动的时候需要执行)
hdfs namenode -format
6、启动Hadoop集群
start-all.sh
7、检查master、node1、node2上的进程
-
master: [root@master soft]# jps
2597 NameNode
2793 SecondaryNameNode
2953 ResourceManager
3215 Jps
-
node1: [root@node1 jdk1.8.0_171]# jps
11361 DataNode
11459 NodeManager
11559 Jps
-
node2: [root@node2 ~]# jps
11384 DataNode
11482 NodeManager
11582 Jps
8、访问HDFS的WEB界面
http://master:50070
9、访问YARN的WEB界面
http://master:8088
| | | |
上一章-hadoop先导篇-Day43-Redis的主从复制和集群搭建 下一章-随缘更新 | | | | |
听说长按大拇指👍会发生神奇的事情呢!好像是下面的画面,听说点过的人🧑一个月内就找到了对象的💑💑💑,并且还中了大奖💴$$$,考试直接拿满分💯,颜值突然就提升了😎,虽然对你好像也不需要,是吧,吴彦祖🤵! |
|