大数据-Hadoop初探-01

一,大数据:
1.大数据起源于社交网络
QQ微信
发展于电商平台
淘宝,京东,一号店

2。***大数据的4V特征
体积数据量大TB PB Varity 
的数据多种多样文本(.log .txt .sql .xml)
Veracity真实性数据的准确性和可信赖度
速度速度快
价值价值密度低

Hadoop ->  传统的数据统计分析  Mysql
Spark  ->   Hadoop   在内存快100倍 在磁盘快10倍

1Byte = 8位p

1KB = 1,024字节

1MB = 1,024 KB = 1,048,576字节

1GB = 1,024 MB = 1,048,576 KB = 1,073,741,824字节1GB = 1,024 MB = 1,048,576 KB = 1,073,741,824字节

1TB = 1,024GB = 1,048,576MB = 1,099,511,627,776字节

1PB = 1,024 TB = 1,048,576 GB = 1,125,899,906,842,624字节

1EB = 1,024 PB = 1,048,576 TB = 1,152,921,504,606,846,976字节

1ZB = 1,024 EB = 1,180,591,620,717,411,303,424字节

1YB = 1,024 ZB = 1,208,925,819,614,629,174,706,176字节

3.大数据应用发展前景
拉勾网智联招聘
**大数据应用分析
1)统计 - “数据仓库
2)个性化推荐(预测)
3)机器学习图形计算
4)人工智能

二,Hadoop的概念
1.Hadoop的起源及发展史
大数据Hdoop 
Doug Coutting Hadoop之父

2 *** Goolge三大论文大数据的三驾马车
Goolge Hadoop 
文件系统GFS - > HDFS 
计算MpReduce - > Mapreduce 
表格BigTable - > HBase

3.企业大数据分析的数据来源
企业内部
:日志记录(应用服务器Nginx)
:关系型数据库

		外部渠道
				 	:爬虫(Python java)
				 	:用户行为数据(推荐系统)
						——》搜索习惯,关键字
						——》消费记录,支付宝
						API(网站埋点技术 jsSDK JavaSDK)

Apache Hadoop

Apache Hadoop软件库是一个框架,它允许使用简单的编程模型跨计算机群集分布式处理大型数据集。它旨在从单个服务器扩展到数千台机器,每台机器提供本地计算和存储。该库本身不是依靠硬件来提供高可用性,而是设计用于在应用层检测和处理故障,从而在一组计算机之上提供高可用性服务,每个计算机都可能出现故障。

4.Apache的Hadoop是一个应用的Java语言实现的软件框架,由再大量的廉价的计算机组成的集群中运
行海量数据的分布式parallel-计算框架,可以它应用让程序
请立即获取iTunes上千个节点PB状语从句:级别的数据.Hadoop是项目的总称,主要是由分布式存储(HDFS),
和分布式并行计算模型(MapReduce的)等组成。

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.

5. Hadoop的四个模块,也叫四大组件
Hadoop Common公共模块(支其他Hadoop模块的公用工具,包括FileSystem(面向通用文件系统的抽象类),远程程序调用(RPC)和序列化库)

Hadoop HDFS存储数据:一个为访问应用数据提供高吞吐量的分布式文件系统。

Hadoop YARN管理资源(Hadoop2.x)一个全局的工作调度与资源管理的框架 - “YARN是mareduce的云操作系统

Hadoop MapReduce并行计算框架:一个基于Yarn的大数据分布式并行计算框架

6.Hadoop的发售版本:
Apache 
Cloudera商业发行版(卖服务)
cdh HDP --- hortonworks

7.Hadoop的体系架构
HDFS 
存储海量数据
分布式
安全性
副本数据(放在不同的机器)
数据是以块(块)的方式进行存储的默认是128MB 1.0 64MB 
HaDoop2.X出现了yarn

YARN
	分布式资源管理框架
	 管理整个集群的资源(内存 cpu核数)
	 分配调度集群的资源

Mapreduce
	分两个阶段:Map和Reduce  计算框架,编程模型     “分而治之”的思想
	100副扑克,少了一张,那么可以找50个人。每个人分2副本扑克

	分布式并行计算
	每个数据集,进行逻辑业务处理(map)并行处理
	合并统计数据结果(reduce)

三.Hadoop的安装运行模式:
1.单机(本地)运行模式
无需运行任何守护进程,所有程序都在单JVM上执行,测试用
2.伪分布式
将所有的守护进程运行在一个节点
3.集群模式
1)完全分布式
不同的守护进程运行在不同的节点
2)HA 
Namenode HA 
3)联盟

Hadoop2.x环境搭建
准备工作
一,Linux环境
1.修改主机名【不能数字开头,不能特殊字符】#vi 
/ etc / sysconfig / network 
$ cat / etc / sysconfig / network

2.主机映射
# vi /etc/hosts
ip地址  主机名

windows下主机映射
C:/windows/system32/driver/hostsha

3.$ cat /etc/sysconfig/network-scripts/ifcfg-eth0
ONBOOT=yes
BOOTPROTO=static

二、jdk
(推荐)用户只有一个(不要是root),user01
创建两个目录
# mkdir /opt/software /opt/modules
/opt/software  存放*.tag.gz
/opt/modules    放置安装文件
# /

$ ll
drwxr-xr-x. 3 user01 user01 4096 Mar  7 07:34 modules
drwxr-xr-x. 2 root   root   4096 Nov 22  2013 rh
drwxr-xr-x. 2 user01 user01 4096 Mar  7 07:28 software

安装jdk
  $ tar -zxf jdk-7u67-linux-x64.tar.gz  -C ../modules/

卸载openJDK 
#rpm -e --nodeps XXX.rpm //不验证依赖进行卸载

 配置环境变量
  $sudo vim /etc/profile  
  $JAVA_HOME

export JAVA_HOME = / opt / modules / jdk1.7.0_67 
export PATH = $ PATH:$ JAVA_HOME / bin

 export HADOOP_HOME = / opt / modules / hadoop-2.5.0 
 export PATH = $ PATH:$ JAVA_HOME / bin:$ HADOOP_HOME / bin 
/opt/modules/hadoop-2.5.0

使配置生效
$ source /etc/profile
  
  Linux 防火墙
  # service iptables status   ##查看防火墙状态
  iptables: Fihrewall is not running.
  # service iptables stop     ##关闭防火墙


  关闭开机启动防火墙
  #  chkconfig iptables off   ##不随机启动

  关闭安全子系统
  # vi /etc/sysconfig/selinux
  SELINUX=disabled

三,配置Hadoop $ {HADOOP_HOME} --- hadoop的安装目录
解压安装hadoop【注意上传和解压过程中的用户权限问题】
$ tar -zxf hadoop-2.5.0.tar.gz -C / opt / modules /

1.配置hadoop的java环境支持,$ {HADOOP_HOME} / etc / hadoop目录下
hadoop-env.sh 
mapred-env.sh 
yarn-env.sh

在这3个文件中都配置
export JAVA_HOME = / opt / modules / jdk1.7.0_67

2.与hdfs相关的配置$ {HADOOP_HOME} / etc / hadoop 
1)core-site.xml 
============= core-site.xml ========== =========

<property>
    <name>fs.defaultFS</name>
    <value>hdfs://hadoop21.com:8020</value>
</property>

<!--hadoop在运行时产生的文件,元数据在本地的存放目录 -->
<property>
	<name>hadoop.tmp.dir</name>
	<value>/opt/modules/hadoop-2.5.0/data/tmp</value>
</property>

============================================

2)hdfs-site.xml

============= hdfs-site.xml ============ 


dfs.replication 
1

=============药膏============ 
指定你的主机名hadoop21.com

3)格式化namenode  只格式化一遍,不要重复格式化
${HADOOP_HOME}目录下:

$ b

17/03/21 00:34:52 INFO common.Storage: Storage directory /opt/modules/hadoop-2.5.0/data/dfs/name has been successfully formatted.
4)启动hdfs守护进程

$ h //启动namenode进程
$ sbin / hmkiadoop-daemon.sh启动datanode //启动datanode

$  jps

3097 Jps 
2931 NameNode 
3023 DataNode

网络界面访问
http://bigdata.ibeifeng.com:50070/

5)HDFS文件系统常用命令
$ bin/hdfs dfs   //可以查看所有的dfs相关的操作指令
$ bin/hdfs dfs -ls /  
$ bin/hdfs dfs -mkdir -p /input/test
$ bin/hdfs dfs  -rmdir /input/test
$ bin/hdfs dfs  -put /opt/software/jdk-7u67-linux-x64.tar.gz /input/test

配置secondarynamenode 
============= hdfs-site.xml ============ 
修改hdfs-site.xml,指定机器以及外部交互端口号

dfs.namenode。 secondary.http-address 
bigdata01:50090 

- “启动
sbin / hadoop-daemon.sh启动secondarynamenode

3.配置YARN任务调度(Mapreduce)资源管理(resourcemanager nodemanager)
$ {HADOOP_HOME} / etc / hadoop目录下配置yarn-site.xml 
======= yarn-site.xml ===== 
m = ===================================

复制并重名模板文件
$ cp etc / hadoop / mapred-site.xml.template etc / hadoop / mapred-site.xml 
======= mapred-site.xml ===== 
$ {HADOOP_HOME} / etc / hadoop的目录下配置mapred-site.xml中

mapreduce.framework.name yarn =====================================

4.启动hdfs纱线进程
$ sbin / hadoop-daemon.sh start namenode 
$ sbin / hadoop-daemon.sh启动datanode 
$ sbin / yarn-daemon.sh启动resourcemanager 
$ sbin / yarn-daemon.sh start nodemanager

5.检查hdfs纱线启动状态,即查看守护进程

6.向yarn提交mapreducer任务
1)计算圆周率
$ bin / yarn jar share / hadoop / mapreduce / hadoop-mapreduce-examples-2.5.0.jar pi 5 3 
2)wordcount词频统计
a。在用户主目录创建一个wordcount .txt 
$ vi /home/user01/wordcount.txt 
hadoop java 
html java 
linux hadoop 
yarn hadoop

b.上传到hdfs的input目录下
$ bin/hdfs dfs -put ~/wordcount.txt /input/

c.提交wordcount任务

执行方式/ m 
bin / yarn jar share / hadoop / mapreduce / hadoop-mapreduce-examples-2.5.0.jar wordcount / input / output

【报错】:再次执行wordcount会提示输出目录已存在
org.apache.hadoop.mapred.FileAlreadyExistsException:输出目录hdfs://hadoop.beifeng.com:8020 / output already exists 
【解决办法】
删除hdfs上的输出目录或者重新指定输出目录

7.配置日志聚合
======= mapred-site.xml ========= 
**追加到原来配置和后面

mapreduce.jobhistory.address 

[主机名]:10020

mapreduce.jobhistory.webapp.address [主机名]:19888 ============== yarn-site.xml ======= yarn.log-aggregation-enable true默认保存3- 7 yarn.log-aggregation.retain-seconds 86400 8.停止所有进程重新启动,以便配置文件生效1)停止进程$ sbin / hadoop-daemon.sh stop namenode $ sbin / hadoop-daemon.sh stop datanode $ sbin / yarn-daemon.sh stop resourcemanager $ sbin / yarn-daemon.sh stop nodemanager
2)启动进程

$ sbin / hadoop-daemon.sh start namenode 
$ sbin / hadoop-daemon.sh启动datanode 
$ sbin / yarn-daemon.sh启动resourcemanager 
$ sbin / yarn-daemon.sh start nodemanager

3)启动历史

启动历史服务
sbin / mr-jobhistory-daemon.sh启动historyserver

4)查看守护进程

28904 ResourceManager 
28724 NameNode 
28808 DataNod 
29152 NodeManager 
29304 JobHistoryServer 30561 
Jps

【HDFS权限检测】
============== hdfs-site.xml ======= 
1,取消HDFS权限检测功能
2,修改hdfs-site.xml 

dfs.permissions。启用
虚假

【常见问题】
1,格式化问题
一般情况格式化一次即可
bin / hdfs namenode -format 
生成fsimage 
操作HDFS之后生成编辑
多次格式化之前,需要清空hadoop.tmp.dir参数下设置的路径下的所有文件和目录
2,出现错误
一定要学会查看日志文件,查看日志/下载应用程序的.log后缀的文件
【框架名】【用户名】【进程名】【主机名】【文件后缀】
hadoop-beifeng -datanode-bigdata-04.log 
查看最新的日志记录,最新时间
3,clusterID 
查看VERSION 
[dfs / name / current]:namenode 
clusterID = CID-6172ab83-9c0a-4da0-8d14-d5e14a2c57cd

[dfs/data/current]:datanode
clusterID=CID-6172ab83-9c0a-4da0-8d14-d5e14a2c57cd
集群ID不一致
第一种解决方法:修改VERSION文件,以namenode的ID为准,改为一致即可
第二种解决方法:重新格式化生成

4,PID进程号(注意权限问题)
系统进程每次启动之后会有一个PID编号,启动每次会随机生成
多个用户启动进程,会记录不同用户的PID编号进程
建议不要多个用户混用
如果出现pid进程编号多个的话,直接删除rm /tmp/*.pid 
再用同一个用户去启动

5,主机主机名与IP不一致
检查核心现场
检查/ etc / hosts中
检查IP

【HDFS架构】
- “数据块块
- ”每个块默认大小:128MB,大小可以用户自定义修改
- “如果要修改就写到hdfs-site.xml中
一个块块默认只能保存一个128M大小的文件

dfs.blocksize 134217728新文件的默认块大小(以字节为单位)。您可以使用以下后缀(不区分大小写):k(千),m(兆),g(千兆),t(泰拉),p(贝塔),e(埃萨)指定大小(如128k,512m ,1g等),或以字节为单位提供完整的大小(例如128 MB的134217728)。

- “522MB,默认大小:128MB

	 -》128MB
	 -》128MB
	 -》128MB
	 -》128MB
	 -》128MB(10MB)

- “如果一个文件的大小小于块的大小,是不会占据整个块的空间的
- ”多个文件是不能放到同一个块中的

- “主节点:namenode 
- ”管理元数据
- “文件属性
名称
位置
权限
数据块
.... 
- ”从节点:datanode 
物理磁盘存储数据的
会和nodemanager部署在一起,通过slaves配置文件来指定

【namenode】
元数据存在内存
接收用户操作请求维护文件系统的目录结构管理文件与块之间的关系,
block与datanode之间的关系namenode管理:namenode支持对HDFS中的目录,
文件和块做类似文件系统的创建,修改,删除,列表文件和目录
等基本操作。块存储管理在整个HDFS集群中只有一个并且
只有唯一一个namenode节点,该节点负责对这个命名空间进行管理

【数据管理部】

存储文件文件被分成块存储在磁盘上为保证数据安全,文件
会有多个副本名称节点和客户端的指令进行存储或者检索块,并
且周期性的向名称节点节点报告它存了哪些文件的块

- “保证数据安全性机制
- ”副本数
- “一份文件写多份备份,写到不同机器节点上
- ”文件切分成块之后,对于每个块的备份
- “放置策略
- ”第一个块块的副本,如果客户端客户端在集群中的某台机器,那么第一个就放在这台
- “如果客户不在集群中,那么第一个块就随机放置
- ”第二个块块的副本,会放置在和第一个不同的机架的节点节点上,随机的
- “第三个块块的副本,会放置在和第二个机架的不同的节点节点上,随机的
- ”负载均衡,均匀分布
- “机架感知的机制
- ”数据块的扫描机制
- “HDFS文件生成key,”定期检查,生成KEY 
- “块的修复

【SecondaryNameNode】

的NameNode的元数据信息先往编辑文件中写,当编辑文件达到一定的阈值(3600秒)的时候,会开启合并的流程。
合并流程:
1.当开始合并的时候,SecondaryNameNode会把编辑和的FsImage拷贝到自己服务器所在内存中,开始合并,合并生成一个名为fsimage.ckpt的文件
。2.将fsimage.ckpt文件拷贝到NameNode上,成功后,再删除原有的fsimage,并将fsimage.ckpt文件重命名为fsimage。3. 
当SecondaryNameNode将编辑和fsimage拷贝走之后,NameNode会立刻生成一个edits.new文件,用于记录新来的元数据,当合并完成之后,原有的edits文件才会被删除,并将edits.new文件重命名为编辑文件,开启下一轮流程。

【优化配置(在hdfs-site中)】
1,fsimage 
记录某一个永久性检查点(Checkpoint)时整个HDFS的元信息
2,编辑
所有对HDFS的写操作都会记录在此文件中

1,单独指定的FsImage存放文件的路径
注意:你可以自己选择路径,也可以不修改使用默认的

		-》单独指定fsimage文件的路径
		<property>
		  <name>dfs.namenode.name.dir</name>
		  <value>file://${hadoop.tmp.dir}/dfs/name</value>
		  <description>Determines where on the local filesystem the DFS name node
			  should store the name table(fsimage).  If this is a comma-delimited list
			  of directories then the name table is replicated in all of the
			  directories, for redundancy. </description>
		</property>
		
		-》单独指定edits文件的路径
		<property>
		  <name>dfs.namenode.edits.dir</name>
		  <value>${dfs.namenode.name.dir}</value>
		  <description>Determines where on the local filesystem the DFS name node
			  should store the transaction (edits) file. If this is a comma-delimited list
			  of directories then the transaction file is replicated in all of the 
			  directories, for redundancy. Default value is same as dfs.namenode.name.dir
		  </description>
		</property>
		
		-》指定datanode数据本地路径
		<property>
		  <name>dfs.datanode.data.dir</name>
		  <value>file://${hadoop.tmp.dir}/dfs/data</value>
		  <description>Determines where on the local filesystem an DFS data node
		  should store its blocks.  If this is a comma-delimited
		  list of directories, then data will be stored in all named
		  directories, typically on different devices.
		  Directories that do not exist are ignored.
		  </description>
		</property>

- “HDFS的特点
优点:
1)处理超大文件
2)流式的访问数据
3)运行于廉价的商用机器集群上

缺点:
1)不适合低延迟数据访问
2)无法高效存储大量小文件
阿里巴巴开源了TFS淘宝文件系统,参考了HDFS 
3)不支持多用户写入及任意修改文件

【纱】架构
主从架构:主节点的ResourceManager 
从节点节点管理器

  1. ResourceManager的(RM)
    全局的资源管理器,整个集群只有一个,负责集群资源的统一管理和调度分配
  2. ApplicationMaster(AM)
    用户提交的每个应用程序均包含1个AM,
    主要功能包括:与RM调度器协商以获取资源(用集装箱表示); 
    将得到的任务进一步分配给内部的任务; 
    与NM通信以启动/停止任务; 
    监控所有任务运行状态,并在任务运行失败时重新为任务申请资源以重启任务。
  3. NodeManager(NM)
    NM是每个节点上的资源和任务管理器,一方面,它会定时地向RM汇报本节点的
    资源使用情况和各个Container的运行状态;另一方面,它接收并处理来自AM的
    集装箱启动/停止等各种请求。
  4. Container 
    Container是YARN中的资源抽象,它封装了某个节点上的多维度资源,
    如内存,CPU,磁盘,网络等,当AM向RM申请资源时,RM为AM返回的资源
    便是用容器表示的.YARN会为每个任务分配一个容器,该御姐任
    务只能使用该集装箱中描述的资源。

一,大数据:
1.大数据起源于社交网络
QQ微信
发展于电商平台
淘宝,京东,一号店

2。***大数据的4V特征
体积数据量大TB PB Varity 
的数据多种多样文本(.log .txt .sql .xml)
Veracity真实性数据的准确性和可信赖度
速度速度快
价值价值密度低

Hadoop ->  传统的数据统计分析  Mysql
Spark  ->   Hadoop   在内存快100倍 在磁盘快10倍

1Byte = 8位p

1KB = 1,024字节

1MB = 1,024 KB = 1,048,576字节

1GB = 1,024 MB = 1,048,576 KB = 1,073,741,824字节1GB = 1,024 MB = 1,048,576 KB = 1,073,741,824字节

1TB = 1,024GB = 1,048,576MB = 1,099,511,627,776字节

1PB = 1,024 TB = 1,048,576 GB = 1,125,899,906,842,624字节

1EB = 1,024 PB = 1,048,576 TB = 1,152,921,504,606,846,976字节

1ZB = 1,024 EB = 1,180,591,620,717,411,303,424字节

1YB = 1,024 ZB = 1,208,925,819,614,629,174,706,176字节

3.大数据应用发展前景
拉勾网智联招聘
**大数据应用分析
1)统计 - “数据仓库
2)个性化推荐(预测)
3)机器学习图形计算
4)人工智能

二,Hadoop的概念
1.Hadoop的起源及发展史
大数据Hdoop 
Doug Coutting Hadoop之父

2 *** Goolge三大论文大数据的三驾马车
Goolge Hadoop 
文件系统GFS - > HDFS 
计算MpReduce - > Mapreduce 
表格BigTable - > HBase

3.企业大数据分析的数据来源
企业内部
:日志记录(应用服务器Nginx)
:关系型数据库

		外部渠道
				 	:爬虫(Python java)
				 	:用户行为数据(推荐系统)
						——》搜索习惯,关键字
						——》消费记录,支付宝
						API(网站埋点技术 jsSDK JavaSDK)

Apache Hadoop

Apache Hadoop软件库是一个框架,它允许使用简单的编程模型跨计算机群集分布式处理大型数据集。它旨在从单个服务器扩展到数千台机器,每台机器提供本地计算和存储。该库本身不是依靠硬件来提供高可用性,而是设计用于在应用层检测和处理故障,从而在一组计算机之上提供高可用性服务,每个计算机都可能出现故障。

4.Apache的Hadoop是一个应用的Java语言实现的软件框架,由再大量的廉价的计算机组成的集群中运
行海量数据的分布式parallel-计算框架,可以它应用让程序
请立即获取iTunes上千个节点PB状语从句:级别的数据.Hadoop是项目的总称,主要是由分布式存储(HDFS),
和分布式并行计算模型(MapReduce的)等组成。

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.

5. Hadoop的四个模块,也叫四大组件
Hadoop Common公共模块(支其他Hadoop模块的公用工具,包括FileSystem(面向通用文件系统的抽象类),远程程序调用(RPC)和序列化库)

Hadoop HDFS存储数据:一个为访问应用数据提供高吞吐量的分布式文件系统。

Hadoop YARN管理资源(Hadoop2.x)一个全局的工作调度与资源管理的框架 - “YARN是mareduce的云操作系统

Hadoop MapReduce并行计算框架:一个基于Yarn的大数据分布式并行计算框架

6.Hadoop的发售版本:
Apache 
Cloudera商业发行版(卖服务)
cdh HDP --- hortonworks

7.Hadoop的体系架构
HDFS 
存储海量数据
分布式
安全性
副本数据(放在不同的机器)
数据是以块(块)的方式进行存储的默认是128MB 1.0 64MB 
HaDoop2.X出现了yarn

YARN
	分布式资源管理框架
	 管理整个集群的资源(内存 cpu核数)
	 分配调度集群的资源

Mapreduce
	分两个阶段:Map和Reduce  计算框架,编程模型     “分而治之”的思想
	100副扑克,少了一张,那么可以找50个人。每个人分2副本扑克

	分布式并行计算
	每个数据集,进行逻辑业务处理(map)并行处理
	合并统计数据结果(reduce)

三.Hadoop的安装运行模式:
1.单机(本地)运行模式
无需运行任何守护进程,所有程序都在单JVM上执行,测试用
2.伪分布式
将所有的守护进程运行在一个节点
3.集群模式
1)完全分布式
不同的守护进程运行在不同的节点
2)HA 
Namenode HA 
3)联盟

Hadoop2.x环境搭建
准备工作
一,Linux环境
1.修改主机名【不能数字开头,不能特殊字符】#vi 
/ etc / sysconfig / network 
$ cat / etc / sysconfig / network

2.主机映射
# vi /etc/hosts
ip地址  主机名

windows下主机映射
C:/windows/system32/driver/hostsha

3.$ cat /etc/sysconfig/network-scripts/ifcfg-eth0
ONBOOT=yes
BOOTPROTO=static

二、jdk
(推荐)用户只有一个(不要是root),user01
创建两个目录
# mkdir /opt/software /opt/modules
/opt/software  存放*.tag.gz
/opt/modules    放置安装文件
# /

$ ll
drwxr-xr-x. 3 user01 user01 4096 Mar  7 07:34 modules
drwxr-xr-x. 2 root   root   4096 Nov 22  2013 rh
drwxr-xr-x. 2 user01 user01 4096 Mar  7 07:28 software

安装jdk
  $ tar -zxf jdk-7u67-linux-x64.tar.gz  -C ../modules/

卸载openJDK 
#rpm -e --nodeps XXX.rpm //不验证依赖进行卸载

 配置环境变量
  $sudo vim /etc/profile  
  $JAVA_HOME

export JAVA_HOME = / opt / modules / jdk1.7.0_67 
export PATH = $ PATH:$ JAVA_HOME / bin

 export HADOOP_HOME = / opt / modules / hadoop-2.5.0 
 export PATH = $ PATH:$ JAVA_HOME / bin:$ HADOOP_HOME / bin 
/opt/modules/hadoop-2.5.0

使配置生效
$ source /etc/profile
  
  Linux 防火墙
  # service iptables status   ##查看防火墙状态
  iptables: Fihrewall is not running.
  # service iptables stop     ##关闭防火墙


  关闭开机启动防火墙
  #  chkconfig iptables off   ##不随机启动

  关闭安全子系统
  # vi /etc/sysconfig/selinux
  SELINUX=disabled

三,配置Hadoop $ {HADOOP_HOME} --- hadoop的安装目录
解压安装hadoop【注意上传和解压过程中的用户权限问题】
$ tar -zxf hadoop-2.5.0.tar.gz -C / opt / modules /

1.配置hadoop的java环境支持,$ {HADOOP_HOME} / etc / hadoop目录下
hadoop-env.sh 
mapred-env.sh 
yarn-env.sh

在这3个文件中都配置
export JAVA_HOME = / opt / modules / jdk1.7.0_67

2.与hdfs相关的配置$ {HADOOP_HOME} / etc / hadoop 
1)core-site.xml 
============= core-site.xml ========== =========

<property>
    <name>fs.defaultFS</name>
    <value>hdfs://hadoop21.com:8020</value>
</property>

<!--hadoop在运行时产生的文件,元数据在本地的存放目录 -->
<property>
	<name>hadoop.tmp.dir</name>
	<value>/opt/modules/hadoop-2.5.0/data/tmp</value>
</property>

============================================

2)hdfs-site.xml

============= hdfs-site.xml ============ 


dfs.replication 
1

=============药膏============ 
指定你的主机名hadoop21.com

3)格式化namenode  只格式化一遍,不要重复格式化
${HADOOP_HOME}目录下:

$ b

17/03/21 00:34:52 INFO common.Storage: Storage directory /opt/modules/hadoop-2.5.0/data/dfs/name has been successfully formatted.
4)启动hdfs守护进程

$ h //启动namenode进程
$ sbin / hmkiadoop-daemon.sh启动datanode //启动datanode

$  jps

3097 Jps 
2931 NameNode 
3023 DataNode

网络界面访问
http://bigdata.ibeifeng.com:50070/

5)HDFS文件系统常用命令
$ bin/hdfs dfs   //可以查看所有的dfs相关的操作指令
$ bin/hdfs dfs -ls /  
$ bin/hdfs dfs -mkdir -p /input/test
$ bin/hdfs dfs  -rmdir /input/test
$ bin/hdfs dfs  -put /opt/software/jdk-7u67-linux-x64.tar.gz /input/test

配置secondarynamenode 
============= hdfs-site.xml ============ 
修改hdfs-site.xml,指定机器以及外部交互端口号

dfs.namenode。 secondary.http-address 
bigdata01:50090 

- “启动
sbin / hadoop-daemon.sh启动secondarynamenode

3.配置YARN任务调度(Mapreduce)资源管理(resourcemanager nodemanager)
$ {HADOOP_HOME} / etc / hadoop目录下配置yarn-site.xml 
======= yarn-site.xml ===== 
m = ===================================

复制并重名模板文件
$ cp etc / hadoop / mapred-site.xml.template etc / hadoop / mapred-site.xml 
======= mapred-site.xml ===== 
$ {HADOOP_HOME} / etc / hadoop的目录下配置mapred-site.xml中

mapreduce.framework.name yarn =====================================

4.启动hdfs纱线进程
$ sbin / hadoop-daemon.sh start namenode 
$ sbin / hadoop-daemon.sh启动datanode 
$ sbin / yarn-daemon.sh启动resourcemanager 
$ sbin / yarn-daemon.sh start nodemanager

5.检查hdfs纱线启动状态,即查看守护进程

6.向yarn提交mapreducer任务
1)计算圆周率
$ bin / yarn jar share / hadoop / mapreduce / hadoop-mapreduce-examples-2.5.0.jar pi 5 3 
2)wordcount词频统计
a。在用户主目录创建一个wordcount .txt 
$ vi /home/user01/wordcount.txt 
hadoop java 
html java 
linux hadoop 
yarn hadoop

b.上传到hdfs的input目录下
$ bin/hdfs dfs -put ~/wordcount.txt /input/

c.提交wordcount任务

执行方式/ m 
bin / yarn jar share / hadoop / mapreduce / hadoop-mapreduce-examples-2.5.0.jar wordcount / input / output

【报错】:再次执行wordcount会提示输出目录已存在
org.apache.hadoop.mapred.FileAlreadyExistsException:输出目录hdfs://hadoop.beifeng.com:8020 / output already exists 
【解决办法】
删除hdfs上的输出目录或者重新指定输出目录

7.配置日志聚合
======= mapred-site.xml ========= 
**追加到原来配置和后面

mapreduce.jobhistory.address 

[主机名]:10020

mapreduce.jobhistory.webapp.address [主机名]:19888 ============== yarn-site.xml ======= yarn.log-aggregation-enable true默认保存3- 7 yarn.log-aggregation.retain-seconds 86400 8.停止所有进程重新启动,以便配置文件生效1)停止进程$ sbin / hadoop-daemon.sh stop namenode $ sbin / hadoop-daemon.sh stop datanode $ sbin / yarn-daemon.sh stop resourcemanager $ sbin / yarn-daemon.sh stop nodemanager
2)启动进程

$ sbin / hadoop-daemon.sh start namenode 
$ sbin / hadoop-daemon.sh启动datanode 
$ sbin / yarn-daemon.sh启动resourcemanager 
$ sbin / yarn-daemon.sh start nodemanager

3)启动历史

启动历史服务
sbin / mr-jobhistory-daemon.sh启动historyserver

4)查看守护进程

28904 ResourceManager 
28724 NameNode 
28808 DataNod 
29152 NodeManager 
29304 JobHistoryServer 30561 
Jps

【HDFS权限检测】
============== hdfs-site.xml ======= 
1,取消HDFS权限检测功能
2,修改hdfs-site.xml 

dfs.permissions。启用
虚假

【常见问题】
1,格式化问题
一般情况格式化一次即可
bin / hdfs namenode -format 
生成fsimage 
操作HDFS之后生成编辑
多次格式化之前,需要清空hadoop.tmp.dir参数下设置的路径下的所有文件和目录
2,出现错误
一定要学会查看日志文件,查看日志/下载应用程序的.log后缀的文件
【框架名】【用户名】【进程名】【主机名】【文件后缀】
hadoop-beifeng -datanode-bigdata-04.log 
查看最新的日志记录,最新时间
3,clusterID 
查看VERSION 
[dfs / name / current]:namenode 
clusterID = CID-6172ab83-9c0a-4da0-8d14-d5e14a2c57cd

[dfs/data/current]:datanode
clusterID=CID-6172ab83-9c0a-4da0-8d14-d5e14a2c57cd
集群ID不一致
第一种解决方法:修改VERSION文件,以namenode的ID为准,改为一致即可
第二种解决方法:重新格式化生成

4,PID进程号(注意权限问题)
系统进程每次启动之后会有一个PID编号,启动每次会随机生成
多个用户启动进程,会记录不同用户的PID编号进程
建议不要多个用户混用
如果出现pid进程编号多个的话,直接删除rm /tmp/*.pid 
再用同一个用户去启动

5,主机主机名与IP不一致
检查核心现场
检查/ etc / hosts中
检查IP

【HDFS架构】
- “数据块块
- ”每个块默认大小:128MB,大小可以用户自定义修改
- “如果要修改就写到hdfs-site.xml中
一个块块默认只能保存一个128M大小的文件

dfs.blocksize 134217728新文件的默认块大小(以字节为单位)。您可以使用以下后缀(不区分大小写):k(千),m(兆),g(千兆),t(泰拉),p(贝塔),e(埃萨)指定大小(如128k,512m ,1g等),或以字节为单位提供完整的大小(例如128 MB的134217728)。

- “522MB,默认大小:128MB

	 -》128MB
	 -》128MB
	 -》128MB
	 -》128MB
	 -》128MB(10MB)

- “如果一个文件的大小小于块的大小,是不会占据整个块的空间的
- ”多个文件是不能放到同一个块中的

- “主节点:namenode 
- ”管理元数据
- “文件属性
名称
位置
权限
数据块
.... 
- ”从节点:datanode 
物理磁盘存储数据的
会和nodemanager部署在一起,通过slaves配置文件来指定

【namenode】
元数据存在内存
接收用户操作请求维护文件系统的目录结构管理文件与块之间的关系,
block与datanode之间的关系namenode管理:namenode支持对HDFS中的目录,
文件和块做类似文件系统的创建,修改,删除,列表文件和目录
等基本操作。块存储管理在整个HDFS集群中只有一个并且
只有唯一一个namenode节点,该节点负责对这个命名空间进行管理

【数据管理部】

存储文件文件被分成块存储在磁盘上为保证数据安全,文件
会有多个副本名称节点和客户端的指令进行存储或者检索块,并
且周期性的向名称节点节点报告它存了哪些文件的块

- “保证数据安全性机制
- ”副本数
- “一份文件写多份备份,写到不同机器节点上
- ”文件切分成块之后,对于每个块的备份
- “放置策略
- ”第一个块块的副本,如果客户端客户端在集群中的某台机器,那么第一个就放在这台
- “如果客户不在集群中,那么第一个块就随机放置
- ”第二个块块的副本,会放置在和第一个不同的机架的节点节点上,随机的
- “第三个块块的副本,会放置在和第二个机架的不同的节点节点上,随机的
- ”负载均衡,均匀分布
- “机架感知的机制
- ”数据块的扫描机制
- “HDFS文件生成key,”定期检查,生成KEY 
- “块的修复

【SecondaryNameNode】

的NameNode的元数据信息先往编辑文件中写,当编辑文件达到一定的阈值(3600秒)的时候,会开启合并的流程。
合并流程:
1.当开始合并的时候,SecondaryNameNode会把编辑和的FsImage拷贝到自己服务器所在内存中,开始合并,合并生成一个名为fsimage.ckpt的文件
。2.将fsimage.ckpt文件拷贝到NameNode上,成功后,再删除原有的fsimage,并将fsimage.ckpt文件重命名为fsimage。3. 
当SecondaryNameNode将编辑和fsimage拷贝走之后,NameNode会立刻生成一个edits.new文件,用于记录新来的元数据,当合并完成之后,原有的edits文件才会被删除,并将edits.new文件重命名为编辑文件,开启下一轮流程。

【优化配置(在hdfs-site中)】
1,fsimage 
记录某一个永久性检查点(Checkpoint)时整个HDFS的元信息
2,编辑
所有对HDFS的写操作都会记录在此文件中

1,单独指定的FsImage存放文件的路径
注意:你可以自己选择路径,也可以不修改使用默认的

		-》单独指定fsimage文件的路径
		<property>
		  <name>dfs.namenode.name.dir</name>
		  <value>file://${hadoop.tmp.dir}/dfs/name</value>
		  <description>Determines where on the local filesystem the DFS name node
			  should store the name table(fsimage).  If this is a comma-delimited list
			  of directories then the name table is replicated in all of the
			  directories, for redundancy. </description>
		</property>
		
		-》单独指定edits文件的路径
		<property>
		  <name>dfs.namenode.edits.dir</name>
		  <value>${dfs.namenode.name.dir}</value>
		  <description>Determines where on the local filesystem the DFS name node
			  should store the transaction (edits) file. If this is a comma-delimited list
			  of directories then the transaction file is replicated in all of the 
			  directories, for redundancy. Default value is same as dfs.namenode.name.dir
		  </description>
		</property>
		
		-》指定datanode数据本地路径
		<property>
		  <name>dfs.datanode.data.dir</name>
		  <value>file://${hadoop.tmp.dir}/dfs/data</value>
		  <description>Determines where on the local filesystem an DFS data node
		  should store its blocks.  If this is a comma-delimited
		  list of directories, then data will be stored in all named
		  directories, typically on different devices.
		  Directories that do not exist are ignored.
		  </description>
		</property>

- “HDFS的特点
优点:
1)处理超大文件
2)流式的访问数据
3)运行于廉价的商用机器集群上

缺点:
1)不适合低延迟数据访问
2)无法高效存储大量小文件
阿里巴巴开源了TFS淘宝文件系统,参考了HDFS 
3)不支持多用户写入及任意修改文件

【纱】架构
主从架构:主节点的ResourceManager 
从节点节点管理器

  1. ResourceManager的(RM)
    全局的资源管理器,整个集群只有一个,负责集群资源的统一管理和调度分配
  2. ApplicationMaster(AM)
    用户提交的每个应用程序均包含1个AM,
    主要功能包括:与RM调度器协商以获取资源(用集装箱表示); 
    将得到的任务进一步分配给内部的任务; 
    与NM通信以启动/停止任务; 
    监控所有任务运行状态,并在任务运行失败时重新为任务申请资源以重启任务。
  3. NodeManager(NM)
    NM是每个节点上的资源和任务管理器,一方面,它会定时地向RM汇报本节点的
    资源使用情况和各个Container的运行状态;另一方面,它接收并处理来自AM的
    集装箱启动/停止等各种请求。
  4. Container 
    Container是YARN中的资源抽象,它封装了某个节点上的多维度资源,
    如内存,CPU,磁盘,网络等,当AM向RM申请资源时,RM为AM返回的资源
    便是用容器表示的.YARN会为每个任务分配一个容器,该御姐任
    务只能使用该集装箱中描述的资源。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值