ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

1-HDFS+MapReduce

2022-05-26 01:34:03  阅读:203  来源: 互联网

标签:HDFS src MapReduce hadoop master usr local 2.6


Hadoop的框架最核心的设计就是:HDFS,MapReduce(mr)

HDFS1.0

  1. hdfs: 分布式文件系统,主要用于存储海量数据
    MapReduce: 用户海量数据的计算

  2. hdfs 本身是一个master slave 架构 namenode(nn) 是主 datanode(dn) 是从
    SecondaryNameNode(snn) 并不是nn的一个备份

  3. namenode 是一个进程, 在某一个节点上维护了一块内存区域
    内存中维护2份重要的数据(namenode 和 datanode 通过心跳机制进行通讯的)
    (1) 文件名->block数据块的映射关系(mapping关系)
    (2) block->datanode 节点的映射关系
    本质:通过block数据库找到数据真正的位置

  4. 数据块的副本数:3个

  5. hadoop 集群不适合存储大量的小文件
    (1) 对于集群而言硬盘资源存在严重的浪费
    (2) nn内存资源有限,造成nn 内存压力
    (3) 如果存储过大的文件,启动mr 的时候,并发能力不够,导致MR任务执行过慢

  6. 1.0中只有一个nn

  7. 什么情况下使用机架感知?
    hadoop 集群规模很大的时候
    目的:希望不同节点之间的通讯能够发生在同一个机架之内,而不是跨机架(节省网络传输的IO和带宽)
    为了提高容错能力

  8. 数据完整性: 检测数据是否损坏
    crc32算法产生校验和(校验码)
    (1) client写校验和,dn 来校验
    (2) dn存在后台进程DataBlockScanner : 定期检查

  9. hdfs可靠性
    (1) 心跳 dn-nn
    (2) 数据完整性 crc32
    (3) 副本-数据冗余
    (4) 空间回收机制 -skipTrash
    (5) SNN

  10. hdfs 不适合场景
    (1) 存储小文件
    (2) 文件被修改
    (3) 大量随机读

MR1.0

  1. mr在1.0中 包括主(jobtracker) 从(tasktracker)
    主:分配任务 从: 具体干活
    hdfs 存储集群 mr 计算集群
    主:namenode -> jobtracker
    从: datanode -> tasktracker
    就近原则:本地化 数据不移动,任务(代码逻辑)移动

HDFS2.0

  1. HA来解决单节点故障问题(使用两个NN 一个是 activate NN 一个是standbyNN)

  2. 数据一致性如何保证?
    (1) 共享文件系统
    (2) dn 向两个NN发送心跳

  3. 故障转移: 利用zookeeper来保证的

  4. JN: 利用了NFS, 保证机器个数为2n+1
    优点:便于选举,投票,达到数据统一存储
    QJM: 少数服从多数
    (1)不用做额外的共享配置,节约成本
    (2)系统配置很灵活(自动支持的)

  5. 集群部署
    (1)NN和JN 配置在不同的节点上
    (2)FC和NN在相同的节点上
    (3)hadoop 2.0中 RM(相当于jobtracker)和NN在相同的节点上
    (4)NM (相当于tasktracker)和DN在相同的节点上 就近原则
    (5)zookeeper 独立维护一套集群

  6. 联邦机制
    本质:突破NN本身内存资源的瓶颈,不在受某一个NN 内存的限制
    解决的问题:(1)高可用 (2)内存资源不足
    关键点:每个NN共享所有的DN

  7. 快照 数据备份,灾备

  8. ACL

集群搭建(可以忽略)

一、集群配置 16G+512G

虚拟机内存 master slave1 slave2 2 1 1
虚拟机硬盘 master slave1 slave2 30G 25G 25G
192.168.172.101 master
192.168.172.102 slave1
192.168.172.103 slave2

二、安装步骤

1、保证java安装 /usr/local/src/jdk1.8.0_111
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
slave1
slave2
vim /usr/local/src/hadoop-2.6.1/etc/hadoop/hdfs-site.xml
<configuration>
<property>
<name>dfs.namenode.secondary.http-address</name>
<value>master:9001</value>
</property>
<property>
<name>dfs.namenode.name.dir</name>
<value>file:/usr/local/src/hadoop-2.6.1/dfs/name</value>
</property>
<property>
<name>dfs.datanode.data.dir</name>
<value>file:/usr/local/src/hadoop-2.6.1/dfs/data</value>
</property>
<property>
<name>dfs.replication</name>
<value>2</value>
</property>
</configuration>

vim /usr/local/src/hadoop-2.6.1/etc/hadoop/core-site.xml
<configuration>
<property>
<name>fs.defaultFS</name>
<value>hdfs://master:9000</value>
</property>
<property>
<name>hadoop.tmp.dir</name>
<value>file:/usr/local/src/hadoop-2.6.1/tmp</value>
</property>
</configuration>

cp mapred-site.xml.template mapred-site.xml

vim /usr/local/src/hadoop-2.6.1/etc/hadoop/mapred-site.xml
<configuration>
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>

<property>
  <name>mapreduce.map.memory.mb</name>
  <value>1536</value>
</property>
<property>
  <name>mapreduce.map.java.opts</name>
  <value>-Xmx1024M</value>
</property>
<property>
  <name>mapreduce.reduce.memory.mb</name>
  <value>3072</value>
</property>
<property>
  <name>mapreduce.reduce.java.opts</name>
  <value>-Xmx2560M</value>
</property>
</configuration>

vim /usr/local/src/hadoop-2.6.1/etc/hadoop/yarn-site.xml
<configuration>
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
<property>
<name>yarn.nodemanager.aux-services.mapreduce.shuffle.class</name>
<value>org.apache.hadoop.mapred.ShuffleHandler</value>
</property>
<property>
<name>yarn.resourcemanager.address</name>
<value>master:8032</value>
</property>
<property>
<name>yarn.resourcemanager.scheduler.address</name>
<value>master:8030</value>
</property>
<property>
<name>yarn.resourcemanager.resource-tracker.address</name>
<value>master:8035</value>
</property>
<property>
<name>yarn.resourcemanager.admin.address</name>
<value>master:8033</value>
</property>
<property>
<name>yarn.resourcemanager.webapp.address</name>
<value>master:8088</value>
</property>
<property>
    <name>yarn.nodemanager.vmem-check-enabled</name>
    <value>false</value>
    <description>Whether virtual memory limits will be enforced for containers</description>
</property>
</configuration>

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=$PATH:$JAVA_HOME/bin

# 刷新环境变量
source ~/.bashrc
bash

# master 节点的环境变量拷贝到slave(两两之间进行免密登录)
scp -rp ~/.bashrc root@slave1:/root/.bashrc
scp -rp ~/.bashrc root@slave2:/root/.bashrc

5、拷贝安装包

scp -rp /usr/local/src/hadoop-2.6.1 root@slave1:/usr/local/src
scp -rp /usr/local/src/hadoop-2.6.1 root@slave2:/usr/local/src

6、启动集群

# 初始化namenode
hadoop namenode -format

sh start-all.sh
sh stop-all.sh

7、观察
master
8086 SecondaryNameNode
8230 ResourceManager
7896 NameNode

slave
7185 DataNode
7273 NodeManager

通过命令测试 hadoop fs -ls /

浏览器观察 master:8088

标签:HDFS,src,MapReduce,hadoop,master,usr,local,2.6
来源: https://www.cnblogs.com/liutz/p/16311612.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有