Hadoop详解(一)——大数据和Hadoop的简介、Hadoop伪分布式的安装步骤

来源:互联网 发布:哪家淘宝店铺女装很潮 编辑:程序博客网 时间:2024/04/29 06:02

大数据简介

大数据体现


以上几个例子体现了大数据无处不在。

目前很多网络巨头都在使用大数据


分析趋势,随着互联网对网民的理解,网民对网络的反作用,互联网将变得越来越智能,它在满足用户需求的同时,也在创造新的需求。

谷歌的盈利在于所有的软件应用都是在线的,用户在免费使用这些软件产品的同时,把个人的行为、喜好等信息也免费的送给了谷歌。因此,谷歌的产品越丰富,它对用户的理解就越深入,它的广告就越精准,广告的价值就越高。

这是正向的循环,谷歌利用好用的、免费的软件产品,换取对用户的理解,通过精准的广告,找到生财之路,颠覆了微软卖软件拷贝赚钱的模式,成为互联网的巨头。

什么是大数据?

大数据并不仅仅指海量数据,而是指数型增长的海量数据。


注意:大数据并不是云计算,云计算指的是数据处理技术。大数据是以数据融合、综合处理为方向。


大数据的4V特性

体量Volume非结构化数据的超大规模和增长,占据总数据量的80%~90%,比结构化数据增长快到10倍到50倍,是传统数据的10倍到50倍。

多样性Variety。大数据的异构和多样性,存在很多不同的形式(文本、图像视频、机器数据)。无模式或者模式不明显,语法或语义不连贯。

价值密度Value。存在很多大量不相关的信息,用来对未来趋势与模式的可预测分析,深度复杂分析(机器学习、人工智能VS传统商务智能(咨询、报告等))

速度Velocity实时分析而非批量式分析,数据输入、处理与丢弃,立竿见影而非事后生效。

特性的具体体现如下:

-Value 价值:

挖掘大数据的价值类似于沙里淘金,从海量数据中挖掘出稀疏但珍贵的信息。价值密度低是大数据的一个典型特征。


-Variety 多样性

企业内部的经营交易信息;物联网世界中商品,物流信息;互联网世界中人与人交互信息,位置信息是大数据的主要来源。能够在不同的数据模型中,进行交叉分析的技术,是大数据的核心技术之一,包括语义分析技术,图文转换技术,模式识别技术,地理信息技术等,都会在大数据分析时获得应用。


-Velocity 速度

1s 是临界点

对于大数据应用而言,必须在1秒内形成答案,否则处理结果就是过时和无效的。

实时处理的要求,是区别大数据引用和传统数据仓库技术,BI技术的关键差别之一。

-Volume  数据量

PB是大数据的临界点 KB->MB->GB->TB->PB->EB->ZB->YB->NB->DB


大数据的组成和展现方式

大数据的组成


大数据的展现方式:大型控制中心、移动终端


在多样性、体量、速度三大主要特征的指引下,大数据将有新型的展现方式:大型控制中心和移动终端,实现数据的实时处理和快速决策

哪些公司使用Hadoop

雅虎北京全球软件研发中心、中国移动研究院,英特尔研究院,金山软件,百度,腾讯,新浪,搜狐,淘宝,IBM,FaceBook,Amazon,Yahoo

Hadoop简介

Hadoop是什么?

官方解释是:

What Is Apache Hadoop?
The Apache™ Hadoop® project develops open-source software for reliable, scalable, distributed computing.

Hadoop是一个开源,可靠,可扩展的分布式计算软件。

Hadoop用于解决以下问题:

  • 海量数据的存储(HDFS)
  • 海量数据的分析(MapReduce)
  • 资源管理调度(YARN)

作者:Doug Cutting
受Google三篇论文的启发(GFS、MapReduce、BigTable)

始于apache项目Nutch
2003年Google发表了关于GFS的论文
2004年Nutch的开发者开发了NDFS
2004年Google发表了关于MapReduce的论文
2005年MapReduce被引入了NDFS
2006年改名为Hadoop,NDFS的创始人加入Yahoo,Yahoo成立了一个专门的小组发展Hadoop

Hadoop大事记
2004年 -- 最初的版本(现在称为HDFS和MapReduce)由Doug Cutting和Mike Cafarella开始实施。
2005年12月 -- Nutch移植到新的框架,Hadoop在20个节点上稳定运行。
2006年01月 -- Doug Cutting加入雅虎。
2006年02月 -- Apache Hadoop项目正式启动以支持MapReduce和HDFS的独立发展。
2006年02月 -- 雅虎的网格计算团队采用Hadoop。
2006年04月 -- 标准排序(10 GB每个节点)在188个节点上运行47.9个小时。
2006年05月 -- 雅虎建立了一个300个节点的Hadoop研究集群。
2006年05月 -- 标准排序在500个节点上运行42个小时(硬件配置比4月的更好)。
2006年11月 -- 研究集群增加到600个节点。
2006年12月 -- 标准排序在20个节点上运行1.8个小时,100个节点3.3小时,500个节点5.2小时,900个节点7.8个小时。
2007年01月 -- 研究集群到达900个节点。
2007年04月 -- 研究集群达到两个1000个节点的集群。
2008年04月 -- 赢得世界最快1TB数据排序在900个节点上用时209秒。
2008年10月 -- 研究集群每天装载10 TB的数据。
2009年03月 -- 17个集群总共24 000台机器。
2009年04月 -- 赢得每分钟排序,59秒内排序500 GB(在1400个节点上)和173分钟内排序100 TB数据(在3400个节点上)。

hadoop具体能做什么工作?

hadoop擅长日志分析,facebook就用Hive来进行日志分析,2009年时facebook就有非编程人员的30%的人使用HiveQL进行数据分析;淘宝搜索中的自定义筛选也使用的Hive;利用Pig还可以做高级的数据处理,包括Twitter、LinkedIn 上用于发现您可能认识的人,可以实现类似Amazon.com的协同过滤的推荐效果。淘宝的商品推荐也是!在Yahoo!的40%的Hadoop作业是用pig运行的,包括垃圾邮件的识别和过滤,还有用户特征建模。(2012年8月25新更新,天猫的推荐系统是hive,少量尝试mahout!)

Hadoop整体流程


(1) 这一切起源于web上庞大的数据。

(2) 使用Nutch抓取WEB数据。

(3) 要保存web上庞大的数据—HDFS应运而生。

(4) 如何使用这些庞大的数据?

(5) 采用Java或任何的流/管道语言构建MapReduce框架用于编码并进行分析。

(6) 如何获取web日志,点击流,Apache日志,服务器日志等非结构化数据—fuse,webdav,chukwa,flume,scribe

(7) Hiho和sqoop将数据加载到HDFS中,关系型数据库也能加入到Hadoop队伍中。

(8) MapReduce编程需要的高级接口—Pig,Hive,Jaql。

(9) 具有先进的UI报表工具的BI工具—Intellicus。

(10) Map-Reduce处理过程使用的工作流工具及高级语言。

(11) 监控、管理Hadoop,运行jobs/hive,查看HDFS的高级视图—Hue,karmasphere,eclipse plugin,cacti。

(12) 支持框架—Avro (进行序列化),ZooKeeper(用于协同)。

(13) 更多高级接口—Mahout,Elastic map Reduce。

(14) 同样可以进行OLTP—Hbase.

Hadoop版本

Apache 官方版本(2.x.x)
Cloudera:使用下载最多的版本,稳定,有商业支持,在Apache的基础上打上了一些patch。推荐使用。
HDP(Hortonworks Data Platform) Hortonworks公司发行版本。

hadoop的核心:

HDFS: Hadoop Distributed File System 分布式文件系统 
YARN: Yet Another Resource Negotiator 资源管理调度系统

如何解决海量数据的存储和海量数据的运算?


HDFS的架构

主从结构:主节点,只有一个活跃的NameNode;从节点,有很多个DataNode。

NameNode负责:

  • 接收用户操作请求;
  • 维护文件系统的目录结构;
  • 管理文件与Block之间的关系,Block与DataNode之间的关系;

DataNode负责:

  • 存储文件;
  • 文件被分成Block存储在磁盘上;
  • 为保证数据安全,文件会有多个副本

如下图所示:


Hadoop的特点

扩容能力(Scalable):能可靠的(reliably)存储和处理千兆(PB)字节。

成本低(Economical):可以通过普通机器组成的服务器群来分发以及处理数据。这些服务器群总计可达上千个节点。

高效率(Efficient):通过分发数据,Hadoop可以在数据所在的节点上并行地(parallel)处理它们,这使得处理非常快速。

可靠性(Reliable):Hadoop能自动维护数据的多份副本,并且在任务失败后能自动的重新部署(reploy)计算任务。

Hadoop1.0和Hadoop2.0对比


Hadoop1.0没有yarn,计算框架非常单一只有MapReduce。2.0之后所有的计算框架都要基于YARN平台。

Hadoop部署方式

p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px '.PingFang SC'; color: #454545}span.s1 {font: 12.0px 'Helvetica Neue'}

本地模式:在使用开发工具进行开发调试的时候使用的  只能启动一个map和一个reduce,适用于开发环境。

伪分布式:通过一台机器模拟分布式环境,在开发和学习时使用。适用于测试环境

集群模式:真实的开发环境。

Hadoop伪分布式安装

安装前戏:关闭防火墙,修改IP,修改hostname,设置ssh自动登录,安装jdk
安装完成后最后安装Hadoop。
首先下载Linux版的版的JDK安装包:
再下载Hadoop安装包:http://archive.apache.org/dist/
正式开始伪分布式的搭建.....

一.准备Linux环境

1.0 改用桥接联网
1.1 修改主机名
vim /etc/sysconfig/network

NETWORKING=yes
HOSTNAME=hadoop0
1.2修改IP
第一种:通过Linux图形界面进行修改(强力推荐)
进入Linux图形界面 -> 右键点击右上方的两个小电脑 -> 点击Edit connections -> 选中当前网络System eth0 -> 点击edit按钮 -> 选择IPv4 -> method选择为manual -> 点击add按钮 -> 添加IP:192.168.0.3子网掩码:255.255.255.0 网关:192.168.0.1 -> apply
第二种:修改配置文件的方式
 vim /etc/sysconfig/network-scripts/ifcfg-eth0
配置内容如下:
DEVICE=eth0
TYPE=Ethernet
UUID=1c433f4c-52e9-4be9-b48c-72889419c875
ONBOOT=yes
NM_CONTROLLED=yes
BOOTPROTO=static ####
IPADDR=192.168.0.3 ####

PREFIX=24
GATEWAY=192.168.0.1 ####
DNS1=8.8.8.8  ####
NETMASK=255.255.255.0 ####

DEFROUTE=yes
IPV4_FAILURE_FATAL=yes
IPV6INIT=no
NAME="System eth0"
HWADDR=08:00:27:47:CD:00
LAST_CONNECT=1504084493
1.3修改主机名和IP的映射关系
vim /etc/hosts
配置内容如下:
192.168.0.3 hadoop0
127.0.0.1 localhost
注意:localhost 不能去除,因为有很多配置引用到localhost
1.4关闭防火墙
#查看防火墙状态
service iptables status
#关闭防火墙
service iptables stop
#查看防护墙开机启动状态
chkconfig iptables --list
#关闭防火墙开机启动
chkconfig iptables off
1.5重启Linux
reboot

二.安装JDK

2.0卸载Linux自带的JDK
rpm -qa|grep jdk #查询自带的JDK
yum -y remove  <老版JDK>
2.1解压JDK安装包
#创建文件夹
mkdir /usr/java
#解压
tar -zxvf jdk-8u144-linux-x64.tar.gz -C /usr/java/
2.2将Java添加至环境变量
vim /etc/profile
#进入编辑界面按shift+g 在文件最后添加
export JAVA_HOME=/usr/java/jdk1.8.0_144
export PATH=$PATH:$JAVA_HOME/bin

#刷新配置
source /etc/profile

三.安装Hadoop2.7.4

3.0 上传Hadoop安装包
3.1 解压
# 在根目录下新建文件夹cloud用于安装与大数据相关的
mkdir /cloud
#解压
tar -zxvf /root/Desktop/hadoop-2.7.4.tar.gz -C /cloud/
3.2配置hadoop
注意:hadoop2.x的配置文件在 $HADOOP_HOME/etc/hadoop/目录下
#进入配置目录
cd /cloud/hadoop-2.7.4/etc/hadoop/
伪分布式需要修改5个配置文件
第一个:hadoop-env.sh
vim hadoop-env.sh 
# 第27行
export JAVA_HOME=/usr/java/jdk1.8.0_144
第二个:core-site.xml
vim core-site.xml 
<configuration>        <!-- 制定HDFS的老大(NameNode)的地址 -->        <property>                <name>fs.defaultFS</name>                <value>hdfs://hadoop0:9000</value>        </property>        <!-- 指定hadoop运行时产生文件的存储目录 -->        <property>                <name>hadoop.tmp.dir</name>                <value>/cloud/hadoop-2.7.4/tmp</value>        </property></configuration>
第三个:hdfs-site.xml 
vim hdfs-site.xml
<configuration>        <!-- 指定HDFS副本的数量 -->        <property>                <name>dfs.replication</name>                <value>1</value>        </property></configuration>
第四个:mapred-site.xml (mv mapred-site.xml.template mapred-site.xml)
mv mapred-site.xml.template mapred-site.xml
vim mapred-site.xml
<configuration>        <!-- 指定mr运行在yarn上 -->        <property>                <name>mapreduce.framework.name</name>                <value>yarn</value>        </property></configuration>
第五个:yarn-site.xml
vim yarn-site.xml
<configuration>        <!-- 指定YARN的老大(ResourceManager)的地址 -->        <property>                <name>yarn.resourcemanager.hostname</name>                <value>hadoop0</value>        </property>        <!-- reducer获取数据的方式 -->        <property>                <name>yarn.nodemanager.aux-services</name>                <value>mapreduce_shuffle</value>        </property>        <!-- 解决NodeManager无法启动以及job卡住的问题 -->        <property>                <name>yarn.nodemanager.resource.memory-mb</name>                <value>2048</value>        </property>         <property>                <name>yarn.nodemanager.resource.cpu-vcores</name>                <value>1</value>         </property></configuration>
3.3将Hadoop添加至环境变量
vim /etc/profile
修改配置内容如下:
export JAVA_HOME=/usr/java/jdk1.8.0_144
export HADOOP_HOME=/cloud/hadoop-2.7.4
export PATH=$PATH:$JAVA_HOME/bin:$HADOOP_HOME/bin:$HADOOP_HOME/sbin

source /etc/profile
3.4格式化NameNode(是对NameNode进行初始化)
hdfs namenode -format (hadoop namenode -format)
3.5启动hadoop
(start-all.ssh已经过时了,不建议使用)
先启动HDFS
sbin/start-dfs.sh
再启动YARN
sbin/start-yarn.sh
3.6 验证是否启动成功
使用jps命令验证
[root@hadoop0 hadoop]# jps
3827 ResourceManager
3673 SecondaryNameNode
3931 NodeManager
3372 NameNode
3502 DataNode
4142 Jps
(注意:p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px 'Helvetica Neue'; color: #454545}p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px '.PingFang SC'; color: #454545}span.s1 {font: 12.0px '.PingFang SC'}span.s2 {font: 12.0px 'Helvetica Neue'}

yarn 的老大是ResourceManager    负责资源的分配和调度

yarn的小弟是NodeManager  NodeManager可以有一个或多个

NameNodeHDFS的老大 负责接收用户请求,接收一些元数据,维护目录树的映射关系 真正的集群有多个NameNode 防止宕机 出现事故 分为主机和备机

DataNodeHDFS的小弟 负责存储部分数据,可以有多个DataNode

SecondaryNameNode 并不是NameNode的热备,只是NameNode的一个助理,帮助NameNode完成一些事情(帮助主数据进行同步 合并一些数据文件)

)
浏览器查看
http://192.168.0.3:50070 (HDFS管理界面)
http://192.168.0.3:8088 (MR管理界面)

四.配置ssh免登陆

#生成ssh免登陆密钥
#进入到我的home目录
cd ~/.ssh
ssh-keygen -t rsa (四个回车)
执行完这个命令后,会生成两个文件id_rsa(私钥)、id_rsa.pub(公钥)
将公钥拷贝到要免登陆的机器上
ssh-copy-id localhost
比如A 要免登陆远程访问 B  需要将A的公钥发送给主机B



原创粉丝点击