分布式存储

(1) 5PB甚至更大的数据集怎么存储 ?

所有数据分块,每个数据块冗余存储在多台机器上(冗余可提高数据块高可用性)。另外一台机器上启动一个管理所有节点、以及存储在各节点上面数据块的服务。

(2)分布式存储集群: master/slave结构集群

  • 存在于slave上的文件:表示真实存放数据的文件即本地磁盘文件
  • 存在于master上的文件:表示逻辑文件,它表示这个逻辑文件全路径名,与这个全路径对应的有数据块的存储信息(数据块位置等)

HDFS各组件及作用讲解

1.NameNode

名字节点中维护了两层关系:

(1)HDFS文件系统的文件目录树,以及文件数据块的索引,即每一个文件对应的数据块列表
(2)数据块与数据节点的关系,即某一数据块保存在哪些数据节点中

2.

安装HDFS

(1)下载Hadoop  ,选择版本hadoop-2.7.5.tar

(2)master slave1 slave2,使用hadoop-twq用户,家目录下创建目录~/bigdata

mkdir -p ~/bigdata

(3)master,使用hadoop-twq用户,上传安装包到目录~/bigdata,并解压。

cd ~/bigdata
tar -zxvf ~/bigdata/hadoop-2.7.5.tar.gz

(4)master,使用hadoop-twq用户,创建nameNode和dataNode需要的文件目录

mkdir -p ~/bigdata/dfs/name
mkdir -p ~/bigdata/dfs/data

(5)master,使用hadoop-twq用户,修改配置文件【core-site.xml】【hdfs-site.xml】

cd ~/bigdata/hadoop-2.7.5/etc/hadoop
vi core-site.xml
<configuration>
<property>
<name>fs.defaultFS</name>
<value>hdfs://master:9999</value>
<description>默认的HDFS路径</description>
</property>
</configuration>
vi hdfs-site.xml
<configuration>
<property>
<name>dfs.replication</name>
<value>1</value>
<description>数据块的副本数量,需小于DataNode数量</description>
</property>
<property>
<name>dfs.namenode.name.dir</name>
<value>/home/hadoop-twq/bigdata/dfs/name</value>
<description>NameNode存放数据的位置</description>
</property>
<property>
<name>dfs.datanode.data.dir</name>
<value>/home/hadoop-twq/bigdata/dfs/data</value>
<description>DataNode存放数据的位置</description>
</property>
</configuration>

(6)master,使用hadoop-twq用户,配置JAVA_HOME,修改【hadoop-env.sh】

cd ~/bigdata/hadoop-2.7.5/etc/hadoop

vi hadoop-env.sh
export JAVA_HOME=/usr/local/lib/jdk1.8.0_161

(7)master,使用hadoop-twq用户,配置集群里所有DataNode的主机名,修改【slaves】

cd ~/bigdata/hadoop-2.7.5/etc/hadoop

vi slaves
slave1
slave2

(8)master,使用hadoop-twq用户,将配置好的hadoop分发到每一个slave上

scp -r ~/bigdata/dfs hadoop-twq@slave1:~/bigdata
scp -r ~/bigdata/dfs hadoop-twq@slave2:~/bigdata scp -r ~/bigdata/hadoop-2.7.5 hadoop-twq@slave1:~/bigdata
scp -r ~/bigdata/hadoop-2.7.5 hadoop-twq@slave2:~/bigdata

(9)master salve1 slave2,使用hadoop-twq用户,配置环境变量

vi ~/.bash_profile
export HADOOP_HOME=~/bigdata/hadoop-2.7.5
PATH=$PATH:$HOME/bin:$JAVA_HOME/bin:$HADOOP_HOME/bin:$HADOOP_HOME/sbin source ~/.bash_profile
which hdfs

(10)master,使用hadoop-twq用户,格式化并启停HDFS

hdfs namenode -format         ==>格式化
start-dfs.sh ==>启动hdfs
jps
http://master的IP地址:50070/ ==>看下是否部署成功
stop-dfs.sh ==>停止hdfs

 安装注意事项:

1..更改salves配置前,需要先停止集群,否则有datanode无法停止。

2.多次格式化,可能会出现namenode和datanode的clusterID不一致。(clusterID在/home/hadoop-twq/bigdata/dfs/data/current/VERSION中)

3.core-site.xml中fs.defaultFS 描述集群中NameNode结点的URI(包括协议、主机名称、端口号)

4.hdfs-site.xml中dfs.namenode.http-address,描述HDFS web界面的监听端口,默认50070

添加节点

(1)修改所有节点的host

(2)修改namenode的配置文件slaves

(3)在新节点的机器上,启动服务

hadoop-daemon.sh start datanode
hadoop-daemon.sh start tasktracker

(4)namenode节点,均衡block

a.如果不balance,那么cluster会把新的数据都存放在新的node上,这样会降低mapred的工作效率。

start-balancer.sh

b.设置平衡阈值,默认是10%,值越低各节点越平衡,但消耗时间也更长

start-balancer.sh -threshold 5

c.配置hdfs balance时datanode之间数据迁移的带宽设置,默认只有1048576(1M/s)

vi hdfs-site.xml
<property>
 <name>dfs.balance.bandwidthPerSec</name>
 <value>1048576</value>
  <description>
   Specifies the maximum amount of bandwidth that each datanode
   can utilize for the balancing purpose in term of
   the number of bytes per second.
 </description>
</property>

 删除节点

(1)阻止待删除的机器连接Namenode

vi conf/hdfs-site.xml
<property>
  <name>dfs.hosts.exclude</name>
  <value>~/bigdata/hadoop-2.7.5/etc/hadoop/excludes</value>
  <description>
Names a file that contains a list of hosts that are
   not permitted to connect to the namenode. The full pathname of the
  file must be specified. If the value is empty, no hosts are
  excluded.
</description>
</property>
vi ~/bigdata/hadoop-2.7.5/etc/hadoop/excludes     ==>待下线机器hostname一个一行
slave3
slave4

(2)强制重新加载配置

hadoop dfsadmin  -refreshNodes  ==>强制重新加载配置,会在后台进行Block块移动
hadoop dfsadmin -report ==>查看到现在集群上连接的节点, Decommission in progress(执行中),  Decommissioned(执行完毕)

(3)关闭节点

等待刚刚的操作结束后,需要下架的机器就可以安全的关闭了

(4)再次编辑excludes文件

一旦完成了机器下架,它们就可以从excludes文件移除了 
登录要下架的机器,会发现DataNode进程没有了,但是TaskTracker依然存在,需要手工处理一下。

参考文档:

Hadoop中DataNode没有启动解决办法

Hadoop下添加节点和删除节点

HDFS balance策略详解

【模块04-大数据技术入门】02节-HDFS核心知识的更多相关文章

  1. 大数据学习(02)——HDFS入门

    Hadoop模块 提到大数据,Hadoop是一个绕不开的话题,我们来看看Hadoop本身包含哪些模块. Common是基础模块,这个是必须用的.剩下常用的就是HDFS和YARN. MapReduce现 ...

  2. 大数据技术之Hadoop(HDFS)

    第1章 HDFS概述 1.1 HDFS产出背景及定义 1.2 HDFS优缺点 1.3 HDFS组成架构 1.4 HDFS文件块大小(面试重点) 第2章 HDFS的Shell操作(开发重点) 1.基本语 ...

  3. 大数据技术之Hadoop入门

      第1章 大数据概论 1.1 大数据概念 大数据概念如图2-1 所示. 图2-1 大数据概念 1.2 大数据特点(4V) 大数据特点如图2-2,2-3,2-4,2-5所示 图2-2 大数据特点之大量 ...

  4. 【学习笔记】大数据技术原理与应用(MOOC视频、厦门大学林子雨)

    1 大数据概述 大数据特性:4v volume velocity variety value 即大量化.快速化.多样化.价值密度低 数据量大:大数据摩尔定律 快速化:从数据的生成到消耗,时间窗口小,可 ...

  5. 大数据技术生态圈形象比喻(Hadoop、Hive、Spark 关系)

    [摘要] 知乎上一篇很不错的科普文章,介绍大数据技术生态圈(Hadoop.Hive.Spark )的关系. 链接地址:https://www.zhihu.com/question/27974418 [ ...

  6. TOP100summit:【分享实录-WalmartLabs】利用开源大数据技术构建WMX广告效益分析平台

    本篇文章内容来自2016年TOP100summitWalmartLabs实验室广告平台首席工程师.架构师粟迪夫的案例分享. 编辑:Cynthia 粟迪夫:WalmartLabs实验室广告平台首席工程师 ...

  7. 利用大数据技术处理海量GPS数据

    我秀中国物联网地图服务平台目前接入的监控车辆近百万辆,每天采集GPS数据7亿多条,产生日志文件70GB,使用传统的数据处理方式非常耗时. 比如,仅仅对GPS做一些简单的统计分析,程序就需要几个小时才能 ...

  8. 大数据技术之Hadoop3.1.2版本HA模式

    大数据技术之Hadoop3.1.2版本HA模式 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.Hadoop的HA特点 1>.主备NameNode 2>.解决单点故障 ...

  9. 大数据技术之HBase

    第1章 HBase简介 1.1 什么是HBase HBase的原型是Google的BigTable论文,受到了该论文思想的启发,目前作为Hadoop的子项目来开发维护,用于支持结构化的数据存储. 官方 ...

随机推荐

  1. windows之桌面程序引导功能

    经常使用windows系统的同学可能都会遇到这样一种情况,刚按照完的应用程序,可能会在桌面产生一个提示信息,指示当前快捷方式可以使用了,并给出相应的文字说明,指示该快捷方式的功能.那么大家有没有考虑过 ...

  2. Once More

    Topic Link http://ctf5.shiyanbar.com/web/more.php 1)源代码分析 发现 ereg()函数使得password必须是数字或字母同时长度必须是小于8val ...

  3. leetcode — clone-graph

    import java.util.*; /** * Source : https://oj.leetcode.com/problems/clone-graph/ * * * Clone an undi ...

  4. golang - gob与rpc

    今天和大家聊聊golang中怎么使用rpc,rpc数据传输会涉及到gob编码,所以先讲讲gob,别担心,就算你完全没有接触过gob与rpc,只要知道rpc的中文是远程过程调用,剩下的我都能给你讲明白( ...

  5. PE知识复习之PE新增节

    PE知识复习之PE新增节 一丶为什么新增节.以及新增节的步骤 例如前几讲.我们的PE文件在空白区可以添加代码.但是这样是由一个弊端的.因为你的空白区节属性可能是只读的不能执行.如果你修改了属性.那么程 ...

  6. 【野草】SQL Server之索引解析(二)

    1.堆表 堆表通过IAM连接一起,查询时全表扫描. 1.1 非聚集索引 结构 叶子节点数据结构:行数据结构+Rid(8字节) 中间节点数据结构: (非聚集非唯一索引)行数据结构+Page(4)+2+ ...

  7. Docker搭建ElasticSearch+Redis+Logstash+Filebeat日志分析系统

    一.系统的基本架构 在以前的博客中有介绍过在物理机上搭建ELK日志分析系统,有兴趣的朋友可以看一看-------------->>链接戳我<<.这篇博客将介绍如何使用Docke ...

  8. NLP入门(六)pyltp的介绍与使用

    pyltp的简介   语言技术平台(LTP)经过哈工大社会计算与信息检索研究中心 11 年的持续研发和推广, 是国内外最具影响力的中文处理基础平台.它提供的功能包括中文分词.词性标注.命名实体识别.依 ...

  9. 【转】MVC HtmlHelper用法大全

    HtmlHelper用来在视图中呈现 HTML 控件. 以下列表显示了当前可用的一些 HTML 帮助器. 本主题演示所列出的带有星号 (*) 的帮助器. ActionLink - 链接到操作方法. B ...

  10. JQuery官方学习资料(译):Data方法

        你可能经常会想需要通过元素来存储一些数据.在JavaScript中你可能需要给元素添加属性来实现这样的功能,但是在某些浏览器中,你可能还需要处理因此造成的内存泄露问题.JQuery提供了一个简 ...