Hadoop介绍

一、Hadoop

1、Hadoop发展史

  由Doug Cutting根据Google 的3 篇论文 Hadoop (HDFS MapReduce Hbase)编写而成,使用java语言编写,是一个分布式的大数据处理框架,它有很好的伸缩性,可扩展性,编程模型很简单。

2、概念

  HDFSHadoop是一个分布式的大数据处理框架,它有很好的伸缩性,可扩展性,编程模型很简单.

3、 Hadoop包括四大模块

  1)Hadoop commons 工具类提供了相关工具 支撑下面3个模块
  2)HDFS 一个高可靠、高吞吐量的分布式文件系统。
  3)Yarn 任务管理,资源调度
  4)MapReduce 一个分布式的离线并行计算框架。

4、HDFS介绍

 4.1 HDFS相关概念
  HDFS它是一个文件系统,用于存储文件,通过目录树来定位文件;其次,它是分布式的,由很多服务器联合起来实现其功能,集群中的服务器有各自的角色。
 4.2 HDFS组成
  1)HDFS集群包括,NameNode和DataNode以及Secondary Namenode。
  2)NameNode负责管理整个文件系统的元数据,以及每一个路径(文件)所对应的数据块信息。
  3)DataNode 负责管理用户的文件数据块,每一个数据块都可以在多个datanode上存储多个副本。
  4)Secondary NameNode用来监控HDFS状态的辅助后台程序,每隔一段时间获取HDFS元数据的快照。
在这里插入图片描述
 4.3 HDFS 文件块大小
  HDFS中的文件在物理上是分块存储(block),块的大小可以通过配置参数( dfs.blocksize)来规定,默认大小在hadoop2.x版本中是128M,老版本中是64M
  HDFS的块比磁盘的块大,其目的是为了最小化寻址开销。如果块设置得足够大,从磁盘传输数据的时间会明显大于定位这个块开始位置所需的时间。因而,传输一个由多个块组成的文件的时间取决于磁盘传输速率。
  如果寻址时间约为10ms,而传输速率为100MB/s,为了使寻址时间仅占传输时间的1%,我们要将块大小设置约为100MB。默认的块大小实际为64MB,但是很多情况下HDFS使用128MB的块设置。
块的大小:10ms100100M/s = 100M

二、Hadoop单机版安装

1、hadoop.apache.org 下载所需hadoop版本,本次选择2.7.2
2、linux安装hadoop
 本文linux选择CentOS release 6.10 (Final)
1)关闭防火墙

service iptables stop      // [centos 6.x 系统]
chkconfig iptables off     // [关闭自启动]

2)查看防火墙转态

[root@hadoop102 ~]#  chkconfig iptables --list
iptables       	0:关闭	1:关闭	2:关闭	3:关闭	4:关闭	5:关闭	6:关闭

3)关闭SELIinux 安全套件

[root@hadoop102 ~]# vi /etc/selinux/config 


# This file controls the state of SELinux on the system.
# SELINUX= can take one of these three values:
#     enforcing - SELinux security policy is enforced.
#     permissive - SELinux prints warnings instead of enforcing.
#     disabled - No SELinux policy is loaded.
SELINUX=disabled      # 修改此处为disabled
# SELINUXTYPE= can take one of these two values:
#     targeted - Targeted processes are protected,
#     mls - Multi Level Security protection.
SELINUXTYPE=targeted

4)修改主机名

vi  /etc/sysconfig/network

5)配置网络映射


127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4
::1         localhost localhost.localdomain localhost6 localhost6.localdomain6
192.168.31.102 hadoop102

6)安装JDK,确保jdk版本在1.7及以上

3、解压缩Hadoop
1)放置在 /opt/module/

tar -zxf hadoop-2.7.2.tar.gz -C /opt/module/

2)打开/etc/profile文件:在profie文件末尾配置jdk路径

# HADOOP_HOME
export HADOOP_HOME=/opt/module/hadoop-2.7.2
export PATH=$PATH:$HADOOP_HOME/bin
export PATH=$PATH:$HADOOP_HOME/sbin		

3)让修改文件生效

source /etc/profile

4)修改hadoop配置文件
vi /opt/module/hadoop-2.7.2/etc/hadoop/hadoop-env.sh

export JAVA_HOME=/opt/module/jdk1.7.0_79  //配置java的环境变量

5)配置:core-site.xml

vi /opt/module/hadoop-2.7.2/etc/hadoop/core-site.xml  

<configuration>
<!-- 指定HDFS中NameNode的地址 -->
        <property>
                <name>fs.defaultFS</name>
        <value>hdfs://hadoop102:8020</value>
        </property>

        <!-- 指定hadoop运行时产生文件的存储目录 -->
        <property>
                <name>hadoop.tmp.dir</name>
                <value>/opt/module/hadoop-2.7.2/data/tmp</value>
        </property>
</configuration>
~                   

6)配置hdfs-site.xml

	<!-- 指定HDFS副本的数量 -->
	<property>
		<name>dfs.replication</name>
		<value>1</value>
	</property>

7)配置yarn-site.xml

 <!-- reducer获取数据的方式 -->
        <property>
                 <name>yarn.nodemanager.aux-services</name>
                 <value>mapreduce_shuffle</value>
        </property>

8)配置mapred-site.xml ( mapred-site.xml.template改名为 mapred-site.xml)

<!-- 指定mr运行在yarn上 -->
        <property>
                <name>mapreduce.framework.name</name>
                <value>yarn</value>
        </property>

4、启动HDFS 还有 Yarn

//在hadoop目录下执行
bin/hdfs namenode –format    // 格式化namenode 只执行一次
sbin/hadoop-daemon.sh start namenode       //启动namenode
sbin/hadoop-daemon.sh start datanode         //启动datanode
sbin/yarn-daemon.sh  start  resourcemanager  //启动resourcemanager
sbin/yarn-daemon.sh  start  nodemanager     //启动 nodemanager 
// jps 作用:只会查看java相关进程
[root@hadoop102 hadoop-2.7.2]# jps
31726 DataNode
31645 NameNode
32059 NodeManager
32198 Jps
31820 ResourceManager

5、访问HDFS/Yarn web管理页面
  Hdfs: http://hadoop1:50070
  yarn: http://hadoop1:8088
6、定义Hadoop HDFS Yarn的 启动 停止脚本

vi hadoop-start.sh
sbin/hadoop-daemon.sh start namenode 
sbin/hadoop-daemon.sh start datanode
sbin/yarn-daemon.sh  start  resourcemanager 
sbin/yarn-daemon.sh  start  nodemanager
vi hadoop-stop.sh
sbin/hadoop-daemon.sh stop namenode 
sbin/hadoop-daemon.sh stop datanode
sbin/yarn-daemon.sh  stop  resourcemanager 
sbin/yarn-daemon.sh  stop  nodemanager
// 注意: 新创建的脚本没有可执行权限, chmod 744 修改可执行权限
chmod 744 hadoop-start.sh
// 脚本启动
./hadoop-start.sh

7.为什么不能一直格式化NameNode,格式化NameNode,要注意什么?
 格式化NameNode,会产生新的集群id,导致NameNode和DataNode的集群id不一致,集群找不到已往数据。所以,格式NameNode时,一定要先删除data数据和log日志,然后再格式化NameNode。

三、HDFS的高级功能
1、HDFS NameNode数据的持久化

开启安全模式: bin/hdfs dfsadmin -safemode enter|leave|get
在这里插入图片描述
(1)FSImage|EdisLog 默认存储位置
  /opt/module/hadoop-2.7.2/data/tmp/dfs/data/current

(2)设置FSImage|EdisLog 存储路径
  在hdfs-site.xml文件中
  dfs.namenode.edits.dir 设置edisLog
  dfs.namenode.name.dir 设置FSImage

2、SecondaryNameNode

(1)作用:辅助NameNode 合并 FSImage 和 EdisLog
在这里插入图片描述
注意:NameNode 和 SecondaryNameNode 不能放置到一个节点

hdfs-site.xml
<property>
    <name>dfs.namenode.secondary.http-address</name>
    <value>hadoop103:50090</value>
</property>

(2)还原NameNode数据
  NameNode存储 FSImage 和 EdisLog 所在的硬盘 出现了问题.
可以通过SecondaryNameNode 部分还原 FSImage 和 EdisLog

//配置EdisLog FSImage的位置
<property>
      <name>dfs.namenode.name.dir</name>
	  <value>/opt/module/hadoop-2.7.2/data/tmp/dfs/name/fs</value>
 </property>
<property>
      <name>dfs.namenode.edits.dir</name>
	  <value>/opt/module/hadoop-2.7.2/data/tmp/dfs/name/edits</value>
   </property>

(3)SecondryNameNode还原NameNode

//执行命令还原
sbin/hadoop-daemon.sh start namenode –importCheckpoint
四、MapReduce
1、MapReduce是大数体系下的一种分布式运算模型,处理 大数据相关的业务 (类似于Service)

在这里插入图片描述

2、MapReduce 核心实现思路

在这里插入图片描述

3、Hadoop集群中 启动 Yarn集群

(1)ResouceManager 最好 不要和 NameNode放置在同一台物理节点

//yarn-site.xml (配置ResouceManager 所在的主机,然后同步集群中的每一个节点)
<property>
  <name>yarn.resourcemanager.hostname</name>
  <value>hadoop102</value>
</property>

(2)启动yarn集群 ResouceManager所在的节点

sbin/start-yarn.sh
sbin/stop-yarn.sh
4、yarn集群工作原理

在这里插入图片描述

5、MapReduce 核心编码

在这里插入图片描述

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

码出天空

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值