Hadoop 介绍与环境安装
来源:互联网 发布:神经网络算法 反馈 编辑:程序博客网 时间:2024/06/11 12:02
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集群,由多个各司其职的节点构成
完全分布式模式安装和配置
- 配置hosts文件
- 建立Hadoop运行账户
- 配置ssh免密连入
- 下载Hadoop安装包
- 配置hadoop-env.sh
- yarn-env.sh
- 配置namenode, 修改site文件
- 配置slaves文件
- 向各节点复制hadoop
- 格式化namenode
- 启动Hadoop
- 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 useexport JAVA_HOME=/usr/jdk1.8.0_91export HADOOP_CLASSPATH=/home/ubuntu00/hadoop-2.7.2/myclass
yarn-env.sh
// java parametersexport JAVA_HOME=/usr/jdk1.8.0_91
slaves
ubuntu01ubuntu02
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 inhadoop$ bin/hadoop fs -put ~/input in$ bin/hadoop fs -ls inhadoop/share/hadoop/mapreduce$ hadoop jar hadoop-mapreduce-examples-2.7.2.jar wordcount in out$ hadoop fs -cat out/part-r-00000
web
- Hadoop节点状态http://ubuntu00:50070
Hadoop 备受关注的特性与版本演进
- Append: 支持文件追加功能, 解决Hadoop 不能修改文件
- RAID: 在保证数据可靠的前提下,通过引入校验码减少数据块数目
- Symlink: 支持HDFS 文件链接
- Security: Hadoop 安全性
- HDFS Federation 和YARN
Cloudera 发布版
Cloudera 发行版, 简称CDH
0 0
- Hadoop 介绍与环境安装
- hadoop 安装与环境搭建
- Hadoop 2.4 完全分布式环境安装与配置及配置信息介绍
- hadoop环境的安装与搭建
- Hadoop的安装与环境搭建
- Hadoop大数据系列---Hadoop安装与环境配置
- Hadoop学习6_CentOS6.5系统下Hadoop2.6.0完全分布式环境安装与配置信息介绍
- Hadoop学习笔记—1.基本介绍与环境配置
- Hadoop基本介绍与环境配置(笔记1)
- hadoop运行环境安装与配置+hadoop开发环境配置(一)
- hadoop运行环境安装与配置+hadoop开发环境配置(二)
- Hadoop 环境安装
- Hadoop集群环境安装
- Hadoop系统环境安装
- centos hadoop环境安装
- Hadoop环境安装设置
- hadoop环境安装步骤
- hadoop 环境集群安装
- K近邻算法
- SpringMVC学习笔记(4):绑定数据(2)
- 如何给UItableView的headerView添加可伸展的Cell.headerView根据里面的tableView进行变化
- Duilib扩展—双击、右键消息扩展
- 强大的原生DOM选择器querySelector和querySelectorAll
- Hadoop 介绍与环境安装
- JDK常用工具
- CentOS 7中没有ifconfig命令,而且不能发现eth0
- tearing
- zznu 1257 HDU1052 田忌赛马
- 实现Walker之闪屏界面的实现分析
- 负数在计算机中如何表示
- HDUOJ 1018 Big Number (斯特林公式)
- IOS中的单例模式