为什么使用Hive?Hive提供了什么?Hive支持哪些用户
为什么使用Hive?
为什么使用Hive?那么,在哪里使用Hive呢?在载入了60亿行(经度、维度、时间、数据值、高度)数据集到MySQL后,系统崩溃了,并经历过数据丢失。这可能部分是因为我们最初的策略是将所有的数据都存储到单一的一张表中了。后来,我们调整了策略通过数据集和参数进行分表,这有所帮助但也因此引入了额外的消耗,而这并非是我们愿意接受的。
相反,我们决定尝试使用Apache Hive技术。我们安装了Hive 05 + 20,使用CDHv3和Apache Hadoop(0 20 2 + 320)。CDHv3还包含有许多其他相关工具,包括Sqoop和Hue这些在我们的架构中都标识出来了,如图23-3底部所示。
我们使用Apache Sqoop转储数据到Hive中,然后通过写一个Apache OODT包装器,来使Hive按照空间/时间约束查询数据,然后将结果提供给RCMET和其他用户(图23-2中间部分显示)。RCMES集群的完整的架构如图23- 3所示。我们有5台机器,包括图中所示的一个主/从配置,通过一个运行GigE的私人网进行连接。
Hive提供了什么
Photobucket公司使用Hive的主要目标是为业务功能、系统性能和用户行为提供答案。为了满足这些需求,我们每晚都要通过Flume从数百台服务器上的MySQL数据库中转储来自Web服务器和自定义格式日志TB级别的数据。这些数据有助于支持整个公司许多组织,比如行政管理、广告、客户支持、产品开发和操作,等等。对于历史数据,我们保持所有MySQL在每月的第一天创建的所有的数据作为分区数据并保留30天以上的日志文件。Photobucket使用一个定制的ETL框架来将MySQL数据库中数据迁移到Hive中。使用Flume将日志文件数据写入到HDFS中并按照预定的Hive流程进行处理。
Hive支持的用户有哪些
行政管理依赖于使用Hadoop提供一般业务健康状况的报告。Hive允许我们解析结构化数据库数据和非结构化的点击流数据,以及业务所涉及的数据格式进行读取。
广告业务使用Hive筛选历史数据来对广告目标进行预测和定义配额。产品开发无疑是该组织中产生最大数量的特定的查询的用户了。对于任何用户群,时间间隔变化或随时间而变化。Hive是很重要的,因为它允许我们通过对在当前和历史数据中运行A / B测试来判断在一个快速变化的用户环境中新产品的相关特性。
在Photobucket公司中,为我们的用户提供一流的系统是最重要的目标。从操作的角度来看,Hive被用来汇总生成跨多个维度的数据。在公司里知道最流行的媒体、用户、参考域是非常重要的。控制费用对于任何组织都是重要的。一个用户可以快速消耗大量的系统资源,并显著增加每月的支出。Hive可以用于识别和分析出这样的恶意用户,以确定哪些是符合我们的服务条款,而哪些是不符合的。也可以使用Hive对一些操作运行A / B测试来定义新的硬件需求和生成ROI计算。Hive将用户从底层MapReduce代码解放出来的能力意味着可以在几个小时或几天内就可以获得答案,而不是之前的数周。
Hive中的数据库
Hive中数据库的概念本质上仅仅是表的一个目录或者命名空间。然而,对于具有很多组和用户的大集群来说,这是非常有用的,因为这样可以避免表命名冲突。通常会使用数据库来将生产表组织成逻辑组。
如果用户没有显式指定数据库,那么将会使用默认的数据库default。
下面这个例子就展示了如何创建一个数据库:
hive> CREATE DATABASE financials;
如果数据库financials已经存在的话,那么将会抛出一个错误信息。使用如下语句可以避免在这种情况下抛出错误信息:
hive> CREATE DATABASE IF NOT EXISTS financials;
虽然通常情况下用户还是期望在同名数据库已经存在的情况下能够抛出警告信息的,但是IF NOT EXISTS这个子句对于那些在继续执行之前需要根据需要实时创建数据库的情况来说是非常有用的。
在所有的数据库相关的命令中,都可以使用SCHEMA这个关键字来替代关键字TABLE。
随时可以通过如下命令方式查看Hive中所包含的数据库:
hive> SHOW DATABASES;
default
financials
hive> CREATE DATABASE human_resources;
hive> SHOW DATABASES;
default
financials
human_resources
如果数据库非常多的话,那么可以使用正则表达式匹配来筛选出需要的数据库名,正则表达式这个概念,将会在第623节“Like和RLike”介绍。下面这个例子展示的是列举出所有以字母h开头,以其他字符结尾(即部分含义)的数据库名:
hive> SHOW DATABASES LIKE 'h';
human_resources
hive>
Hive会为每个数据库创建一个目录。数据库中的表将会以这个数据库目录的子目录形式存储。有一个例外就是default数据库中的表,因为这个数据库本身没有自己的目录。
数据库所在的目录位于属性hivemetastorewarehousedir所指定的顶层目录之后,这个配置项我们已经在前面的第251节“本地模式配置”和第252节“分布式模式和伪分布式模式配置”中进行了介绍。假设用户使用的是这个配置项默认的配置,也就是/user/hive/warehouse,那么当我们创建数据库financials时,Hive将会对应地创建一个目录/user/hive/warehouse/financialsdb。这里请注意,数据库的文件目录名是以db结尾的。
用户可以通过如下的命令来修改这个默认的位置:
hive> CREATE DATABASE financials
> LOCATION '/my/preferred/directory';
用户也可以为这个数据库增加一个描述信息,这样通过DESCRIBE DATABASE <database> 命令就可以查看到该信息。
hive> CREATE DATABASE financials
> COMMENT 'Holds all financial tables';
hive> DESCRIBE DATABASE financials;
financials Holds all financial tables
hdfs://master-server/user/hive/warehouse/financialsdb
从上面的例子中,我们可以注意到,DESCRIEB DATABASE语句也会显示出这个数据库所在的文件目录位置路径。在这个例子中,URI格式是hdfs。如果安装的是MapR,那么这里就应该是maprfs。对于亚马逊弹性MapReduce(EMR)集群,这里应该是hdfs,但是用户可以设置hivemetastorewarehousedir为亚马逊S3特定的格式(例如,属性值设置为s3n://bucketname)。用户可以使用s3作为模式,但是如果使用新版的规则s3n会更好。
前面DESCRIBE DATABASE语句的输出中,我们使用了master-server来代表URI权限,也就是说应该是由文件系统的“主节点”(例如,HDFS中运行NameNode服务的那台服务器)的服务器名加上一个可选的端口号构成的(例如,服务器名:端口号这样的格式)。如果用户执行的是伪分布式模式,那么主节点服务器名称就应该是localhost。对于本地模式,这个路径应该是一个本地路径,例如file:///user/hive/warehouse/financialsdb。
如果这部分信息省略了,那么Hive将会使用Hadoop配置文件中的配置项fsdefaultname作为master-server所对应的服务器名和端口号,这个配置文件可以在$HADOOP_HOME/conf这个目录下找到。
需要明确的是,hdfs:///user/hive/warehouse/financialsdb和hdfs://master-server/user/hive/
warehouse/financialsdb是等价的,其中master-server是主节点的DNS名和可选的端口号。
为了保持完整性,当用户指定一个相对路径(例如,some/relative/path)时,对于HDFS和Hive,都会将这个相对路径放到分布式文件系统的指定根目录下(例如,hdfs:///user/<user-name>)。然而,如果用户是在本地模式下执行的话,那么当前的本地工作目录将是some/relative/path的父目录。
为了脚本的可移植性,通常会省略掉那个服务器和端口号信息,而只有在涉及到另一个分布式文件系统实例(包括S3存储)的时候才会指明该信息。
此外,用户还可以为数据库增加一些和其相关的键-值对属性信息,尽管目前仅有的功能就是提供了一种可以通过DESCRIBE DATABASE EXTENDED <database>语句显示出这些信息的方式:
hive> CREATE DATABASE financials
> WITH DBPROPERTIES ('creator' = 'Mark Moneybags', 'date' = '2012-01-02');
hive> DESCRIBE DATABASE financials;
financials hdfs://master-server/user/hive/warehouse/financialsdb
hive> DESCRIBE DATABASE EXTENDED financials;
financials hdfs://master-server/user/hive/warehouse/financialsdb
{date=2012-01-02, creator=Mark Moneybags);
USE命令用于将某个数据库设置为用户当前的工作数据库,和在文件系统中切换工作目录是一个概念:
hive> USE financials;
现在,使用像SHOW TABLES这样的命令就会显示当前这个数据库下所有的表。
不幸的是,并没有一个命令可以让用户查看当前所在的是哪个数据库!幸运的是,在Hive中是可以重复使用USE…命令的,这是因为在Hive中并没有嵌套数据库的概念。
可以回想下,在第272节“变量和属性”中提到过,可以通过设置一个属性值来在提示符里面显示当前所在的数据库(Hive v080版本以及之后的版本才支持此功能):
hive> set hivecliprintcurrentdb=true;
hive (financials)> USE default;
hive (default)> set hivecliprintcurrentdb=false;
hive>
最后,用户可以删除数据库:
hive> DROP DATABASE IF EXISTS financials;
IF EXISTS子句是可选的,如果加了这个子句,就可以避免因数据库finanacials不存在而抛出警告信息。
默认情况下,Hive是不允许用户删除一个包含有表的数据库的。用户要么先删除数据库中的表,然后再删除数据库;要么在删除命令的最后面加上关键字CASCADE,这样可以使Hive自行先删除数据库中的表:
hive> DROP DATABASE IF EXISTS financials CASCADE;
如果使用的是RESTRICT这个关键字而不是CASCADE这个关键字的话,那么就和默认情况一样,也就是,如果想删除数据库,那么必须先要删除掉该数据库中的所有表。
如果某个数据库被删除了,那么其对应的目录也同时会被删除。
hdfs的元数据持久化触发的条件是:
在一个BFC中,垂直方向上,盒子是从包含块顶部开始一个挨着一个布局的,两个相邻的盒子的垂直距离是由margin属性决定的,在一个BFC中的两个相邻的块级盒子的垂直外边距会产生塌陷。
在一个BFC中,水平方向上,每个盒子的左边缘都会接触包含块的左边缘(从右向左的格式则相反)。除非出现浮动元素和其他元素相互作用的情况(当有浮动元素时,行盒可能因浮动元素而收缩,如果有盒子形成了新的BFC,那这个盒子也可能因浮动元素而变窄)。
名字节点和数据节点
HDFS是一个主从结构,一个HDFS集群是由一个名字节点,它是一个管理文件命名空间和调节客户端访问文件的主服务器,当然还有一些数据节点,通常是一个节点一个机器,它来管理对应节点的存储。HDFS对外开放文件命名空间并允许用户数据以文件形式存储。
内部机制是将一个文件分割成一个或多个块,这些块被存储在一组数据节点中。名字节点用来操作文件命名空间的文件或目录操作,如打开,关闭,重命名等等。
大数据 hadoop 要不要raid5
单词计数是最简单也是最能体现MapReduce思想的程序之一,可以称为MapReduce版”Hello World”,该程序的完整代码可以在Hadoop安装包的”src/examples”目录下找到。
大数据探秘:到底要不要考研想好你考研的原因是什么?或许你就会给自己找到答案了于和平
raid5数据问题不能,就像新磁盘在磁盘管理里要重分区格式化才能识别,但是那样的话,RAID模式下写进的数据也没了,因为RAID写进的数据在一块磁盘上是零散了,甚至这块磁盘的文件系统都是零散的,不完整的。及时运气好正好这块磁盘上有较完整的文件系统的元数据,是你在别的电脑上能看到了文件,但是这些文件常识打开,绝对汇报错的。或许你运气好到极点,看到了一个文本文档能打开,不过那估计也是4KB以下的内容。。。文件大小 小于 RAID条带大小除以RAID磁盘数量,并且跟文件系统簇大小也有关系的。意思就是基本上你无法在另一台电脑上去读取这块磁盘。说了这么多就是希望你能深入的了解下,大概的情况。
大数据告诉你要不要当公务员做不完题是正常的。行测考试时间为120分钟,除去涂答题卡的时间,平均每道题算下来只有50多秒的时间来答。对于我们考生而言,应当首先集中优势兵力,把能做、会做、好做的题都做好,保证正确率
什么是RAID5 RAID5数据恢复原理
这种问题是比较复杂的,服务器硬盘,结构都是比较复杂的,简单讲下,RAID5至少需要3块硬盘组合的,需要同型号,同容量的硬盘组合的,如果服务器坏了,那就需要标记硬盘在存储器中的位置的,以便后期恢复数据使用的
服务器坏了,至少是2块硬盘出问题了,所以,坏了,就不要操作的,保护好现场,找专业数据恢复人员恢复数据,一般数据都是可以恢复的,推荐西安军王数据,专业数据恢复机构,如果只是服务器磁盘整列坏了,恢复的希望很大的
大数据一定需要Hadoop吗
是的。目前还没有什么技术可以代替Hadoop。
使用HDFS的mand命令去查看hdfs上的文件,或者使用默认的Hadoop的web管理器查看,从hadoop0223后,hadoop设计了一套Rest风格的接口,通过协议访问的方式,去浏览和操作HDFS上的数据。
大数据告诉你大学期间要不要考驾照关于大学毕业生需不需要考驾照这个问题,一般来说,极少有找工作时要求有驾照的工作单位,所以考驾照并不是必须的。但是,总的来说,尤其是男生,肯定是想自己开车的。因此考驾照的最佳时间莫过于大学期间,随便找个寒暑假学上一两个月,基本上都能拿到驾照。如果在校期间不及时考到驾照,恐怕以后工作了的话,就没有那么多时间来考了。所以能在大学时候考到驾照就尽量考,不能的话也不要太勉强自己。
当然,还有一个问题就是大学毕业前要修够课外学分,如果你的课外学分修不够的话,可以考个驾照,这个可以作为2分的课外学分,为你的毕业加学分的,所以大学期间最好考一个驾照。
大数据:Hadoop入门什么是大数据:
(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左侧栏中选中虚拟机右击,在弹出的快捷键菜单中选中管理---克隆命令。在克隆类型时选中“创建完整克隆”,单击“下一步”,按钮直到完成。
(2)分别启动并进入三台虚拟机,使用ifconfig查询个主机IP地址。
(3)修改每台主机的hostname及hosts文件。
步骤1:修改hostname,分别在各主机中输入命令。
Sudo gedit /etc/sysconfig/neork
步骤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全局配置,打开并在元素中增加配置属性如下:
fsdefaultFs hdfs:node1:9000 hadooptmpdir file:/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 s sudo chkconfig iptables off reboot (3)输入以下启动HDFS: [hduser@node1 ~]$ cd ~/hadoop (4)启动所有 [hduser@node1 hadoop]$ in/start-allsh (5)查看集群状态: [hduser@node1 hadoop]$ bin/hdfs dfsadmin –report (6)在浏览器中查看hdfs运行状态,网址::node1:50070 (7)停止Hadoop。输入命令: [hduser@node1 hadoop]$ in/s-allsh 五:Hadoop相关的shell操作 (1)在操作系统中/home/hduser/file目录下创建file1txt,file2txt可使用图形界面创建。 file1txt输入内容: Hello World hi HADOOP file2txt输入内容 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
RAID5 数据恢复费用要多少具体我也不知道,之前到爱特数据恢复机构恢复过,花钱2000不到,貌似具体也要看什么问题。我那问题比较复杂,花2000能搞定,也是很出乎意料
0条评论