一起重新开始学大数据-hadoop篇-Day44-Hadoop、hdfs概述架构简析,Hadoop集群搭建 |
科普环节
概念、名词科普
- Apache基金会
是专门为支持开源软件项目而办的一个非盈利性组织 - 服务器(节点)
可以理解为我们的一台笔记本/台式机
在这里可以认为是我们的一台虚拟机
后面学习中,我们会把一台服务器称为一个节点 - 机架
负责存放服务器的架子
Hadoop概述:
Hadoop是一个适合海量数据的分布式存储和分布式计算的平台。 |
作者Doug Cutting 受Google三篇论文的启发,开发了hadoop。
- Google FS
- MapReduce
- BigTable
hadoop三大组件
hadoop
是一个统称,目前hadoop主要包含三大组件
hdfs
:是一个分布式存储框架,适合海量数据存储
mapreduce
:是一个分布式计算框架,适合海量数据计算
yarn
:是一个资源调度平台,负责给计算框架分配计算资源
分布式存储
-
HDFS具有主从架构。
-
HDFS集群由单个名称节点组成,主服务器管理文件系统名称空间并控制客户机对文件的访问。此外,还有许多数据节点,通常是集群中每个节点一个,它们管理连接到运行它们的节点的存储。
分布式存储介绍
- 在分布式存储系统中,分散在不同节点中的数据可能属于同一个文件。
- 为了组织众多的文件,把文件可以放到不同的文件夹中,文件夹可以一级一级的包含。我们把这种组织形式称为命名空间(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
- jdk1.8
java -version
-
修改主机名
三台分别执行 vim /etc/hostname 并将内容指定为对应的主机名
-
关闭防火墙:
systemctl stop firewalld
- 查看防火墙状态:
systemctl status firewalld
- 取消防火墙自启:
systemctl disable firewalld
- 查看防火墙状态:
-
静态IP配置
-
直接使用图形化界面配置(不推荐)
-
手动编辑配置文件进行配置
1、编辑网络配置文件 vim /etc/sysconfig/network-scripts/ifcfg-ens33 TYPE=Ethernet BOOTPROTO=static HWADDR=00:0C:29:E2:B8:F2 NAME=ens33 DEVICE=ens33 ONBOOT=yes IPADDR=192.168.190.100 GATEWAY=192.168.190.2 NETMASK=255.255.255.0 DNS1=192.168.190.2 DNS2=223.6.6.6 需要修改:HWADDR(mac地址) IPADDR(根据自己的网段,自定义IP地址) GATEWAY(根据自己的网段填写对应的网关地址) 2、关闭NetworkManager,并取消开机自启 systemctl stop NetworkManager systemctl disable NetworkManager 3、重启网络服务 systemctl restart network
-
-
免密登录
①生成密钥
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的主从复制和集群搭建
下一章-hadoop篇-Day45-hdfs解析和zookeeper安装
|
|
|
|
|
听说长按大拇指👍会发生神奇的事情呢!好像是下面的画面,听说点过的人🧑一个月内就找到了对象的💑💑💑,并且还中了大奖💴$$$,考试直接拿满分💯,颜值突然就提升了😎,虽然对你好像也不需要,是吧,吴彦祖🤵! |