hadoop基础知识(一)
- 一、Hadoop安装配置及运行机制
- 1.分布式系统设计的思想(|)
- 2.Hadoop概念、版本、历史(|)
- 3.Hadoop伪分布、集群模式的安装配置步骤(|、||、|||)
- 4.Hadoop参数格式及参数的修改和优化(||)
- 5.Hadoop的安全模式(||)
- 6.通过命令行和浏览器观察Hadoop的运行状态(|)
一、Hadoop安装配置及运行机制
1.分布式系统设计的思想(|)
(1)分布式系统设计的两大思路为中心化和去中心化。
中心化:中心化的设计思想在自然界和人类生活中是如此的普遍和自然,它的设计思想也很简单,分布式集群中的节点按照角色分工,可以分为两种角色–“领导”和“干活的”,中心化的一个思路就是“领导”通常分发任务并监督“干活的”,谁空闲了就给它安排任务,谁病倒了就一脚踢出去,然后把它的任务分给其他人;中心化的另一个思路是领导只负责生成任务而不再指派任务,由每个“干活的”自发去领任务。
去中心化:全球IP互联网就是一个典型的去中心化的分布式控制架构,联网的任意设备宕机都只会影响很小范围的功能。去中心化设计通常没有“领导”和“干活的”,角色一样,地位平等,因此不存在单点故障。实际上,完全意义的去中心化分布式系统并不多见,很多看起来是去中心化但工作机制采用了中心化设计思想的分布式系统正在不断涌现,在这种架构下,集群中的领导是动态选择出来的,而不是人为预先指定的,而且在集群发生故障的情况下,集群的成员会自发举行会议选举新的领导。典型案例如:zookeeper、以及Go语言实现的Etcd。
(2)CAP理论
(3)BASE定理
2.Hadoop概念、版本、历史(|)
(1)概念
Hadoop 是一个由 Apache 基金会所开发的分布式系统基础架构,它可以使用户在不了解分布式底层细节的情況下开发分布式程序,充分利用集群的威力进行高速运算和存储。
它解決了两大问题:大数据存储、大数据分析。也就是 Hadoop 的两大核心:HDFS 和 MapReduce。
hadoop生态圈:泛指大数据技术相关的开源组件或产品,如hdfs、yarn、hbase、hive、spark、pig、zookeeper、kafka、flume、phoenix、sqoop
(2)版本
①1.0
HDFS:仅有一个NameNode,虽然可以通过SecondaryNameNode进行NameNode备份,但有延时情况,若NameNode死亡,部分数据还未备份,则会存在资源数据缺失。
MapReduce:结构简单,有一个JobTracker和多个TaskTracker,但JobTracker工作过多。(1.1:负责接收客户端的计算任务,同时要把任务分发给TaskTracker进行执行;1.2:通过心跳机制来管理TaskTracker节点的运行情况。)
②2.0
HDFS:增加了HDFS HA机制和HDFS Federation,前者解决单点故障问题,可进行热备份;后者支持多个名称节点共同运行。
MapReduce:增加了YARN框架,把JobTracker资源分配和作业控制分开,利用Resource Manager在namenode上进行资源管理调度,利用ApplicationMaster进行任务管理和任务监控。由NodeManager替代TaskTracker进行具体任务的执行
③3.0
java运行环境升级为1.8,对之前低版本的Java不在支持。
HDFS3.0支持数据的擦除编码,调高存储空间的使用率。
一些默认端口的改变。
增加一些MapReduce的调优
资料出处:link
(3)历史
参考资料:
①link
②link
3.Hadoop伪分布、集群模式的安装配置步骤(|、||、|||)
(1)Ubuntu系统伪分布式:link
(2)CentOS集群模式搭建:link
因为之前搭建的试验记录找不到了,所以这里直接放大佬们链接啦~
4.Hadoop参数格式及参数的修改和优化(||)
在Hadoop搭建过程中,主要涉及四个需要配置的文件:
core-site.xml、yarn-site.xml、hdfs-site.xml、mapred-site.xml。
(1)配置参数格式为:
<configuretion> #下面包括多组property
<property>
<name>…</name> #属性名称
<value>…</value> #属性值
<final>…</final> #表示配置项固定不变,不常出现
<description>…</description> #对属性的描述
</property>
</configuretion>
(2)常用参数及优化解释:
core-site.xml
参数名 | 参数值 | 参数解释 |
---|---|---|
fs.default.name | hdfs://主机名:端口 (常用hdfs://master:9000) | NameNode的URL |
hadoop.tmp.dir | 路径(常放在Hadoop包下的hdfs下的tmp) | hadoop临时路径 |
io.file.buffer.size | 硬件页面大小的倍数(在Intel x86上是4096,可修改) | 缓冲区大小 |
fs.checkpoint.period | 时间,单位为分钟(默认1小时,即60) | 两次相邻checkpoint之间的时间间隔 |
fs.checkpoint.size | 默认为64MB | 设置一个edits文件大小的阈值,达到这个阈值,就强制执行一此checkpoint(即使没有达到period的时限) |
详细参数参考:link
yarn-site.xml:
参数名 | 参数值 | 参数解释 |
---|---|---|
yarn.resourcemanager.address | 主机名:端口(默认值:hostname:8032) | 客户端访问地址 |
yarn.resourcemanager.sheduler.address | 主机名:端口(默认值:hostname:8030) | applicationmaster访问地址,资源调度地址 |
yarn.resourcemanager.webapp.address | 主机名:端口(默认值:hostname:8088) | web服务访问地址 |
yarn.resourcemanager.resource-tracker.address | 主机名:端口(默认值:hostname:8031) | nodemanager访问地址 |
yarn.resourcemanager.admin.address | 主机名:端口(默认值:hostname:8033) | 管理员访问地址 |
yarn.nodemanager.aux-services | 服务功能名称(例如mapreduce_sheffle | 自定义nodemanager服务,如Map-Reduce的shuffle功能 |
详细参数参考:link
hdfs-site.xml:
参数名 | 参数值 | 参数解释 |
---|---|---|
dfs.replication | 3 | 缺省块的复制数量 |
dfs.namenode.name.dir | file:/Hadoop包下的hdfs下的name | 名称节点在本地文件系统的位置 |
dfs.datanode.name.dir | file:/Hadoop包下的hdfs下的data | 数据节点存储数据块在本地文件系统的位置 |
dfs.namenode.secondary.http-address | hostname:50090 | HDFS对应HTTP服务器端口 |
dfs.webhdfs.enable | true | 是否通过http协议读取hdfs文件,如果选是,则集群安全性较差 |
dfs.permissions | false | 权限检查 |
详细参数参考:link
mapred-site.xml:
参数名 | 参数值 | 参数解释 |
---|---|---|
mapreduce.framework.name | loca、yaen、classic三选一 | 框架运行在什么上 |
详细参数参考:link
5.Hadoop的安全模式(||)
在分布式文件系统启动的时候,开始的时候会有安全模式,当分布式文件系统处于安全模式的情况下,文件系统中的内容不允许修改也不允许删除,直到安全模式结束。安全模式主要是为了系统启动的时候检查各个DataNode上数据块的有效性,同时根据策略必要的复制或者删除部分数据块。运行期通过命令也可以进入安全模式。在实践过程中,系统启动的时候去修改和删除文件也会有安全模式不允许修改的出错提示,只需要等待一会儿即可。
参考博文:link
bin/hdfs dfsadmin -safemode enter #进入安全模式
bin/hdfs dfsadmin -safemode leave #退出安全模式
bin/hdfs dfsadmin -safemode get #查看安全模式状态
bin/hdfs dfsadmin -safemode wait #等待安全模式状态
6.通过命令行和浏览器观察Hadoop的运行状态(|)
(1)命令行
hdfs dfsadmin -report
(2)浏览器
hostname:50030 MapReduce的管理情况
hostname:50070 HDFS的管理情况
hostname:8088 YARN的管理情况