Hadoop.之.入门部署
一、课程目标
-》大数据是什么?大数据能做什么?
-》什么是Hadoop?Hadoop的设计思想?
-》Hadoop如何解决大数据的问题?(什么是hdfs与yarn、MapReduce)
-》如何快速部署Hadoop环境(伪分布)
二、大数据的应用及发展
-》本质上的大数据技术:
-》学习一系列的软件工具(hadoop、spark)处理数据?
-》怎么处理?
-》大数据工程师与数据分析师区别?
-》数据分析师偏业务型:小数据量,样本分析
-》第二层处理
-》大数据(分析)工程师偏技术型:大数据量,总体分析
-》第一层的分析处理
-》应用及其工作岗位?
-》大数据分析:商业化公司
-》百度统计
-》友盟
-》talking data
-》Google Analytic
-》易分析
-》精准营销/推荐系统/数据预测/风险控制
-》用户画像:打标签
-》数据挖掘/机器学习
-》相关大数据技术?
-》数据采集
flume sqoop Logstash
-》数据存储
HDFS Hbase Hive tacyon redie kakfa
-》数据处理
MapReduce Hive spark storm flink kylin
-》数据应用
-》数据可视化
-》用户画像
-》推荐系统
-》数据挖掘
-》学习以上技术基础
Java(多线程、常见工具:集合类、字符串、日期、JVM)
SQL:大数据分析主流
Linux:所有的大数据平台都搭建在Linux上
三、Hadoop的介绍
-》hadoop功能:
-》Google的论文
-》GFS:大数据存储
-》MapReduce:大数据计算
-》BigTable : 解决大数据实时存储(Hbase)
-》大数据存储
HDFS
-》大数据计算
MapReduce
-》版本:
hadoop1:
hdfs
MapReduce
hadoop2:
hdfs
MapReduce
yarn
-》hadoop的官网
hadoop.apache.org
-》Hadoop四大组件
Hadoop Common:
The common utilities that support the other Hadoop modules.
功能:用于支持其他模块和其他工具的接口
Hadoop Distributed File System (HDFS?):
A distributed file system that provides high-throughput access to application data.
功能:分布式文件系统,用于存储大量数据的
Hadoop YARN:
A framework for job scheduling and cluster resource management.
功能:分布式任务调度和资源管理
Hadoop MapReduce: A YARN-based system for parallel processing of large data sets.
功能:分布式处理数据计算模型(方式)
-》分布式概念:区别于传统的单节点
-》分布式存储
-》单节点:
1个2TB文件:每台电脑拥有600GB存储空间
-》自己手动将2TB文件拆分成4个小文的
-》在第一台机器存储一个文件
-》一直存到第4台机器
问题:
-》存储时,自己手动将文件分割
-》1个文件 -》 4个文件
-》读,读4个文件
-》分布式:
1个2TB文件:每台机器拥有600GB存储空间
-》将每台机器彼此之间构建一种关系
-》让所有的机器变成一个整体:集群cluster
-》分布式计算
-》单节点:两颗CPU8核 64GB
一台机器执行:10天
-》分布式:集群:20颗CPU80核 640GB 单台 * 10
集群机器执行:1天
四、分布式存储:HDFS
-》HDFS:分布式文件系统
-》功能:
-》管理存储文件
-》文件数据的读写
-》特点:
-》分布式:将多台机器组成一个集群
-》CS模式:
客户端:client
服务端:Server
-》主从架构:
主:NameNode(只有一个)
-》接收客户端的请求
-》负责管理所有的从节点
-》负责管理元数据(内存)
-》数据文件存储的账本
-》每个文件被分成了几个块
-》每个块有几个副本
-》分别每个块存在那台机器
从:DataNode(可以有很多个)
-》负责真正的数据的读写
客户端:
-》提交用户的所有请求给服务端
-》将用户的文件存储时进行分割
-》将用户的文件读取时进行合并
Secondary NameNode:辅助进程
-》功能:辅助NameNode备份元数据
将NameNode内存中的元数据同步到本地磁盘中
-》分块:
HDFS会将用户存入的每一个文件按照128M一个块进行分块
500M:
block1:128M
block2:128M
block3:128M
block4:116M
每个块存储在不同从节点中
-》副本:安全
HDFS默认会为每个块复制两份,所以每一个块在hdfs上总共存了3份
node1 node2 node3 node4
block1 block2 block3 block4
block2 block1 block2 block1
block3 block3 block4
block4
-》读写流程
用户 客户端 服务端
我们自己 命令行 NameNode/DataNode
-》写:
-》用户操作客户端提交写的请求
-》客户端将用户提供的文件进行分块,128M一个块
-》客户端将第一个块写请求给NameNode
-》NameNode接收客户端请求,NameNode会返回该数据块存储的DataNode的地址
-》客户端选择离自己最近的那台机器将数据块提交给那台DataNode,第一台存储的DataNode会将数据块进行复制给其他的两台DataNode
-》DataNode将存储结果返回给NameNode,NameNode记录元数据
-》重复以上操作,直到每个块都存完了
-》客户端所有块存储完成,直接返回
-》读
-》客户通过客户端发送读请求
-》客户端请求NameNode,NameNode返回每个块的存储地址
-》客户端从离自己最近的机器上读取每个块,将每个块进行合并成一个文件,返回给客户
-》HDFS是逻辑还是实际文件系统?
-》HDFS是由多台机器合在一起变成集群,对外提供统一接口的
-》HDFS是一个软件
软件 操作系统 硬件
hdfs Linux文件系统 硬盘
-》HDFS是一个基于多台机器的文件系统构建的一个虚拟的FS
-》所有的程序运行的物理流程
-》启动程序
-》读取硬盘中的数据加载到内存
-》CPU只能读取内存中的数据
五、Hadoop的安装部署
-》hadoop部署模式
-》本地模式:一般用于开发程序的测试
-》伪分布式:一台机器,一般用于测试
-》完全分布式:企业实际环境
-》Linux环境准备
-》配置所有机器的ip、主机名、映射
-》关闭分防火墙、selinux
-》创建统一的目录及用户
-》必须使用一个普通用户来操作
rdedu
-》设置统一的安装目录
sudo mkdir -p /opt/modules :这个目录用作安装目录
sudo mkdir -p /opt/datas :这个目录用作放数据文件
sudo mkdir -p /opt/tools :这个目录用作放软件安装包
sudo chown -R rdedu:rdedu /opt/modules
sudo chown -R rdedu:rdedu /opt/datas
sudo chown -R rdedu:rdedu /opt/tools
-》Linux句柄数:最大线程数、最大文件数……
-》配置SSH免密钥登录:
ssh:是一种安全加密协议
ssh username@hostname
ssh bigdata-training01.erongda.com:以当前用户登录该机器
exit:退出
-》配置ssh免密钥登录
ssh-keygen -t rsa 放入命令行执行,一路回车
ssh-copy-id bigdata-training01.erongda.com
-》配置时间同步:分布式集群中要求每一台机器的时间是一致
-》安装JDK
-》上传jdk到tools目录下
-》解压安装: tar -zxf /opt/tools/jdk-8u91-linux-x64.tar.gz -C /opt/modules/
-》配置环境变量:sudo vim /etc/profile
注意:这个文件不能随便乱动,如果不小心修改了什么,强制退出不要保存
在文件的尾部添加:
export JAVA_HOME=/opt/modules/jdk1.8.0_91
export PATH=$PATH:$JAVA_HOME/bin
-》刷新环境变量
source /etc/profile
-》验证:
java -version
-》Hadoop安装部署
-》下载安装Hadoop
-》发行公司:
-》Apache
-》Cloudera:CDH
-》HortonWorks:HDP
-》星环大数据:TDH
-》发行版本
-》Hadoop1:1.x和0.x
-》Hadoop2:企业中最多
2.5-2.9
-》Hadoop3:去年发布正式版本,生产环境一般不会用的
-》下载地址
http://archive.apache.org/dist/
-》解压安装
tar -zxvf /opt/tools/hadoop-2.7.3.tar.gz -C /opt/modules/
cd /opt/modules/hadoop-2.7.3/
bin:该目录一般存放命令或者客户端
etc/conf:配置文件目录
lib:放依赖jar包
logs:放日志文件
-》修改配置
http://hadoop.apache.org/docs/r2.7.6/hadoop-project-dist/hadoop-common/SingleCluster.html#Pseudo-Distributed_Operation
/opt/modules/hadoop-2.7.3/etc/hadoop :配置文件目录
-》修改env文件
hadoop-env.sh:
mapred-env.sh:
yarn-env.sh:
export JAVA_HOME=/opt/modules/jdk1.8.0_91
-》修改site文件
core-site.xml:配置Hadoop的全局属性
<!--指定HDFS的地址即NameNode的地址-->
<property>
<name>fs.defaultFS</name>
<value>hdfs://bigdata-training01.erongda.com:8020</value>
</property>
mkdir /opt/modules/hadoop-2.7.3/datas
<!--指定Hadoop的临时存储目录-->
<property>
<name>hadoop.tmp.dir</name>
<value>/opt/modules/hadoop-2.7.3/datas</value>
</property>
hdfs-site.xml:配置HDFS的属性
slaves:用于指定所有从节点的地址
bigdata-training01.erongda.com
-》启动服务
-》第一次使用HDFS,先进行格式化
cd /opt/modules/hadoop-2.7.3/
bin/hdfs namenode -format
-》启动HDFS
启动主节点
sbin/hadoop-daemon.sh start namenode
启动从节点
sbin/hadoop-daemon.sh start datanode
-》测试运行
-》jps
6582 Jps
6328 NameNode
6479 DataNode
-》访问web端口:50070
在浏览器中输入:ip:50070
192.168.134.222:50070
-》hdfs的文件系统:类似于Linux文件系统,从/目录开始
-》执行HDFS的客户端操作
-》创建文件夹
bin/hdfs dfs -mkdir -p /wordcount/input
-》上传文件:从Linux到hdfs
bin/hdfs dfs -put /opt/datas/wc.txt /wordcount/input/
-》下载文件:从hdfs到Linux
bin/hdfs dfs -get /wordcount/input/wc.txt ~/
-》删除文件
bin/hdfs dfs -rm -r /test
-》查看文件
bin/hdfs dfs -cat /wordcount/input/wc.txt
-》复制、移动……
-cp
-mv
客户 -> 客户端 -> NameNode/DataNode
-》关闭HDFS
sbin/hadoop-daemon.sh stop namenode
sbin/hadoop-daemon.sh stop datanode
Connection refused:连接拒绝
-》主机地址解析不对
-》服务没有开启(端口没有开放)
六、分布式资源管理和任务调度:Yarn
-》资源管理
-》所有资源(整个集群中所有的资源)分配
10台机器 每台机器1核1G
-》任务调度
-》一次性提交10个程序
-》谁先运行,谁后运行?每个程序能用多少资源?
-》特点:
-》分布式
-》主从架构
主:ResourceManager
-》负责接收所有用户的请求
-》负责管理所有从节点
-》负责资源管理和任务调度
从:NodeManager
-》负责真正执行程序
-》MapReduce程序在Yarn上执行的流程
1-客户通过客户端提交处理数据的程序
2-客户端将请求提交给RM,RM随机选择一个NM,在该NM上启动APP Master
3-APP Master向RM请求资源和指令
4-RM中的Resource Schedule将每台NM能够使用的资源信息和指令封装成container返回给APP Master
注意:真正resourcemanager做的是资源管理,控制所有nodemanager能够使用自己多少资源
5-APP Master将资源和指令发送给所有的NM
6-所有的NM,启动Map task和Reduce task来运行程序
7-每个NM运行完成之后将结果反馈给APP Master
8-APP Master将运行结果返回给RM
-》MapReduce的运行过程
input:输入
map:将一个大任务拆分成多个小的任务
shuflle
reduce:将每个小任务的结果进行合并
ouput:将结果进行保存
-》安装部署Yarn
-》下载解压Hadoop
-》修改配置
-》修改hdfs配置
-》修改MapReduce配置:etc/hadoop/mapred-site.xml
mv etc/hadoop/mapred-site.xml.template etc/hadoop/mapred-site.xml
<!--指定MapReduce程序运行在yarn上-->
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
-》修改Yarn配置:etc/hadoop/yarn-site.xml
<!--指定yarn上运行的程序的类型-->
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
<!--指定resourcemanager的地址-->
<property>
<name>yarn.resourcemanager.hostname</name>
<value>bigdata-training01.erongda.com</value>
</property>
-》修改slaves文件:指定datanode和nodemanager的地址
-》启动服务
启动resourcemanager
sbin/yarn-daemon.sh start resourcemanager
启动nodemanager
sbin/yarn-daemon.sh start nodemanager
-》测试运行
7376 ResourceManager
7714 Jps
7010 NameNode
7604 NodeManager
6479 DataNode
访问web端口:8088
http://192.168.134.222:8088
-》提交wordcount程序
统计文件中每个单词出现多少次
-》将MapReduce程序提交给Yarn来执行,让nodemanager按照MapReduce的方式来执行
-》MapReduce输入默认读hdfs的文件,必须已存在
-》MapReduce输出的目录是不能提前存在的
bin/yarn jar share/hadoop/mapreduce/hadoop-mapreduce-examples-2.7.3.jar wordcount /wordcount/input/wc.txt /wordcount/ouput
通过yarn客户端提交运行一个jar包,jar包在share/hadoop/mapreduce/hadoop-mapreduce-examples-2.7.3.jar路径下,运行jar包中的wordcount程序,输入目录是/wordcount/input/wc.txt,输出目录是/wordcount/ouput
-》必须记住端口;
NameNode的RPC端口:8020
NameNode的http端口:50070
ResourceManager的Rpc端口:8032
ResourceManager的http端口:8088
-》所有客户端的请求、心跳、汇报等等都走rpc端口
-》所有web界面的提供都走http端口
-》关机前记得关闭所有进程
将启动命令中的 start更换为stop
如有问题,欢迎纠正!!!
如有转载,请标明源处:https://www.cnblogs.com/Charles-Yuan/p/9614615.html
Hadoop.之.入门部署的更多相关文章
- 1.2 Hadoop快速入门
1.2 Hadoop快速入门 1.Hadoop简介 Hadoop是一个开源的分布式计算平台. 提供功能:利用服务器集群,根据用户定义的业务逻辑,对海量数据的存储(HDFS)和分析计算(MapReduc ...
- Hadoop快速入门
目的 这篇文档的目的是帮助你快速完成单机上的Hadoop安装与使用以便你对Hadoop分布式文件系统(HDFS)和Map-Reduce框架有所体会,比如在HDFS上运行示例程序或简单作业等. 先决条件 ...
- 第一篇 UEditor入门部署和体验
UEditor 是由百度「FEX前端研发团队」开发的所见即所得富文本web编辑器,具有轻量,可定制,注重用户体验等特点,开源基于MIT协议,允许自由使用和修改代码. UEditor富文本编辑器,轻量, ...
- hadoop pig入门总结
在这里贴一个pig源码的分析,做pig很长时间没做笔记,不包含任何细节,以后有机会再说吧 http://blackproof.iteye.com/blog/1769219 hadoop pig入门总结 ...
- Hadoop大数据部署
Hadoop大数据部署 一. 系统环境配置: 1. 关闭防火墙,selinux 关闭防火墙: systemctl stop firewalld systemctl disable firewalld ...
- Hadoop生态圈-Oozie部署实战
Hadoop生态圈-Oozie部署实战 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.Oozie简介 1>.什么是Oozie Oozie英文翻译为:驯象人.一个基于工作流 ...
- Hadoop生态圈-Azkaban部署实战
Hadoop生态圈-Azkaban部署实战 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.Azkaban部署流程 1>.上传azkaban程序并创建解压目录 [yinz ...
- Hadoop系列之(二):Hadoop集群部署
1. Hadoop集群介绍 Hadoop集群部署,就是以Cluster mode方式进行部署. Hadoop的节点构成如下: HDFS daemon: NameNode, SecondaryName ...
- Hadoop生态圈-Sqoop部署以及基本使用方法
Hadoop生态圈-Sqoop部署以及基本使用方法 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. Sqoop(发音:skup)是一款开源的工具,主要用于在Hadoop(Hive)与 ...
随机推荐
- [No0000ED]IPSec策略之管理
IP安全策略 @echo off :again set num= set ippolicyname= set ismmpfs= set keytime= set keyexpress= set new ...
- 双栈算术表达式求值算法 栈(Stack) - Java实现
https://mp.weixin.qq.com/s/dg8mgd6CIQ7Tui1_fQwSBA https://github.com/toywei/DataStructure/tree/maste ...
- Laravel 5.2 INSTALL- node's npm and ruby's bundler.
https://getcomposer.org/doc/00-intro.md Introduction# Composer is a tool for dependency management i ...
- JavaScript面向对象之创建类和方法
一,js使用函数来定义类而不是像别的编程语言一样通过关键字class来定义,通过类本身(this)和原型(prototype)来完成面对对象编程! 示例1, //创建ElectronicSignatu ...
- php 之数组
PHP之array数组 PHP中的数组实际上是一个有序映射.映射是一种把values关联到keys的类型.此类型在很多方面做了优化, 因此可以把它当成真正的数组,或列表(向量),散列表(是映射的一种实 ...
- html select控件的jq操作
html select控件的jq操作 1.判断select选项中 是否存在Value="paraValue"的Item $("#selectid option[@valu ...
- [Day5]方法
1.方法 (1)概念:方法就是用来完成解决某件事情或实现某个功能的办法 会包含很多条语句用于完成某些有意义的功能 通过在程序代码中引用方法名称和所需的参数,实现在该程序中执行(或称调用)该方法 (2) ...
- [skill] ctags支持函数声明
一般情况下,使用ctags的时候,默认使用如下命令: ctags -R ./ 但是这种情况下,如果运行在include文件夹下的时候,好多函数是跳转不过去的,因为这种默认情况下,函数声明并不会被索引. ...
- MySQL 数据库登录查询
1. 进入到bin目录: 键入cd..,一直到出现C:\ 为止 然后cd bin所在路径: 如: C:\cd C:\Program Files\MySQL\MySQL Server 5.7 ...
- 我的grunt学习笔记
什么是grunt? Grunt是一个JavaScript任务运行器,用于自动执行频繁任务(如压缩,编译,单元测试)的工具.它使用命令行界面来运行在文件中定义的自定义任务(这个文件称为Gruntfil ...