大数据技术实践实验报告Word下载.docx
《大数据技术实践实验报告Word下载.docx》由会员分享,可在线阅读,更多相关《大数据技术实践实验报告Word下载.docx(62页珍藏版)》请在冰点文库上搜索。
实验步骤:
开发工具以及Hadoop默认已经安装完毕,安装在/apps/目录下。
2.在Linux本地创建/data/hadoop3目录,用于存放所需文件。
切换目录到/data/hadoop3目录下,并使用wget命令,下载所需的插件。
2.将插件,从/data/hadoop3目录下,拷贝到/apps/eclipse/plugins的插件目录下。
3.进入ubuntu图形界面,双击eclipse图标,启动eclipse。
5.在Eclipse窗口界面,依次点击Window=>
OpenPerspective=>
Other。
弹出一个窗口。
选择Map/Reduce,并点击OK,可以看到窗口中,有三个变化。
(左侧项目浏览器、右上角操作布局切换、面板窗口)
如果在windows下,则需要手动调出面板窗口Map/ReduceLocations面板,操作为,点击window=>
showview=>
在弹出的窗口中,选择Map/ReduceLocations选项,并点击OK。
这样便可以调出视图窗口Map/ReduceLocation。
6.添加Hadoop配置,连接Hadoop集群。
在这里添加Hadoop相关配置。
Locationname,是为此配置起的一个名字。
DFSMaster,是连接HDFS的主机名和端口号。
点击Finish保存配置。
7.另外还需保证Hadoop中的HDFS相关进程已经启动。
在终端命令行输入jps查看进程状态。
viewplain
copy
1.jps
若不存在hdfs相关的进程,如Namenode、Datanode、secondarynamenode,则需要先切换到HADOOP_HOME下的sbin目录,启动hadoop。
1.cd
/apps/hadoop/sbin
2../
8.展开左侧项目浏览视图,可以看到HDFS目录结构。
9.上图发现HDFS上,没有存放任何目录。
那下面来创建一个目录,检测插件是否可用。
右键myhadoop下的文件夹,在弹出的菜单中,点击Createnewdirectory。
输入目录名称,点击OK则创建目录成功。
右键文件夹,点击Refresh,可用刷新HDFS目录。
到此Hadoop开发插件已经安装完毕!
3.MapReduce代码实现
1.切换目录到/apps/hadoop/sbin下,启动hadoop。
2.在linux上,创建一个目录/data/mapreduce1。
1.mkdir
-p
/data/mapreduce1
3.切换到/data/mapreduce1目录下,使用wget命令从网址,下载文本文件buyer_favorite1。
2.wget
依然在/data/mapreduce1目录下,使用wget命令,从
,下载项目用到的依赖包。
1.wget
将解压到当前目录下。
1.tar
-xzvf
4.将linux本地/data/mapreduce1/buyer_favorite1,上传到HDFS上的/mymapreduce1/in目录下。
若HDFS目录不存在,需提前创建。
1.hadoop
fs
-mkdir
/mymapreduce1/in
2.hadoop
-put
/data/mapreduce1/buyer_favorite1
5.打开Eclipse,新建JavaProject项目。
并将项目名设置为mapreduce1。
6.在项目名mapreduce1下,新建package包。
并将包命名为mapreduce。
7.在创建的包mapreduce下,新建类。
并将类命名为WordCount。
8.添加项目所需依赖的jar包,右键单击项目名,新建一个目录hadoop2lib,用于存放项目所需的jar包。
将linux上/data/mapreduce1目录下,hadoop2lib目录中的jar包,全部拷贝到eclipse中,mapreduce1项目的hadoop2lib目录下。
选中hadoop2lib目录下所有的jar包,单击右键,选择BuildPath=>
AddtoBuildPath
9.编写Java代码,并描述其设计思路。
下图描述了该mapreduce的执行过程
大致思路是将hdfs上的文本作为输入,MapReduce通过InputFormat会将文本进行切片处理,并将每行的首字母相对于文本文件的首地址的偏移量作为输入键值对的key,文本内容作为输入键值对的value,经过在map函数处理,输出中间结果<
word,1>
的形式,并在reduce函数中完成对每个单词的词频统计。
整个程序代码主要包括两部分:
Mapper部分和Reducer部分。
Mapper代码
1.public
static
class
doMapper
extends
Mapper<
Object,
Text,
IntWritable>
{
WordCount类文件中,单击右键=>
RunAs=>
RunonHadoop选项,将MapReduce任务提交到Hadoop中。
11.待执行完毕后,打开终端或使用hadoopeclipse插件,查看hdfs上,程序输出的实验结果。
-ls
/mymapreduce1/out
-cat
/mymapreduce1/out/part-r-00000
1.首先在Linux本地,新建/data/hive1目录,用于存放所需文件。
/data/hive1
切换目录到/data/hive1下,使用wget命令,下载hive所需安装包以及。
3.wget
2.将/data/hive1目录下的,解压缩到/apps目录下。
-C
/apps/
再切换到/apps目录下,将/apps/,重命名为hive。
/apps
2.mv
/apps/hive
3.使用vim打开用户环境变量。
1.sudo
vim
~/.bashrc
将Hive的bin目录,添加到用户环境变量PATH中,然后保存退出。
1.#hive
config
2.export
HIVE_HOME=/apps/hive
3.export
PATH=$HIVE_HOME/bin:
$PATH
执行source命令,使Hive环境变量生效。
1.source
4.由于Hive需要将元数据,存储到Mysql中。
所以需要拷贝/data/hive1目录下的到hive的lib目录下。
1.cp
/data/hive1/
/apps/hive/lib/
5.下面配置Hive,切换到/apps/hive/conf目录下,并创建Hive的配置文件。
/apps/hive/conf
2.touch
使用vim打开文件。
1.vim
并将下列配置项,添加到文件中。
1.<
configuration>
2.
<
property>
3.
name>
4.
value>
jdbc:
;
characterEncoding=latin1<
/value>
5.
/property>
6.
7.
8.
9.
10.
11.
12.
root<
13.
14.
15.
16.
strongs<
17.
18.<
/configuration>
由于Hive的元数据会存储在Mysql数据库中,所以需要在Hive的配置文件中,指定mysql的相关信息。
:
数据库链接字符串。
连接数据库的驱动包。
数据库用户名。
连接数据库的密码。
此处的数据库的用户名及密码,需要设置为自身系统的数据库用户名及密码。
6.另外,还需要告诉Hive,Hadoop的环境配置。
所以我们需要修改文件。
首先我们将重命名为。
1.mv
/apps/hive/conf/
追加Hadoop的路径,以及Hive配置文件的路径到文件中。
1.#
Set
HADOOP_HOME
to
point
a
specific
hadoop
install
directory
2.#
HADOOP_HOME=${bin}/../../hadoop
3.HADOOP_HOME=/apps/hadoop
4.#
Hive
Configuration
Directory
can
be
controlled
by:
5.#
export
HIVE_CONF_DIR=
6.export
HIVE_CONF_DIR=/apps/hive/conf
7.下一步是配置Mysql,用于存储Hive的元数据。
首先,需要保证Mysql已经启动。
执行以下命令,查看Mysql的运行状态。
service
mysql
status
通过输出,可以看出Mysql未启动。
所以需要执行启动命令。
start
如果未安装Mysql则需要执行安装命令。
若我们的环境已安装Mysql,则无需执行此步。
apt-get
mysql-server
8.开启Mysql数据库。
1.mysql
-u
root
此时会提示输入密码,此处密码为strongs
创建名为hive的数据库,编码格式为latin1,用于存储元数据。
1.create
database
hive
CHARACTER
SET
latin1;
查看数据库是否创建成功。
1.show
databases;
下面,输入exit退出Mysql。
1.exit
9.执行测试。
由于Hive对数据的处理,依赖MapReduce计算模型,所以需要保证Hadoop相关进程已经启动。
输入jps,查看进程状态。
若Hadoop相关进程未启动,则需启动Hadoop。
1./apps/hadoop/sbin/
启动Hadoop后,在终端命令行界面,直接输入hive便可启动Hive命令行模式。
1.hive
输入HQL语句查询数据库,测试Hive是否可以正常使用。
至此Hive安装完毕。
5.Hive基本操作
一、实验环境准备
1.首先在Linux本地新建/data/hive2目录。
/data/hive2
2.切换到/data/hive2目录下,使用wget命令,下载plain
3.输入jps检查Hadoop相关进程,是否已经启动。
若未启动,切换到/apps/hadoop/sbin目录下,启动Hadoop。
2.cd
3../
4.开启Hive,首先,需要保证Mysql启动。
输出显示Mysql未启动。
执行以下启动命令。
然后切换到/apps/hive/bin目录下,开启Hive。
/apps/hive/bin
2../hive
二、Hive数据仓库的操作
1.在Hive中创建一个数据仓库,名为DB。
DB;
2.以上简单创建了一个DB库,但是这条sql可以更进一步的优化,我们可以加上ifnotexists。
if
not
exists
解析:
在创建库时,应避免新建的库名与已有库名重复,如果库名重复将会报出以下错误(我在已有DB库的前提下,再次创建了DB库)。
错误提示数据仓库DB已经存在,那么加入的ifnotexists就起了作用,如下(在已有DB库的前提下,再次创建DB库,提示成功不会报错)
加入ifnotexists的意思是如果没有DB库就创建,如果已有就不再创建。
3.查看数据仓库DB的信息及路径。
1.describe
4.删除名为DB的数据仓库。
1.drop
三、Hive数据表的操作
Hive的数据表分为两种:
内部表和外部表。
Hive创建内部表时,会将数据移动到数据仓库指向的路径;
若创建外部表,仅记录数据所在的路径,不对数据的位置做任何改变。
在删除表的时候,内部表的元数据和数据会被一起删除,而外部表只删除元数据,不删除数据。
这样外部表相对来说更加安全些,数据组织也更加灵活,方便共享源数据,生产中常使用外部表。
下面详细介绍对表操作的命令及使用方法:
即将创建的表,表名不能和已有表名重复,否则会报错,现在我们showtables一下,查看已存在的表。
tables;
现在库中没有表。
1.创建一个名为cat的内部表,有两个字段为cat_id和cat_name,字符类型为string。
table
cat(cat_id
string,cat_name
string);
查看是否创建成功。
下面我们再次创建一个与刚才表名相同的表,看一下报错。
提示错误,该表已经存在!
说明表与库一样,名称不能重复,解决方法是加入ifnotexists。
2.创建一个外部表,表名为cat2,有两个字段为cat_id和cat_name,字符类型为string。
external
cat2(cat_id
外部表较内部表而言,只是在create后加了一个external。
3.修改cat表的表结构。
对cat表添加两个字段group_id和cat_code。
1.alter
cat
add
columns(group_id
string,cat_code
使用desc命令查看一下加完字段后的cat表结构。
1.desc
cat;
4.修改cat2表的表名。
把cat2表重命名为cat3。
cat2
rename
cat3;
这个命令可以让用户为表更名,数据所在的位置和分区名并不改变。
5.删除名为cat3的表并查看。
2.show
6.创建与已知表相同结构的表,创建一个与cat表结构相同的表,名为cat4,这里要用到like关键字。
cat4
like
创建完成并查看结果。
四、Hive中数据的导入导出
以下介绍四种常见的数据导入方式:
1.从本地文件系统中导入数据到Hive表。
首先,在Hive中创建一个cat_group表,包含group_id和group_name两个字段,字符类型为string,以“\t”为分隔符,并查看结果。
cat_group(group_id
string,group_name
string)
row
format
delimited
fields
terminated
by
'
\t'
stored
as
textfile;
[rowformatdelimited]关键字,是用来设置创建的表在加载数据的时候,支持的列分隔符。
[storedastextfile]关键字,是用来设置加载数据的数据类型,默认是TEXTFILE,如果文件数据是纯文本,就是使用[storedastextfile],然后从本地直接拷贝到HDFS上,Hive直接可以识别数据。
然后,将Linux本地/data/hive2目录下的cat_group文件导入到Hive中的cat_group表中。
1.load
data
local
inpath
/data/hive2/cat_group'
into
cat_group;
通过select语句查看cat_group表中是否成功导入数据,由于数据量大,使用limit关键字限制输出10条记录。
1.select
*
from
cat_group
limit
10;
导入成功。
2.将HDFS上的数据导入到Hive中。
首先,另外开启一个操作窗口,在HDFS上创建/myhive2目录。
/myhive2
然后,将本地/data/hive2/下的cat_group表上传到HDFS的/myhive2上,并查看是否创建成功。
/data/hive2/cat_group
接着,在Hive中创建名为cat_group1的表,创表语句如下。
cat_group1(group_id
2.row
最后,将HDFS下/myhive2中的表cat_group导入到Hive中的cat_group1表中,并查看结果。
/myhive2/cat_group'
cat_group1;
2.select
cat_group1
提示:
HDFS中数据导入到Hive中与本地数据导入到hive中的区别是loaddata后少了local。
3.从别的表中查询出相应的数据并导入到Hive中。
首先在Hive中创建一个名为ca