数据库是面向事务的设计,数据仓库是面向主题设计的。数据库一般存储在线交易数据,数据仓库存储的一般是历史数据。
数据库设计是尽量避免冗余,一般采用符合范式的规则来设计,数据仓库在设计是有意引入冗余,采用反范式的方式来设计。
数据库是为捕获数据而设计,数据仓库是为分析数据而设计,它的两个基本的元素是维表和事实表。(维是看问题的角度,比如时间,部门,维表放的就是这些东西的定义,事实表里放着要查询的数据,同时有维的ID)
数据仓库,是在数据库已经大量存在的情况下,为了进一步挖掘数据资源、为了决策需要而产生的,它决不是所谓的“大型数据库”。那么,数据仓库与传统数据库比较,有哪些不同呢?让我们先看看WHInmon关于数据仓库的定义:面向主题的、集成的、与时间相关且不可修改的数据集合。
“面向主题的”:传统数据库主要是为应用程序进行数据处理,未必按照同一主题存储数据;数据仓库侧重于数据分析工作,是按照主题存储的。这一点,类似于传统农贸市场与超市的区别—市场里面,白菜、萝卜、香菜会在一个摊位上,如果它们是一个小贩卖的;而超市里,白菜、萝卜、香菜则各自一块。也就是说,市场里的菜(数据)是按照小贩(应用程序)归堆(存储)的,超市里面则是按照菜的类型(同主题)归堆的。
“与时间相关”:数据库保存信息的时候,并不强调一定有时间信息。数据仓库则不同,出于决策的需要,数据仓库中的数据都要标明时间属性。决策中,时间属性很重要。同样都是累计购买过九车产品的顾客,一位是最近三个月购买九车,一位是最近一年从未买过,这对于决策者意义是不同的。
“不可修改”:数据仓库中的数据并不是最新的,而是来源于其它数据源。数据仓库反映的是历史信息,并不是很多数据库处理的那种日常事务数据(有的数据库例如电信计费数据库甚至处理实时信息)。因此,数据仓库中的数据是极少或根本不修改的;当然,向数据仓库添加数据是允许的。
数据仓库的出现,并不是要取代数据库。目前,大部分数据仓库还是用关系数据库管理系统来管理的。可以说,数据库、数据仓库相辅相成、各有千秋
补充一下,数据仓库的方案建设的目的,是为前端查询和分析作为基础,由于有较大的冗余,所以需要的存储也较大。为了更好地为前端应用服务,数据仓库必须有如下几点优点,否则是失败的数据仓库方案。
1效率足够高。客户要求的分析数据一般分为日、周、月、季、年等,可以看出,日为周期的数据要求的效率最高,要求24小时甚至12小时内,客户能看到昨天的数据分析。由于有的企业每日的数据量很大,设计不好的数据仓库经常会出问题,延迟1-3日才能给出数据,显然不行的。
2数据质量。客户要看各种信息,肯定要准确的数据,但由于数据仓库流程至少分为3步,2次ETL,复杂的架构会更多层次,那么由于数据源有脏数据或者代码不严谨,都可以导致数据失真,客户看到错误的信息就可能导致分析出错误的决策,造成损失,而不是效益。
3扩展性。之所以有的大型数据仓库系统架构设计复杂,是因为考虑到了未来3-5年的扩展性,这样的话,客户不用太快花钱去重建数据仓库系统,就能很稳定运行。主要体现在数据建模的合理性,数据仓库方案中多出一些中间层,使海量数据流有足够的缓冲,不至于数据量大很多,就运行不起来了
什么是大数据:
(1)大数据是指在一定时间内无法用常规软件对其内容进行抓取,管理和处理的数据集合,简而言之就是数据量非常大,大到无法用常规工具进行处理,如关系型数据库,数据仓库等。这里“大”是一个什么量级呢?如在阿里巴巴每天处理数据达到20PB(即20971520GB)
2大数据的特点:
(1)体量巨大。按目前的发展趋势来看,大数据的体量已经到达PB级甚至EB级。
(2)大数据的数据类型多样,以非结构化数据为主,如网络杂志,音频,视屏,,地理位置信息,交易数据,社交数据等。
(3)价值密度低。有价值的数据仅占到总数据的一小部分。比如一段视屏中,仅有几秒的信息是有价值的。
(4)产生和要求处理速度快。这是大数据区与传统数据挖掘最显著的特征。
3除此之外还有其他处理系统可以处理大数据。
Hadoop (开源)
Spark(开源)
Storm(开源)
MongoDB(开源)
IBM PureDate(商用)
Oracle Exadata(商用)
SAP Hana(商用)
Teradata AsterData(商用)
EMC GreenPlum(商用)
HP Vertica(商用)
注:这里我们只介绍Hadoop。
二:Hadoop体系结构
Hadoop来源:
Hadoop源于Google在2003到2004年公布的关于GFS(Google File System),MapReduce和BigTable的三篇论文,创始人Doug Cutting。Hadoop现在是Apache基金会顶级项目,“
Hadoop”一个虚构的名字。由Doug Cutting的孩子为其**玩具大象所命名。
Hadoop的核心:
(1)HDFS和MapReduce是Hadoop的两大核心。通过HDFS来实现对分布式储存的底层支持,达到高速并行读写与大容量的储存扩展。
(2)通过MapReduce实现对分布式任务进行处理程序支持,保证高速分区处理数据。
3Hadoop子项目:
(1)HDFS:分布式文件系统,整个Hadoop体系的基石。
(2)MapReduce/YARN:并行编程模型。YARN是第二代的MapReduce框架,从Hadoop 02301版本后,MapReduce被重构,通常也称为MapReduce V2,老MapReduce也称为 MapReduce V1。
(3)Hive:建立在Hadoop上的数据仓库,提供类似SQL语音的查询方式,查询Hadoop中的数据,
(5)HBase:全称Hadoop Database,Hadoop的分布式的,面向列的数据库,来源于Google的关于BigTable的论文,主要用于随机访问,实时读写的大数据。
(6)ZooKeeper:是一个为分布式应用所设计的协调服务,主要为用户提供同步,配置管理,分组和命名等服务,减轻分布式应用程序所承担的协调任务。
还有其它特别多其它项目这里不做一一解释了。
三:安装Hadoop运行环境
用户创建:
(1)创建Hadoop用户组,输入命令:
groupadd hadoop
(2)创建hduser用户,输入命令:
useradd –p hadoop hduser
(3)设置hduser的密码,输入命令:
passwd hduser
按提示输入两次密码
(4)为hduser用户添加权限,输入命令:
#修改权限
chmod 777 /etc/sudoers
#编辑sudoers
Gedit /etc/sudoers
#还原默认权限
chmod 440 /etc/sudoers
先修改sudoers 文件权限,并在文本编辑窗口中查找到行“root ALL=(ALL)”,紧跟后面更新加行“hduser ALL=(ALL) ALL”,将hduser添加到sudoers。添加完成后切记还原默认权限,否则系统将不允许使用sudo命令。
(5)设置好后重启虚拟机,输入命令:
Sudo reboot
重启后切换到hduser用户登录
安装JDK
(1)下载jdk-7u67-linux-x64rpm,并进入下载目录。
(2)运行安装命令:
Sudo rpm –ivh jdk-7u67-linux-x64rpm
完成后查看安装路径,输入命令:
Rpm –qa jdk –l
记住该路径,
(3)配置环境变量,输入命令:
Sudo gedit /etc/profile
打开profile文件在文件最下面加入如下内容
export JAVA_HOME=/usr/java/jdk7067
export CLASSPATH=$ JAVA_HOME/lib:$ CLASSPATH
export PATH=$ JAVA_HOME/bin:$PATH
保存后关闭文件,然后输入命令使环境变量生效:
Source /etc/profile
(4)验证JDK,输入命令:
Java –version
若出现正确的版本则安装成功。
配置本机SSH免密码登录:
(1)使用ssh-keygen 生成私钥与公钥文件,输入命令:
ssh-keygen –t rsa
(2)私钥留在本机,公钥发给其它主机(现在是localhost)。输入命令:
ssh-copy-id localhost
(3)使用公钥来登录输入命令:
ssh localhost
配置其它主机SSH免密登录
(1)克隆两次。在VMware左侧栏中选中虚拟机右击,在d出的快捷键菜单中选中管理---克隆命令。在克隆类型时选中“创建完整克隆”,单击“下一步”,按钮直到完成。
(2)分别启动并进入三台虚拟机,使用ifconfig查询个主机IP地址。
(3)修改每台主机的hostname及hosts文件。
步骤1:修改hostname,分别在各主机中输入命令。
Sudo gedit /etc/sysconfig/network
步骤2:修改hosts文件:
sudo gedit /etc/hosts
步骤3:修改三台虚拟机的IP
第一台对应node1虚拟机的IP:1921681130
第二台对应node2虚拟机的IP:1921681131
第三台对应node3虚拟机的IP:1921681132
(4)由于已经在node1上生成过密钥对,所有现在只要在node1上输入命令:
ssh-copy-id node2
ssh-copy-id node3
这样就可以将node1的公钥发布到node2,node3。
(5)测试SSH,在node1上输入命令:
ssh node2
#退出登录
exit
ssh node3
exit
四:Hadoop完全分布式安装
1 Hadoop有三种运行方式:
(1)单机模式:无须配置,Hadoop被视为一个非分布式模式运行的独立Java进程
(2)伪分布式:只有一个节点的集群,这个节点即是Master(主节点,主服务器)也是Slave(从节点,从服务器),可在此单节点上以不同的java进程模拟分布式中的各类节点
(3)完全分布式:对于Hadoop,不同的系统会有不同的节点划分方式。
2安装Hadoop
(1)获取Hadoop压缩包hadoop-260targz,下载后可以使用VMWare Tools通过共享文件夹,或者使用Xftp工具传到node1。进入node1 将压缩包解压到/home/hduser目录下,输入命令:#进入HOME目录即:“/home/hduser”
cd ~
tar –zxvf hadoop-260targz
(2)重命名hadoop输入命令:
mv hadoop-260 hadoop
(3)配置Hadoop环境变量,输入命令:
Sudo gedit /etc/profile
将以下脚本加到profile内:
#hadoop
export HADOOP_HOME=/home/hduser/hadoop
export PATH=$HADOOP_HOME/bin:$PATH
保存关闭,最后输入命令使配置生效
source /etc/profile
注:node2,和node3都要按照以上配置进行配置。
3配置Hadoop
(1)hadoop-envsh文件用于指定JDK路径。输入命令:
[hduser@node1 ~]$ cd ~/hadoop/etc/hadoop
[hduser@node1 hadoop]$ gedit hadoop-envsh
然后增加如下内容指定jDK路径。
export JAVA_HOME=/usr/java/jdk170_67
(2)打开指定JDK路径,输入命令:
export JAVA_HOME=/usr/java/jdk170_67
(4)core-sitexml:该文件是Hadoop全局配置,打开并在元素中增加配置属性如下:
fsdefaultFshdfs://node1:9000hadooptmpdirfile:/home/hduser/hadoop/tmp这里给出了两个常用的配置属性,fsdefaultFS表示客户端连接HDFS时,默认路径前缀,9000是HDFS工作的端口。Hadooptmpdir如不指定会保存到系统的默认临时文件目录/tmp中。(5)hdfs-sitexml:该文件是hdfs的配置。打开并在元素中增加配置属性。(6)mapred-sitexml:该文件是MapReduce的配置,可从模板文件mapred-sitexmltemplate中复制打开并在元素中增加配置。(7)yarn-sitexml:如果在mapred-sitexml配置了使用YARN框架,那么YARN框架就使用此文件中的配置,打开并在元素中增加配置属性。(8)复制这七个命令到node2,node3。输入命令如下:scp –r /home/hduser/hadoop/etc/hadoop/ hduser@node2:/home/hduser/hadoop/etc/scp –r /home/hduser/hadoop/etc/hadoop/ hduser@node3:/home/hduser/hadoop/etc/4验证:下面验证hadoop是否正确(1)在Master主机(node1)上格式化NameNode。输入命令:[hduser@node1 ~]$ cd ~/hadoop[hduser@node1 hadoop]$ bin/hdfs namenode –format(2)关闭node1,node2 ,node3,系统防火墙并重启虚拟机。输入命令:service iptables stopsudo chkconfig iptables offreboot(3)输入以下启动HDFS:[hduser@node1 ~]$ cd ~/hadoop(4)启动所有[hduser@node1 hadoop]$ sbin/start-allsh(5)查看集群状态:[hduser@node1 hadoop]$ bin/hdfs dfsadmin –report(6)在浏览器中查看hdfs运行状态,网址:(7)停止Hadoop。输入命令:[hduser@node1 hadoop]$ sbin/stop-allsh五:Hadoop相关的shell *** 作(1)在 *** 作系统中/home/hduser/file目录下创建file1txt,file2txt可使用图形界面创建。file1txt输入内容:Hello World hi HADOOPfile2txt输入内容Hello World hi CHIAN(2)启动hdfs后创建目录/input2[hduser@node1 hadoop]$ bin/hadoop fs –mkdir /input2(3)将file1txtfile2txt保存到hdfs中:[hduser@node1 hadoop]$ bin/hadoop fs –put -/file/filetxt /input2/(4)[hduser@node1 hadoop]$ bin/hadoop fs –ls /input2
以上就是关于数据仓库与 *** 作数据库有何联系和区别全部的内容,包括:数据仓库与 *** 作数据库有何联系和区别、大数据:Hadoop入门、等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)