• SecondaryNameNode 在一定程度上可以对NameNode进行备份,但不是热备。
  • Block的副本放置策略
    • 第一个副本:放置在上传文件的DN;如果是集群外提交,则随机挑选一台磁盘不太满,CPU不太忙的节点。
    • 第二个副本:放置在与第一个副本不同的机架的节点上。
    • 第三个副本:与第二个副本相同机架的节点。(在同一个机架上可以保证传输速度,同一个机架一般是一个交换机)
    • 更多副本:随机节点
  • HDFS读流程

    • 1.客户端发送请求,通过调用API 发送请求给NameNode
    • 2.获得相应block的位置信息
    • 3.通过API 并发的读各个block
    • 4,5 并发的读block (block的副本有多个,只读一个从空闲的机器上)
    • 6. 返回给客户端,并关闭流
    • 注意,这个一般不会读一个超大的文件
  •   HDFS 写流程
    •   
    • 注意:副本产生机制是datanode自己进行复制的,不是客户端写三份,dataNode会启动新的线程,进行副本的拷贝。

使用3台机器搭建hdfs完全分布式集群 201(NameNode),202(DataNode),203(DataNode)

整体架构

NameNode(192.168.1.201)

DataNode(192.168.1.202,192.168.1.203)

SecondaryNameNode(192.168.1.202)

1.从官网上下载hadoop包,并上传到linux系统上

  hadoop-1.2.1.tar.gz

  解压

  tar -zxvf hadoop-1.2.1.tar.gz    linux服务器上需要jdk环境

  由于名字长,可以加一条软连

  ln -sf /root/hodoop-1.2.1 /home/hodoop-1.2

2.修改 core-site.xml配置文件

  vi /home/hadoop-1.2/conf

  配置NameNode主机及端口号,配置工作目录

  <configuration>
    <property>
      <name>fs.default.name</name>
      <value>hdfs://192.168.1.201:9000</value>
    </property>
    <property>
      <name>hadoop.tmp.dir</name>
      <value>/opt/hadoop-1.2</value>
    </property>

  </configuration>

  默认的工作目录在tmp目录下,linux系统重新启东时会清空tmp目录

  在解压hadoop压缩包后

  /hadoop-1.2.1/docs/core-default.html

  

 hdfs的工作目录是以tmp临时目录为基础的

  

3.配置conf/hdfs-site.xml

配置dfs.replication,配置DataNode的副本个数 202,203作为dataNode,所以副本个数 <= 2

同样的副本不能再同一台机器上,副本个数一定是<=DataNode个数

<configuration>
  <property>
    <name>dfs.replication</name>
    <value>2</value>
  </property>
</configuration>

4.配置dataNode节点

vi /conf/slaves  (可以不使用ip地址,使用主机名)

5.配置SecondaryNameNode,注意不能与NameNode在同一台机器上

vi /conf/masters

192.168.1.202

6.配置免密码登录

免密码登录可以在任意一台机器上输入命令,可以启动所有机器上的进程

如果不做免密码登录,需要在每一台机器上输入启动进程命令

配置201上的免密码登录

在201上生成秘钥

ssh-keygen -t dsa -P '' -f ~/.ssh/id_dsa

在.ssh目录下生成

[root@bogon .ssh]# ls
authorized_keys id_dsa id_dsa.pub known_hosts
[root@bogon .ssh]#

id_dsa 为私钥,id_dsa.pub为公钥

配置单台机器的免密码登录

执行下列命令

$ ssh-keygen -t dsa -P '' -f ~/.ssh/id_dsa
$ cat ~/.ssh/id_dsa.pub >> ~/.ssh/authorized_keys

配置跨节点的免密码登录

先执行

$ ssh-keygen -t dsa -P '' -f ~/.ssh/id_dsa 

生成id_dsa.pub公钥

将id_dsa.pub拷贝到将要免密码登录的那台机器上

scp id_dsa.pub root@192.168.1.202:~

在 192.168.1.202 上将id_dsa.pub追加到 authorized_keys 日子文件上

$ cat ~/id_dsa.pub >> ~/.ssh/authorized_keys

使用 more authorized_keys 查看

在201上使用  ssh 192.168.1.202:22 登录到202上

需要先做本地免密码登录,然后做跨节点免密码登录

配置结果为 201-->202,201-->203, 如果需要相反,则主要重复上边相反过程

7.所有节点进行相同配置

拷贝压缩包

scp -r ~/hadoop-1.2.1.tar.gz root@192.168.1.202:~/

解压

tar -zxvf hadoop-1.2.1.tar.gz

创建软连

ln -sf /root/hadoop-1.2.1 /home/hodoop-1.2

进行格式化

[root@bogon bin]# ./hadoop namenode -format

配置JAVA_HOME

[root@bogon conf]# vi hadoop-env.sh 
# Set Hadoop-specific environment variables here.

# The only required environment variable is JAVA_HOME.  All others are
# optional. When running a distributed configuration it is best to
# set JAVA_HOME in this file, so that it is correctly defined on
# remote nodes. # The java implementation to use. Required.
export JAVA_HOME=/usr/java/jdk1.7.0_75 # Extra Java CLASSPATH elements. Optional.
# export HADOOP_CLASSPATH= # The maximum amount of heap to use, in MB. Default is .
# export HADOOP_HEAPSIZE= # Extra Java runtime options. Empty by default.
# export HADOOP_OPTS=-server # Command specific options appended to HADOOP_OPTS when specified
"hadoop-env.sh" 57L, 2433C

将已配置好的配置文件拷贝到其他机器上(需要拷贝到202,203上)

[root@bogon conf]# scp ./* root@192.168.1.202:/home/hadoop-1.2/conf/

启动

[root@bogon bin]# ./start-dfs.sh

在启动前需要关闭防火墙

service iptables stop

启动后可以使用 jps 查看是否启动成功

hadoop-hdfs分布式文件系统的更多相关文章

  1. Hadoop HDFS分布式文件系统 常用命令汇总

    引言:我们维护hadoop系统的时候,必不可少需要对HDFS分布式文件系统做操作,例如拷贝一个文件/目录,查看HDFS文件系统目录下的内容,删除HDFS文件系统中的内容(文件/目录),还有HDFS管理 ...

  2. 我理解中的Hadoop HDFS分布式文件系统

    一,什么是分布式文件系统,分布式文件系统能干什么 在学习一个文件系统时,首先我先想到的是,学习它能为我们提供什么样的服务,它的价值在哪里,为什么要去学它.以这样的方式去理解它之后在日后的深入学习中才能 ...

  3. Hadoop基础-HDFS分布式文件系统的存储

    Hadoop基础-HDFS分布式文件系统的存储 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.HDFS数据块 1>.磁盘中的数据块 每个磁盘都有默认的数据块大小,这个磁盘 ...

  4. 【史上最全】Hadoop 核心 - HDFS 分布式文件系统详解(上万字建议收藏)

    1. HDFS概述 Hadoop 分布式系统框架中,首要的基础功能就是文件系统,在 Hadoop 中使用 FileSystem 这个抽象类来表示我们的文件系统,这个抽象类下面有很多子实现类,究竟使用哪 ...

  5. HDFS分布式文件系统资源管理器开发总结

      HDFS,全称Hadoop分布式文件系统,作为Hadoop生态技术圈底层的关键技术之一,被设计成适合运行在通用硬件上的分布式文件系统.它和现有的分布式文件系统有很多共同点,但同时,它和其他的分布式 ...

  6. Hadoop HDFS分布式文件系统设计要点与架构

      Hadoop HDFS分布式文件系统设计要点与架构     Hadoop简介:一个分布式系统基础架构,由Apache基金会开发.用户可以在不了解分布式底层细节的情况下,开发分布式程序.充分利用集群 ...

  7. 通过Thrift访问HDFS分布式文件系统的性能瓶颈分析

    通过Thrift访问HDFS分布式文件系统的性能瓶颈分析 引言 Hadoop提供的HDFS布式文件存储系统,提供了基于thrift的客户端访问支持,但是因为Thrift自身的访问特点,在高并发的访问情 ...

  8. 【转】Hadoop HDFS分布式环境搭建

    原文地址  http://blog.sina.com.cn/s/blog_7060fb5a0101cson.html Hadoop HDFS分布式环境搭建 最近选择给大家介绍Hadoop HDFS系统 ...

  9. 认识HDFS分布式文件系统

    1.设计基础目标 (1) 错误是常态,需要使用数据冗余  (2)流式数据访问.数据批量读而不是随机速写,不支持OLTP,hadoop擅长数据分析而不是事物处理.  (3)文件采用一次性写多次读的模型, ...

  10. 1、HDFS分布式文件系统

    1.HDFS分布式文件系统 分布式存储 分布式计算 2.hadoop hadoop含有四个模块,分别是 common. hdfs和yarn. common 公共模块. HDFS hadoop dist ...

随机推荐

  1. usb驱动开发22之驱动生命线

    我们总是很喜欢高潮,不是吗?那就好好对待她哦.我们来看一下linux中的高潮部分设备是怎么从Address进入Configured的. usb_set_configuration函数的代码就不贴了,可 ...

  2. c++虚函数注意事项

    >在基类方法声明中使用关键字virtual,可以使该方法在基类及所有的派生类中是虚的 >如果使用指向对象的引用或指针来调用虚方法,程序将使用对象类型定义的方法,而不使用为引用或指针类型定义 ...

  3. 【基础】利用thrift实现一个非阻塞带有回调机制的客户端

    假设读者对thrift有一定了解. 客户端有时需要非阻塞的去发送请求,给定服务端一个请求,要求其返回一个计算结果.但是客户端不想等待服务端处理完,而是想发送完这个指令后自己去做其他事情,当结果返回时自 ...

  4. 最清晰的Android多屏幕适配方案

    问题的引入 当您的Android应用即将发布的时候,如果你想让更多的用户去使用你的应用,摆在工程师面前的一个重要问题就是如何让你的应用能在各种各样的终端上运行,这里的各种各样首当其冲的就是不同的屏幕分 ...

  5. Reflection和Expression Tree解析泛型集合快速定制特殊格式的Json

    很多项目都会用到Json,而且大部分的Json都是格式固定,功能强大,转换简单等,标准的key,value集合字符串:直接JsonConvert.SerializeObject(List<T&g ...

  6. 【翻译】Windows 10 中为不同设备加载不同页面的3种方法

    在以前,为PC和手机做App是两个工程,PC和手机各一个.在Windows 10中会发现只有一个了,对于简单的页面变化可以使用VisualState来解决,但是比如网易云音乐这种PC版和手机版差异巨大 ...

  7. 新时代的coder如何成为专业程序员

    在移动互联网"泛滥"的今天,越来越多非专业(这里的非专业指的是非计算机专业毕业的程序员)程序员加入到了IT行业中来了,可能是因为移动互联网的火爆导致程序员容易就业而且工资很高,可能 ...

  8. 基于FPGA的通信信号源的设计

    通信信号源设计原理 通过设计一个DDS信号源,然后将该信号作为载波信号,再对基带信号进行2ASK.2FSK.2PSK.2DPSK调制,进而产生多种通信信号. 设计框图如下: 将PN序列进行2ASK.2 ...

  9. JavaScript学习笔记-自定义滚动条

    这是一个基本实现思路,如果有新手和我一样没什么事,喜欢瞎研究话,可以参考下. 一.Html <div class="scroll_con"> <div class ...

  10. 服务端JavaScript之Rhino

    最近在看js的书,书上有介绍两个服务端js,以前只听说过node.js,第一次听说Rhino.js,并且已经集成到了jdk1.6;看来还是见的少啊! Rhino是一种用Java编写的javaScrip ...