Hadoop 介绍与环境安装

Hadoop 介绍与环境安装

预备知识

  • Linux: 《Linux私房菜》
  • Java: 《Java就业培训教程》
  • Hadoop: 《Hadoop权威指南》
  • 《实战Hadoop》
  • 《Hadoop实战》
  • 《Hadoop MapReduce Cookbook》
  • 《Hadoop Real-World Solutions Cookbook》

Hadoop 是什么

  • 面向大数据处理
  • 擅长离线数据分析
  • 分布式文件系统+计算框架
  • Hadoop不是数据库, Hbase 才是数据库
  • Hadoop 是一个快速进化的生态系统

知识路线图

Hadoop
 |-- 基础课程
 |   |-- Java基础
 |   |-- Linux基础
 |   |-- 网络基础
 |   |-- 网络开发
 |-- NoSQL
 |   |-- 数据库引擎开发
 |   |-- HBase 架构、管理与应用
 |   |-- MongoDB 架构、管理与应用
 |   |-- Neo4J 图数据库应用实践
 |   |-- Redis 实战
 |   |-- Nodejs + MongoDB 快速开发实战
 |-- MapReduce
 |   |-- Mahout数据挖掘实战
 |   |-- Hive数据仓库实战
 |-- Hadoop 方向
 |   |-- Hadoop 应用开发实战
 |   |-- Mahout 机器学习平台
 |   |-- Hadoop 源代码导读
 |   |-- Hive 数据仓库实战
 |-- Storm 实时数据分析平台
 |-- Spark 反向
 |   |-- Spark 大数据平台
 |   |-- MLLIB 机器学习
 |-- 虚拟化方向
 |   |-- Openstack云系统
 |--高性能计算
 |   |-- CUDA 从入门到精通
 |   |-- MPI 并行计算框架
 |-- 大数据平台架构
     |-- 搜索引擎架构
     |-- 高并发大数据架构

职位

  • 运维
  • Hadoop 程序员 (M-R, 源代码)
  • 架构师
  • 数据仓库工程师

课程目标

  • 部署: Hadoop, Hbase, Hive, Pig, Mahout
  • 数据集成: Sqoop, Chukwa, Flume 等工具与数据库、应用工具集成
  • 掌握HDFS原理和基本操作
  • 掌握MapReduce 工作原理,使用M-R 算法解决实际场景
  • 掌握YARN框架的原理及使用方法,知道怎样写YARN应用程序
  • 编写MapReduce 程序, 提交作业并对运行状况进行监控
  • 了解整个Hadoop 生态系统的各个子产品
  • 初步阅读源代码的能力

典型实验环境

  • 3台virtual box
  • 网络配置为网桥模式
  • JDK
  • Hadoop: 2.x

Hadoop 架构

Namenode

  • HDFS的守护程序
  • 纨录文件是如何分割成数据块的,以及这些数据块被存储到哪些节点上
  • 对内存和I/O迚行集中管理
  • 是个单点,収生故障将使集群崩溃

Secondary Namenode

  • 监控HDFS状态的辅助后台程序
  • 每个集群都有一个
  • 不NameNode进行通讯,定期保存HDFS元数据快照
  • 当NameNode故障可以作为备用NameNode使用

DataNode

  • 每台从朋务器都运行一个
  • 负责把HDFS数据块读写到本地文件系统

JobTracker 已弃用?

  • 用于处理作业(用户提交代码)的后台程序
  • 决定有哪些文件参不处理,然后切割task幵分配节点
  • 监控task,重吭失败的task(于不同的节点)
  • 每个集群只有唯一一个JobTracker, 位于Master节点

TaskTracker 已弃用?

  • 位于slave节点上,不datanode结合 (代码不数据一起的原则)
  • 管理各自节点上的task(由 jobtracker分配)
  • 每个节点只有一个tasktracker,但一 个tasktracker可以吭劢多个JVM, 用于幵行执行map戒reduce仸务
  • 与jobtracker交互

Master/Slave 节点

  • Master:Namenode、Secondary Namenode、Jobtracker。浏览器(用 于观看 管理界面),其它Hadoop工具
  • Slave:Tasktracker、Datanode
  • Master丌是唯一的

应用场景与瓶颈

数据量过大时

  • 入库瓶颈
  • 查询瓶颈
  • 实时和响应时间要求越来越高
  • 模型越来越复杂,计算量指数上升

期待的解决方案

  • 完美解决性能瓶颈
  • 技能平稳过度,兼容SQL
  • 平台转换成本

Hadoop 缺点

  • 基于Java
  • 难以驾驭
  • 数据集成困难

分析手段

  • 主流: java程序
  • 轻量级脚本: Pig
  • SQL过渡: Hive
  • NoSQL: HBase

机器选型配置

标准: 普通、廉价、标准、工业化大规模生产

  • Hadoop 自持多核CPU
  • 16-32G 内存
  • 大量廉价硬盘
  • 网络非常重要
  • 不需要RAID

网络拓扑结构

  • 使用局域网
  • 支持机架感知

操作系统

  • Hadoop 基于Java
  • 主流Linux
  • JDK

三种运行模式

  • 单机模式:安装简单,几乎不用作任何配置,但仅限于调试用途
  • 伪分布模式:在单节点上同时启动namenode、datanode、jobtracker、tasktracker、secondary namenode等5个进程,模拟分布式运行的各个节点
  • 完全分布式模式:正常的Hadoop集群,由多个各司其职的节点构成

完全分布式模式安装和配置

  1. 配置hosts文件
  2. 建立Hadoop运行账户
  3. 配置ssh免密连入
  4. 下载Hadoop安装包
  5. 配置hadoop-env.sh
  6. yarn-env.sh
  7. 配置namenode, 修改site文件
  8. 配置slaves文件
  9. 向各节点复制hadoop
  10. 格式化namenode
  11. 启动Hadoop
  12. jps检验后台进程是否启动成功

搭建环境

  • ubuntu 16.04 server
  • hadoop-2.7.2
  • jdk1.8.0_91

建虚拟机

基于 Virtaul Box 和 Ubuntu 16.04 server 建虚拟机 ubuntu00

网络: 桥接网络
用户: ubuntu00

基于ubuntu00 复制得到ubuntu01, ubuntu02

3台虚拟机:

  • ubuntu00
  • ubuntu01
  • ubuntu02

2. 配置hosts文件

根据各虚拟机配置hosts

3. 配置ssh免密

生成各虚拟机秘钥对,配置免密连接

JDK 安装

下载 jdk1.8.0_91 解压至 /usr

Hadoop 安装

下载 hadoop-2.7.2 解压至用户目录

Hadoop 配置 etc/hadoop/*

不存在的文件复制对应的template 文件

  • hadoop-env.sh
  • yarn-env.sh
  • slaves
  • core-site.xml
  • hdfs-site.xml
  • mapred-site.xml
  • yarn-site.xml

hadoop-env.sh

// the java implementtation to use
export JAVA_HOME=/usr/jdk1.8.0_91
export HADOOP_CLASSPATH=/home/ubuntu00/hadoop-2.7.2/myclass

yarn-env.sh

// java parameters
export JAVA_HOME=/usr/jdk1.8.0_91

slaves

ubuntu01
ubuntu02

core-site.xml

<configuration>
    <property>
        <name>fs.defaultFS</name>
        <value>hdfs://ubuntu00:9000</value>
    </property>
    <property>
        <name>io.file.buffer.size</name>
        <value>131072</value>
    </property>
    <property>
        <name>hadoop.tmp.dir</name>
        <value>file:/home/ubuntu00/hadoop-2.7.2/tmp</value>
<description>Abase for other temporary directories.</description>
    </property>
    <property>
        <name>hadoop.proxyuser.hduser.hosts</name>
        <value>*</value>
    </property>
    <property>
        <name>hadoop.proxyuser.hduser.groups</name>
        <value>*</value>
    </property>
</configuration>

hdfs-site.xml

<configuration>
    <property>
        <name>dfs.namenode.secondary.http-address</name>
        <value>ubuntu00:9001</value>
    </property>
    <property>
        <name>dfs.namenode.name.dir</name>
            <value>file:/home/ubuntu00/hadoop-2.7.2/name</value>
    </property>
    <property>
        <name>dfs.datanode.data.dir</name>
        <value>file:/home/ubuntu00/hadoop-2.7.2/data</value>
    </property>
    <property>
        <name>dfs.replication</name>
        <value>1</value>
    </property>
    <property>
        <name>dfs.webhdfs.enabled</name>
        <value>true</value>
    </property>
</configuration>

mapred-site.xml

<configuration>
    <property>
        <name>mapreduce.framework.name</name>
        <value>yarn</value>
    </property>
    <property>
        <name>mapreduce.jobhistory.address</name>
        <value>ubuntu00:10020</value>
    </property>
    <property>
        <name>mapreduce.jobhistory.webapp.address</name>
        <value>ubuntu00:19888</value>
    </property>
</configuration>

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>ubuntu00:8032</value>
    </property>
    <property>
        <name>yarn.resourcemanager.scheduler.address</name>
        <value>ubuntu00:8030</value>
    </property>
    <property>
        <name>yarn.resourcemanager.resource-tracker.address</name>
        <value>ubuntu00:8031</value>
    </property>
    <property>
        <name>yarn.resourcemanager.admin.address</name>
        <value>ubuntu00:8033</value>
    </property>
    <property>
        <name>yarn.resourcemanager.webapp.address</name>
        <value>ubuntu00:8088</value>
    </property>
</configuration>

向各节点复制 etc/hadoop/* 配置

启动集群及检验

master 节点上(ubuntu00)

  • 格式化namenode: bin/hdfs namenode -format
  • 启动Hadoop: sbin/start-dfs.sh sbin/start-yarn.sh
  • 检验后台进程: jps
  • mr查看: mr-jobhistory-daemon.sh start historyserver
  • 查看DataNode: hdfs dfsadmin -report

测试MapReduce

单词数计数

~$ mkdir input
$ cd input
$ echo "hello world" > test1.txt
$ echo "hello hadoop" > test2.txt
$ bin/hadoop fs -mkdir in
hadoop$ bin/hadoop fs -put ~/input in
$ bin/hadoop fs -ls in
hadoop/share/hadoop/mapreduce$ hadoop jar hadoop-mapreduce-examples-2.7.2.jar wordcount in out
$ hadoop fs -cat out/part-r-00000

web

Hadoop 备受关注的特性与版本演进

  • Append: 支持文件追加功能, 解决Hadoop 不能修改文件
  • RAID: 在保证数据可靠的前提下,通过引入校验码减少数据块数目
  • Symlink: 支持HDFS 文件链接
  • Security: Hadoop 安全性
  • HDFS Federation 和YARN

Cloudera 发布版

Cloudera 发行版, 简称CDH

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值