一、大数据的4V特征
Volume 数据量大 TB PB
Varity 的数据多种多样文本(.log .txt .sql .xml)
Veracity 价值密度低 商业价值高
Velocity 速度快
二、Hadoop 的概念
Hadoop是一个应用java语言实现的软件框架,
可扩展的分布式并行计算框架,
它可以让应用程序支持上千个节点和PB级别的数据。
Hadoop是项目的总称,主要是由分布式存储(HDFS)、和分布式并行计算(MapReduce)等组成。
- Hadoop的四个模块,也叫四大组件
Hadoop Common公共模块(支其他Hadoop模块的公用工具,包括FileSystem(面向通用文件系统的抽象类)、远程过程调用(RPC)和序列化库)
Hadoop HDFS 存储数据:一个为访问应用数据提供高吞吐量的分布式文件系统。
Hadoop YARN 管理资源(Hadoop2.x)
一个全局的任务调度与资源管理的框架--》YARN是mareduce的云操作系统
Hadoop MapReduce 并行计算框架:一个基于Yarn的大数据分布式并行计算框架
2.Hadoop的发行版本:
Apache
Cloudera 商业发行版(卖服务)cdh
6.Hadoop的体系架构
HDFS
NameNode(一个集群只有一个active):用于保存元数据信息(Namenode将元数据保存在 内存中),同时会在硬盘上保留一份。元数据(Filename、副本数,各个副本所在的节点的位置)
学生信息管理系统书的目录
DataNode:用于具体保存数据的
在HDFS上保存的数据副本数,默认是3个,副本数可以设置
每个班级的学生(本人)
每个章节的具体的内容
SecondaryNameNode: 用于同步元数据信息
YARN
ResourceManager:负责全局的资源管理(Container:硬件资源(CPU,内存,硬盘))
教务处主任(教学资源:教室:实验室 阶梯教室 体育馆)
Nodemanager:负责所在节点上的资源
班主任 机房管理员
Mapreduce
分两个阶段:Map和Reduce 计算框架,编程模型 “分而治之”的思想
100副扑克,少了一张,那么可以找50个人。每个人分2副本扑克
分布式并行计算
三、Hadoop的安装运行模式:
单机模式:
1.单机(本地)运行模式
无需运行任何守护进程,所有程序都在单个JVM上执行,测试用
分布式:
2.伪分布式
将所有的守护进程运行在一个节点`这里写代码片`
3.集群模式
1)完全分布式
不同的守护进程运行在不同的节点
2)HA
Namenode HA Resourcemanager HA
3)联盟
Hadoop2.x环境搭建
准备工作
一、Linux环境
# vi /etc/sysconfig/network
$ cat /etc/sysconfig/network
2.主机映射
# vi /etc/hosts
ip地址 主机名
windows下主机映射
C:/windows/system32/driver/hosts
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 放置安装文件
# chown -R user01:user01 /opt/modules/ /opt/software/
$ 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/
配置环境变量
# vim /etc/profile
#JAVA_HOME
export JAVA_HOME=/opt/modules/jdk1.7.0_67
export PATH=$PATH:$JAVA_HOME/bin
使配置生效
# source /etc/profile
卸载openJDK
# rpm -qa | grep jdk
# rpm -e --nodeps XXX.rpm //不验证依赖进行卸载
Linux 防火墙
# service iptables status ##查看防火墙状态
iptables: Firewall 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===================
<!--NameNode地址,8020是指定进程8020,访问入口 -->
<property>
<name>fs.defaultFS</name>
<value>hdfs://bigdata.ibeifeng.com:8020</value>
</property>
<!--hadoop在运行时产生的文件,元数据在本地的存放目录 -->
<property>
<name>hadoop.tmp.dir</name>
<value>/opt/modules/hadoop-2.5.0/data</value>
</property>
============================================
2)hdfs-site.xml
=============hdfs-site.xml============
<!--存放到hdfs上的文件的副本数,伪分布式配置为1 -->
<property>
<name>dfs.replication</name>
<value>1</value>
</property>
======================================
3)格式化namenode 只格式化一遍,不要重复格式化
${HADOOP_HOME}目录下:
$ bin/hdfs namenode -format
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守护进程
$ sbin/hadoop-daemon.sh start namenode //启动namenode进程
$ sbin/hadoop-daemon.sh start datanode //启动datanode
$ jps
3097 Jps
2931 NameNode
3023 DataNode
web访问界面
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
3.配置YARN 任务调度 (Mapreduce) 资源管理(resourcemanager nodemanager)
${HADOOP_HOME}/etc/hadoop目录下配置yarn-site.xml
=======yarn-site.xml=====
<!-- 指定ResorceManager所在服务器的主机名-->
<property>
<name>yarn.resourcemanager.hostname</name>
<value>[hostname]</value>
</property>
<!-- 指明在执行MapReduce的时候使用shuffle-->
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
====================================
复制并重名模板文件
$ cp etc/hadoop/mapred-site.xml.template etc/hadoop/mapred-site.xml
=======mapred-site.xml=====
${HADOOP_HOME}/etc/hadoop目录下配置mapred-site.xml
<!-- 指定MapReduce基于Yarn来运行-->
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
=====================================
4.启动hdfs yarn进程
$ sbin/hadoop-daemon.sh start namenode
$ sbin/hadoop-daemon.sh start datanode
$ sbin/yarn-daemon.sh start resourcemanager
$ sbin/yarn-daemon.sh start nodemanager
5.检查hdfs yarn启动状态,即查看守护进程
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 ~/wordcoun.txt /input/
c.提交wordcount任务
执行方式
bin/hadoop jar share/hadoop/mapreduce/hadoop-mapreduce-examples-2.5.0.jar wordcount /input /output
【报错】:再次执行wordcount会提示输出目录已存在
org.apache.hadoop.mapred.FileAlreadyExistsException: Output directory hdfs://hadoop.beifeng.com:8020/output already exists
【报错】:unknowHostException
检查主机映射
【解决办法】
删除hdfs上的输出目录或者重新指定输出目录
【常见错误】:
1:主机名配置错误或者未配置主机名;
2:配置的参数【<name>标签对】错误,<value>标签对参数有空格
3:xml的注释格式错误,标签对未对齐
4:namenode重复格式化
5:修改配置参数未保存,进程未重启
6:
7.配置日志聚合
=======mapred-site.xml=========
**追加到原来配置和后面
<!--指定jobhistory服务的主机及RPC端口号-->
<property>
<name>mapreduce.jobhistory.address</name>
<!--配置实际的主机名和端口-->
<value>[hostname]:10020</value>
</property>
<!--指定jobhistory服务的web访问的主机及RPC端口号-->
<property>
<name>mapreduce.jobhistory.webapp.address</name>
<value>[hostname]:19888</value>
</property>
==============yarn-site.xml=======
<!--启用日志聚合功能-->
<property>
<name>yarn.log-aggregation-enable</name>
<value>true</value>
</property>
<!--日志保存时间-->
<property>
<name>yarn.log-aggregation.retain-seconds</name>
<value>86400</value>
</property>
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 start datanode
$ sbin/yarn-daemon.sh start resourcemanager
$ sbin/yarn-daemon.sh start nodemanager
3)启动历史
启动历史服务
sbin/mr-jobhistory-daemon.sh start historyserver
4)查看守护进程
28904 ResourceManager
28724 NameNode
28808 DataNode
29152 NodeManager
29304 JobHistoryServer
30561 Jps
查看hdfs的web界面
http://hadoop.beifeng.com:50070
*28724 NameNode
*28808 DataNode
查看yarn的web访问界面
http://hadoop.beifeng.com:8088
*28904 ResourceManager
28724 NameNode
28808 DataNode
*29152 NodeManager
查看历史日志的web访问界面
http://hadoop.beifeng.com:19888
28904 ResourceManager
28724 NameNode
28808 DataNode
29152 NodeManager
* 29304 JobHistoryServer