hadoop

hadoop,第1张

hadoop

1.hadoop 主要是由两部分组成 HDFS和mapredue,其中HDFS负责存储,mapreduce负责处理计算
----------------hdfs1.0-----------------
2.HDFS属于主从结构(master slave)
3.hdfs 进行海量数据的分布式存储
4.namenode是主,datanode是从,SecondaryNamenode可以理解为一个备份
5.namenode是一个进程,在某一个节点上(机器上),本身维护一块内存区域。内存中两份重要的数据(元数据-datanode通过心跳机制保证) 1)文件名->block数据块的映射关系(mapping关系) 2)block数据块到datanode节点直接的映射关系
本质:通过block数据块找到数据真正存储的本地地址。
6.namenode中包含以下几部分:
1)管理着文件系统命名空间 2)存储元数据 3)保存文件,block datanode之间的映射关系4)元信息持久化 5)运行namenode会占用大量内存和I/O资源 6)hadoop更倾向存储大文件原因:对于集群的硬盘资源存在严重浪费;namenode本身内存有限,造成namenode本身的运行压力。
注意:数据块过大,导致启动mapreduce并发能力不够。最终任务执行慢
7.hdfs中默认数据块的副本为3个
8. 1.0中namenode(nn),datenode(dn),SecondaryNamenode(sn)
9. Namenode-单节点故障:全Hadoop系统中就只有一个Namenode,导致单节点故障。解决方案:1)将Hadoop元数据写入到本地文件系统的同时再实时同步到一个远程挂载的网络文件系统(NFS)2)运行一个 SecondaryNameNode,它的作用是与Namenode进行交互定期通过编辑日志文件合并命名空间镜像。当NameNode发生故障时它会通过自己合并的命名空间镜像副本来恢复。需要注意的是SecondaryNamenode保存的状态总是滞后于Namenode,所以这种方式难免会导致丢失部分数据。
10.datanode 主要存储数据块,block是hdfs基本单位,在1.0中默认大小为64M 。
11.Hadoop 集群规模很大的情况下会涉及到机架感知。机架感知目的:1)不同节点间的通讯,尽量发生在一个机架之内。2) 提高容错能力。
12.数据完整性:检测是否受到损坏
1)crc32算法产生校验和(校验码)
存在几种校验逻辑?
1)client 写校验和,dn来校验
2)dn存在后台进程(DataBlockScanner),定期检查。
12.数据可靠性
1)心跳:DN-NN,保证集群可用性
2)数据完整性:crc32
3)空间回收 -skipTrash
4) 副本-数据冗余
5)snn保证镜像文就修复
13.hdfs不适合场景
1)存储海量小文件
2)文件被修改
3)大量随机读取
14.mapreduce(mr)集群在1.0中主(jobtracker),从(tasktracker)
主:分配任务的,从:具体干活的
hdfs是一个存储集群,mr是一个计算集群
主:jobtracker -nn
从:tasktracker -dn
就近原则:本地化,数据不移动,任务移动
15.HDFS Shell
查看所有目录及其文件
hadoop fs -ls /
hdfs文件系统创建目录
hadoop fs -mkdir /badou
hdfs文件系统创建目录(批量)
hadoop fs -mkdir -p/badou/temp
hdfs文件系统创建文件
hadoop fs -touch /badou.txt
hdfs文件系统删除文件
hadoop fs -rmr /badou.txt
hadoop fs -rmr -skipTrash /badou.txt
向hdfs上传文件
hadoop fs -put /badou.txt
从hdfs上下载文件
hadoop fs -get /badou.txt
ll -rt 查询最近修改的文件
history 历史中命令

-------------------------hdfs2.0----------------------------
1.HA解决单节点故障问题(使用两个NN,一个是activeNN,一个是standbyNN)
2.数据一致性如何保证?
1) 共享的网络文件系统(文件名->block映射关系)
2) dn 向两个NN(active,standby)同时发送心跳,(block和dn节点的地址映射关系)
3.故障转移:利用zookeeper来保证,(本身维护了一个有序的临时节点)
4.JN(共享的文件内系统)部署节点机器的个数为奇数,是为了便于投票,选举,达到数据统一存储。
5.JN:实际QJM(只有投票,没有存储),投票原则,机器数量为2n+1.
优点:
1)不需要额外配置共享存储,节约成本
2)没有单节点问题
3)不用人为搭建,自动支持
6.集群配置:
1)NN和JN通常配置在不同的节点上
2)FC和NN部署在同一个节点上
3)Hadoop2.0 RM(相当于jobtracker)和NN在同一个节点上
4)NM(相当于tasktracker)和dn在同一个节点上(就近原则)
5)zk独立维护一套集群
7.nn联邦机制:本质突破nn本身内存资源的瓶颈,不再受某一个nn内存的限制。
解决的问题:
1)高可用 2)内存资源不足
关键点:每个NN共享所有DN的数据 让我们元数据和存储得到隔离
8.HDFS快照
数据备份,灾备,快速恢复
快照本质:只会记录block列表和大小,并不涉及到数据的复制。
9.HDFS缓存
第一次记录查询的文件路径以及dn,(涉及和NN的交互),第二次直接拿着查询的文件路径直接查询即可。
10.hdfs ACL
r:读 w:写 x:执行
-rw-(表示owner的权限) r–(用户同组的权限)r–(other其他权限) -(表示文件) d(表示目录)
chmod 777代表所有的权限或者chmod o+w(other+write) 文件名
---------------集群搭建注意事项-----------------
一、集群配置
192.168.xx.xx master
192.168.xx.xx slave1
192.168.xx.xx slave2
二、安装步骤
1.保证Java安装:JAVA_HOME
2.解压安装包:tar -zxvf hadoop-2.6.1.tar.gz
3.修改Hadoop配置文件
vim /usr/local/src/hadoop-2.6.1/etc/hadoop/hadoop-env.sh
export JAVA_HOME=/usr/local/src/jdk1.8.0_111

vim /usr/local/src/hadoop-2.6.1/etc/hadoop/yarn-env.sh
export JAVA_HOME=/usr/local/src/jdk1.8.0_111

vim slaves(slaves是一个文件) slave1 slave2

vim /usr/local/src/hadoop-2.6.1/etc/hadoop/hdfs-site.xml
增加内容为:



dfs.namenode.secondary.http-address
master:9001


dfs.namenode.name.dir
file:/usr/local/src/hadoop-2.6.1/dfs/name


dfs.namenode.data.dir
file:/usr/local/src/hadoop-2.6.1/dfs/data


dfs.replication
2


vim /usr/local/src/hadoop-2.6.1/etc/hadoop/core-site.xml



dfs.namenode.secondary.http-address
master:9001


fs.defaultFS
hdfs://master:9000


hadoop.tmp.dir
file:/usr/local/src/hadoop-2.6.1/tmp


cp mapred-site.xml.template mapred-site.xml
vim /usr/local/src/hadoop-2.6.1/etc/hadoop/mapred-site.xml



mapreduce.framework.name
yarn


mapreduce.map.memory.mb
1536


mapreduce.map.java.opts
-Xmx1024M


mapreduce.reduce.memory.mb
3072


mapreduce.map.java.opts
-Xmx2560M


vim /usr/local/src/hadoop-2.6.1/etc/hadoop/yarn-site.xml



yarn.nodemanager.aux-services
mapreduce_shuffle


yarn.nodemanager.aux-services.mapreduce.shuffle.class
org.apache.hadoop.mapred.ShuffleHandler


yarn.resourcemanager.address
master:8032


yarn.resourcemanager.scheduler.address
master:8030


yarn.resourcemanager.resource-tracker.address
master:8035


yarn.resourcemanager.admin.address
master:8033


yarn.resourcemanager.webapp.address
master:8088


yarn.nodemanager.vmem-check-eabled
false
Whether virtual memory limits will be enforced for containers


4.配置环境变量
vim ~/.bashrc :用户级别的
vim /etc/profile :全局生效的
export HADOOP_HOME=/usr/local/src/hadoop-2.6.1
export JAVA_HOME=/usr/local/src/jdk1.8.0_111
export PATH= P A T H : PATH: PATH:JAVA_HOME/bin
刷新环境变量
source ~/.bashrc
master slave1 slave2进行免密登录

scp -rp ~/.bashrc root@slave1:~
scp -rp ~/.bashrc root@slave2:~
5.拷贝安装包
scp -rp /usr/local/src/hadoop-2.6.1/etc/hadoop root@slave1:/usr/local/src
scp -rp /usr/local/src/hadoop-2.6.1/etc/hadoop root@slave2:/usr/local/src
6.启动集群
#初始化namenode
hadoop namenode -format
#集群启动
./start-all.sh

7.观察:
master:
SecondaryNameNode
NameNode
ResourceManager
slave:
DataNode
NodeManager

df -h 查看硬盘使情况 master 30G slave 25G 内存都分3个G

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/5669801.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-16
下一篇 2022-12-17

发表评论

登录后才能评论

评论列表(0条)

保存