数据库实验1BigInsights、HDFS、MapRedue

BIG DATA上机实验说明

下载实验说明文档、学习资源及实验平台
从ftp://115.154.137.61/Database Theory(匿名登录)下载Bigdata.rar并解压,得到实验说明文档、学习资源及实验平台。上述内容也可从课程站点:bb.xjtu.edu.cn/数据库理论与技术(2018秋) /课程大作业中进行下载。

一、BigInsights基本实验

实验目的:通过实际上机操作,熟悉大数据平台BigInsights的基本操作过程
实验要求:本实验为验证型实验,按照相关说明完成实验操作过程并提交实验报告
实验内容:
1) 按照“BigInsights安装说明.pdf” 对BigInsights虚拟机进行安装配置。附加说明:安装BigInsights虚拟机需要64位机器及操作系统(如Win7 64bits专业版),具体要求见相关文档。
2) 按照”HDFS实验说明.pdf” 中给出的操作说明完成上机实验,熟悉HDFS与BigInsights Console操作过程。
3) 按照”MadReduce实验说明.pdf” 中给出的操作说明完成上机实验,熟悉MapReduce操作过程。
4) 按照” Pig Hive 实验说明.pdf” 中给出的操作说明完成上机实验,熟悉Pig和 Hive操作过程。
5) 按照” BigSQL 实验说明1.pdf”和” BigSQL 实验说明2.pdf” 中给出的操作说明完成上机实验,熟悉BigSQL操作过程。
6) 按照” Hbase基本 实验1.pdf”和 ” Hbase基本 实验2.pdf” 中给出的操作说明完成上机实验,熟悉Hbase基本操作过程。

实验过程:

1.BigInsights

目的:本教程用于为本课程中的练习设置VM映像。使用的VM映像是BigInsights 2.1 Quick Start Edition VM。请查看iibi2100_QuickStart_VMs_readme.pdf查看此映像的概述、系统需求和其他信息。

所需时间:约20分钟

步骤:

  1. 解压iibi2100_QuickStart_VM_Cluster.tar VM文件

  2. 请确保您已经安装了VMWare Player 5.0以上版本

  3. 打开VMWare Player ->文件->,选择要打开的VM

  4. 选择“我复制了它”,当你看到这个:
    在这里插入图片描述

  5. 当你看到这个时,点击“稍后提醒我”:
    在这里插入图片描述

  6. 当系统请求登录时,输入以下用户名和密码: bdvm用户:root password: password

  7. 选择默认的“English (USA)”,使用“Tab”跳转到“OK”,然后按“Enter”确认:
    在这里插入图片描述

  8. 按“输入”“我明白了”,直到“我接受”:
    在这里插入图片描述
    在这里插入图片描述

  9. 输入用户名“biadmin”,密码“biadmin”登录Linux操作系统:
    在这里插入图片描述

  10. 然后你应该可以看到这个,现在你可以开始练习了:
    在这里插入图片描述

  11. 上传本地文件到VM,需要在“虚拟机设置”中做一些设置:
    在这里插入图片描述

  12. 启用“共享文件夹”:
    在这里插入图片描述

  13. 添加您想要与VM共享的本地文件夹,并确认设置:
    在这里插入图片描述

共享文件夹将在VM的“/mnt/hgfs”下显示:
在这里插入图片描述
出现问题:
一、安装BigInsights2.1前的Readme
1.如果您的机器不是64位的,则启用VT
1)重启机器-> F1转到BIOS设置
2)高级-> CPU设置->英特尔虚拟技术,设置为启用。(基于不同的机器,路径可能略有不同)
3)保存和退出

2.然后安装VMPlayer软件
3.解压缩VM映像文件
4.在“0 - Setup.pdf”中使用VMPlayer作为步骤打开VM映像
您还可以检查“0- biquickstartv2.1 . cluster . readme”。此VM映像的信息的pdf”文件。
这里有一些证书,你需要的形象:
bivm作为:root登录
密码:密码
红帽OS用户:biadmin
密码:biadmin
~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~
故障排除:
1)如果在“0- Setup”的最后一步配置好“Shared Folders”之后。,但你看不到/mnt/hgfs下的文件,你可以在后台终端以root用户身份运行这个命令:
主机:/ /mnt/hgfs
2)如果您看到错误“VMware授权服务未运行”,请手动启动服务,如下图所示:
http://www.2cto.com/os/201111/112418.html
~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~
有用的链接:
BigDataUniversity:
http://bigdatauniversity.com/wpcourses/?cat=19
BigInsights信息中心:
http://www-01.ibm.com/support/knowledgecenter/SSPT3X_2.1.1/com.ibm.swg.im.infosphere.biginsights.welcome.doc/doc/welcome.html?lang=en
Hadoop网站:
http://hadoop.apache.org/
获取BigInsights快速入门版:
http://www-01.ibm.com/software/data/infosphere/biginsights/quick-start/index.html

二、在安装完vmwareplayer后,导入BigInsights2.1的环境以后,几步后发生了如下提示
在这里插入图片描述
VMware12提示 已将该虚拟机配置为使用 64 位客户机操作系统。但是,无法执行 64 位操作。
此主机支持 Intel VT-x,但 Intel VT-x 处于禁用状态

对于惠普新款笔记本,官网给出的进入BIOS的办法有两种:
1.开机按ESC再根据提示
2.开机按F10(只适用于大部分)

个人推荐ESC键进入提示再根据提示(比如按F10)进入BIOS的办法。
按下开机键,或者重启黑屏后,立刻以4次/秒的频率快速点按ESC,这是为了避免错过BIOS的检测时间。 如果看见LOGO了那说明错过了时机那就重来。手快的话,1-2次就可以进入。看到这个菜单就说明成功。
在这里插入图片描述

根据提示(按下F10),进入BIOS, 在用键盘的左右键来回切换选项卡。
在这里插入图片描述
切换至系统设置,在用上下键选中处理器虚拟化技术,Enter键修改,然后保存,退出即可。
在这里插入图片描述
三、iibi2100_QuickStart_VMs_readme
IBM InfoSphere BigInsights Quick Start Edition, v2.1
快速启动版VM映像概述
欢迎来到IBM®InfoSphere®BigInsights还™快速入门版,v2.1。
关于快速启动版
IBM InfoSphere BigInsights v2.1快速入门版可以让您快速入门IBM InfoSphere BigInsights v2.1的概念和技术。

快速启动版的目的是在能够使用真实数据和运行真实应用程序的同时,试验InfoSphere BigInsights的特性。快速启动版对集群没有数据限制,对许可也没有时间限制。它使用非授权的程序许可,并且不用于生产使用。

Quick Start Edition几乎与Enterprise Edition具有相同的所有特性,不需要升级或卸载当前产品。的一些特性,不属于快速入门版包括以下组件:
高可用性(HA)能力
通用并行文件系统(GPFS™)
软件包通常可能是IBM InfoSphere BigInsights还企业版的一部分,比如InfoSphere Streams,数据浏览和IBM Cognos®
加速器机数据分析
社会数据分析IBM加速器
产品支持

快速入门版支持以下特点:
v IBM大型SQL
v BigSheets
文本分析
v工作负载优化
查询支持
v InfoSphere BigInsights还为Eclipse工具
连接器
v管理工具
IBM Hadoop核心

版本的VM映像快速入门版的你
在下载Quick State Edition之前,请确定哪个包可能适合您的需要:
单节点使用:iibi2100_QuickStart_VM.tar.gz。
这个版本的快速启动版VM映像只能作为单节点运行。
多节点使用:iibi2100_QuickStart_VM_Cluster.tar.gz
这个版本的QuickStart Edition VM映像可以修改为使用多个节点运行。

如果您正在处理大量数据,那么在合理的时间内处理这些数据需要一个并行工作的分布式集群。快速启动集群VM映像允许向快速启动主节点添加多个节点,从而模拟这个分布式集群环境。有关如何向集群中添加其他节点的更多信息,请参见添加节点。

两个版本的系统需求是相同的。
您可以对这两个版本进行试验的特性是相同的。
修订1.0版权©2013年IBM公司。美国政府用户受限制的权利-使用,复制或披露受限制的GSAADP计划合同与IBM公司

四、BIQuickStartVM2.1.Cluster.README
IBM InfoSphere BigInsights Quick Start Edition, v2.1
首先自述
欢迎来到IBM®InfoSphere®BigInsights还™快速入门版,v2.1。

介绍
这个版本的快速启动版虚拟机(VM)可以被修改为使用多个节点运行。如果您只想使用单个节点的VMware映像,请下载IBM InfoSphere BigInsights QuickStart Edition V2.1.0.0(支持单个节点的VMware映像),iibi2100_QuickStart_VM.tar.gz。

快速启动版的目的是试验InfoSphere BigInsights的特性,同时能够在最短的时间内使用真实数据并运行真实的应用程序。快速启动版对集群没有数据限制,对许可也没有时间限制。这个快速启动版使用的是未经授权的程序许可,不用于生产使用。

系统需求
在下载之前,请确保您的系统满足最低要求:
硬件要求
v VM映像至少需要2个cpu,但是建议使用4个cpu。
虚拟机映像至少需要4 GB的RAM,但是建议使用8 GB的RAM。
v硬盘上至少有30 GB的空闲空间。
v支持的操作系统:苹果Mac - 64位Linux - 64位Windows 7 - 64位的虚拟机

软件需求
推荐玩家:
v VMware工作站9.0 + 5.0
v VMware Player +

虚拟机软件配置
根据主机的虚拟机的硬件功能,可以为更好的性能分配额外的处理器和内存。在启动InfoSphere BigInsights VM之前,可以更改VM软件包中的设置。

如果您确实更改了设置,那么在启动InfoSphere BigInsights之后,将VM命令行中的目录更改为$BIGINSIGHTS_HOME/bin并运行syncconf。这样InfoSphere BigInsights就可以识别您的新配置。然后,单击Stop BigInsights图标,然后单击Start BigInsights。InfoSphere BigInsights VM映像需要能够支持64位客户操作系统的虚拟化产品。

确保为操作系统启用了虚拟化。对于Windows操作系统,您可能需要更新BIOS来启用虚拟化。阅读特定操作系统的BIOS配置文档。以下是一般的指导方针:

  1. 关机,然后重新启动系统。
  2. 在系统完全重新启动之前,访问系统的BIOS。
  3. 在Configuration部分,单击CPU。启用这两种虚拟化设置:虚拟化技术和VT-d。
  4. 保存设置。
  5. 在Configuration部分中,单击Intel AMT并确保它也是启用的。控制台类型应该是VT100+。
  6. 保存并退出。系统继续重新启动。然后,关闭并重新启动。

下载IBM InfoSphere BigInsights快速启动版,v2.1 VMWare镜像
1。将IBM InfoSphere BigInsights Quick Start Edition V2.1.0.0(支持集群的VMWare映像)下载到本地文件系统。
2。提取iibi2100_QuickStart_VM_Cluster.tar.gz,然后提取iibi2100_QuickStart_VM_Cluster。文件。
3。当iibi2100_QuickStart_VM_Cluster.tar的提取完成时,打开BIQuickStartVM2.1。群集文件夹,以确保您拥有RHEL55-64。vmx文件。

复制文件以准备添加节点
对于您想要使用的每个额外的IBM InfoSphere BigInsights QuickStart Edition VMWare节点,复制BIQuickStartVM2.1。将文件夹群集到当前计算机上的另一个目的地或另一台计算机上。

提示:此时您可能只想复制一个或添加一个节点,因为在后面的步骤中,您将清理第二个节点,使其更小。清理后的节点是您应该复制的节点,以便规划其他节点。

每个副本表示此集群上的一个单独节点。其他节点可以位于相同的物理机器或其他机器上。

启动IBM InfoSphere BigInsights快速启动版,v2.1 VMWare
下面是启动IBM InfoSphere BigInsights VMWare(快速启动版,v2.1)的步骤。对创建的每个VM映像或节点执行以下步骤。在这些步骤中,将在两个不同的屏幕上询问用户名和密码。
参考下表:表1。用户名和密码
在这里插入图片描述
1.在您选择的VM播放器中打开映像。
注意:在一些VM播放器中,可能需要进一步配置。通过单击所使用的VM播放器中的Edit virtual machine设置或适当的界面控件来实现这一点。
执行以下步骤之一:
a.双击*。vmx文件。它在VM播放器中打开。
b.从VM Player中打开图像。VM Player完成启动过程后,您将看到一个用户登录请求:bivm登录:

2.VM Player完成启动过程后,您将看到一个用户登录请求:bivm登录:
输入root并单击Enter
3.然后,系统会提示输入密码:password
输入密码并单击Enter。
4.在第一个屏幕中,您可以选择您的语言。默认是英语(美国)。如果默认值可以接受,按F12打开下一个屏幕。
5.接下来的四个屏幕将确保您理解许可协议。当文本点击Enter时,我明白每个屏幕都高亮显示:
v Linux发行声明v红帽许可协议v VMware Tools许可协议v BigInsights许可协议
6.最终的许可协议屏幕显示了对每个许可的接受程度。若要继续,请单击Enter,同时高亮显示我接受的文本。
7.下一个屏幕是红帽企业Linux 5屏幕。在用户名字段中,键入biadmin。
8.在Password字段中,键入biadmin。
9.安装adobeflash更新:从浏览器下载并安装adobeflash: v的最新更新,访问Flash更新站点:http://support.mozilla.org/en-us/kb/installflash-plug -view- videos-anims-games #w_install -the- Flash -plug - in-manual。
v按照页面上的说明做。当提示输入超级用户(sudo用户)密码时,输入密码。
10. VM Player启动完成后,您就进入了InfoSphere BigInsights桌面。

在开始配置其他节点之前,您现在有一个节点或VM映像,以及该节点或VM映像的一个副本。每个节点都已经启动,您可以在每个节点上看到InfoSphere BigInsights桌面。为了方便引用每个节点,请参考原始BIQuickStartVM2.1。MasterNode集群。将复制的VM映像称为子节点。

过程
1。在第2页“复制文件准备添加节点”中创建的ChildNode VM镜像上,以biadmin用户身份登录,在ChildNode VM镜像桌面完成以下步骤:
a.双击Clean Local BI图标。此操作在此节点上卸载现有的InfoSphere BigInsights,并重置VMWare映像,以便稍后使用它在集群中添加数据节点。它还删除了Start BigInsights, Stop BigInsights, BigInsights WebConsole。BigInsights Shell和干净的本地BI图标。
b.如果您打算创建额外的节点,复制生成的<copied_node>\ BIQuickStartVM2.1。群集文件夹,其中包含到其他目的地的子节点。这个VM映像被简化,因此更容易复制。
2.在主节点或管理VM映像节点上,双击Start BigInsights图标。桌面上会打开一个终端窗口,显示启动BigInsights的进度。当它完成时,您将返回到桌面。
3.作为在集群中添加新节点的先决条件,集群中的所有节点都应该能够通过主机名成功地相互通信。可以通过修改来实现

/etc/hosts(在命令行上运行命令sudo vi /etc/hosts),使其包含所有节点的主机名和IP地址信息。无法更改主节点的主机名。它应该总是bivm。子节点的主机名必须与主节点的主机名不同。您可以通过在命令行上输入ipconfig来获得节点的IP地址。

例如,如果您有三个节点,一个是主节点bivm,另两个是子节点。通过运行ipconfig命令,您知道这三个节点的IP地址分别为“192.168.0.100”、“192.168.0.101”和“192.168.0.102”。如果希望将子节点命名为binode1和binode2,那么管理节点上的etc/hosts文件可能类似于下面的列表:
191.168.0.100 bivm
192.168.0.101 binode1
192.168.0.102 binode2。

例如,登录binode1,运行命令ping binode2和ping bivm。如果他们都成功了,那么这是有效的。

4.在主节点上,双击InfoSphere BigInsights Web Console图标,并确保您处于欢迎页面中。
a.在欢迎页面的Tasks窗格中,单击Add或remove一个节点。
b.点击添加节点。在“添加节点”窗口中,选择要添加的服务和要启动该服务的节点的IP地址。完成对话框的其余部分并单击Save。
有关如何向集群中添加其他节点的更多信息,请参见添加节点。使用IBM InfoSphere BigInsights快速启动版,V2.1

单击Start BigInsights桌面图标启动BigInsights服务。您可以单击Stop BigInsights来停止服务。
在BigInsights桌面,您可以通过单击BigInsights教程图标并执行这六个教程来了解BigInsights。通过单击Eclipse图标,可以使用Eclipse客户机开发应用程序。
注意:这个VM映像的一部分Eclipse客户端已经为InfoSphere BigInsights启用。您还可以通过单击它们各自的桌面图标来访问BigInsights论坛、BigInsights视频和BigInsights InfoCenter。
打开BigInsights Shell文件夹访问这些功能:v Big SQL Shell v HBase Shell v Hive Shell v Jaql Shell v Pig Shell v Terminal window
如果在使用VM映像时遇到问题,双击BigInsights桌面上的Reset VM图标。对于其他问题,双击BigInsights论坛图标。

2.HDFS

Hadoop基础与InfoSphere BigInsights
课程2:Hadoop架构
IBM技术证明
目录编号
内容
实验1探讨Hadoop分布式文件系统
1.1开始
1.2探索Hadoop分布式文件系统(终端)
1.2.1使用命令行接口
1.3探索Hadoop分布式文件系统(Web控制台)
1.3.1使用Web控制台
1.3.2Working with欢迎页面
1.3.3Administering BigInsights
1.3.4检查集群的状态
1.3.5启动和停止一个组件
1.3.6Working with文件
1.4总结

实验室1 探索Hadoop分布式文件系统
数字服务的压倒性趋势,加上廉价的存储,已经产生了大量的数据,企业需要有效地收集、处理和分析这些数据。来自数据仓库和高性能计算社区的数据分析技术对许多企业来说是非常宝贵的,但是它们的成本或扩展的复杂性常常会在没有立即需要的情况下阻碍数据的积累。由于这些数据中可能埋藏着宝贵的知识,因此已经发展了有关的扩大技术。示例包括谷歌的MapReduce和开源实现Apache Hadoop。

Hadoop是Apache软件基金会管理的一个开源项目。Hadoop的贡献者为一些世界上最大的技术公司工作。这个多样化的、有动力的社区为巩固、结合和理解数据提供了一个协作平台。从技术上讲,Hadoop包含两个关键服务:使用Hadoop分布式文件系统(HDFS)的数据存储和使用MapReduce技术的大规模并行数据处理。

完成这个动手实验后,你将能够:
·使用Hadoop命令在Hadoop系统上探索HDFS
·使用Web控制台在Hadoop系统上探索HDFS

允许45分钟到1小时完成这部分实验。

这个版本的实验是使用InfoSphere BigInsights 2.1 Quick Start版本设计的。在整个实验过程中,您将使用以下帐户登录信息:
在这里插入图片描述

1.1开始

为了准备这个实验室的内容,您必须经历让所有Hadoop组件启动的过程
__1。启动VMware映像时,如果VMware Player中尚未打开,则单击Play virtual machine按钮。
在这里插入图片描述
__2。使用以下凭证登录VMware虚拟机。用户:biadmin密码:biadmin
在这里插入图片描述
__3。登录之后,您的屏幕应该与下面的屏幕类似。
在这里插入图片描述
在开始使用Hadoop分布式文件系统之前,我们必须首先启动所有Biginsights组件。有两种方法可以做到这一点,通过终端和简单的双击图标。这两个方法将在以下步骤中显示。
__4。现在双击BigInsights Shell图标打开终端。
在这里插入图片描述
__5。单击终端图标
在这里插入图片描述
__6。打开终端后,更改为$BIGINSIGHTS_HOME/bin目录(默认为/opt/ibm/biginsights)
cd $BIGINSIGHTS_HOME/bin

cd /opt/ibm/biginsights/bin
__7。在BigInsights服务器上启动Hadoop组件(守护进程)。您可以使用这些命令练习启动所有组件。请注意,它们需要几分钟的时间来运行
./start-all.sh
在这里插入图片描述__8。有时某些hadoop组件可能无法启动。通过分别使用start.sh和stop.sh,可以一次启动和停止一个失败的组件。例如,要启动和停止Hive使用:
./start.sh hive
./stop.sh hive
在这里插入图片描述
注意,由于Hive最初没有失败,终端告诉我们Hive已经在运行了。
__9。一旦所有组件都成功启动,您就可以继续前进了。
在这里插入图片描述
__10。如果您想停止所有组件,请执行下面的命令。然而,对于这个实验室,请让所有的组件都启动
./stop-all.sh

接下来,让我们看看如何通过双击一个图标来启动所有的组件。
__11。双击Start BigInsights图标将执行执行上述步骤的脚本。一旦所有的组件都启动了,终端出口就设置好了。
在这里插入图片描述
__12。我们可以用类似的方式停止组件,双击stop Biginsights图标。(Start BigInsights图标右侧)
在这里插入图片描述
现在已经启动了组件,可以继续下一节了。

1.2探索Hadoop分布式文件系统(终端)

Hadoop分布式文件系统(HDFS)允许以文件和目录的形式组织用户数据。它提供了一个名为FS shell的命令行界面,允许用户与Hadoop MapReduce程序可以访问的HDFS中的数据进行交互。
有两种与HDFS交互的方法:
1.您可以使用命令行方法,并使用以下格式调用文件系统(fs) shell: hadoop fs
2.您还可以使用BigInsights Web控制台操作HDFS。
我们将在这个实验室使用这两种方法

1.2.1使用命令行界面

我们将从hadoop fs -ls命令开始,该命令返回包含权限信息的文件和目录列表。

确保Hadoop组件都已启动,并从与以前相同的终端窗口(以biadmin的身份登录)按照以下指令进行操作。

__1。列出根目录的内容。
hadoop fs -ls /
在这里插入图片描述
__2。要列出/user/biadmin目录的内容,可以执行:
hadoop fs -ls

hadoop fs -ls /user/biadmin

注意,在第一个命令中没有引用director,但是它等价于显式指定/user/biadmin的第二个命令。每个用户将在/user下获得自己的主目录。例如,对于用户biadmin,主目录是/user/biadmin。没有指定显式目录的任何命令都相对于用户的主目录。本机文件系统(Linux)中的用户空间通常位于/home/biadmin或/usr/biadmin下,但在HDFS中,用户空间是 /user/biadmin (拼写为“user”而不是“usr”)。
在这里插入图片描述
__3。要创建测试目录,可以发出以下命令:
hadoop fs -mkdir test
__4。再次发出ls命令查看子目录测试:
hadoop fs -ls /user/biadmin
在这里插入图片描述
这里ls的结果与Linux的结果类似,除了第二列(在本例中是“1”或“-”)。“1”表示复制因子(伪分布式集群一般为“1”,分布式集群一般为“3”);目录信息保存在namenode中,因此不需要复制(因此是“-”)。

要递归地使用HDFS命令,通常需要在HDFS命令中添加一个“r”。
__5。例如,要执行递归列表,我们将使用-lsr命令,而不仅仅是-ls,如下面的示例所示。
hadoop fs -ls /user
hadoop fs -lsr /user
在这里插入图片描述
__6。您可以管道(使用|字符)Linux shell中使用的任何HDFS命令。例如,您可以通过以下操作轻松地在HDFS中使用grep。
hadoop fs -mkdir /user/biadmin/test2
hadoop fs -ls /user/biadmin | grep test
在这里插入图片描述
可以看到,grep命令只返回其中包含“test”的行(因此从清单中删除了“Found x items”行和表中其他目录。)

__7。要在常规Linux文件系统和HDFS之间移动文件,可以使用put和get命令。例如,将文本文件README移动到hadoop文件系统:
hadoop fs -put /home/biadmin/README README
hadoop fs -ls /user/biadmin
在这里插入图片描述
现在您应该看到一个名为/user/biadmin/README的新文件,如上图所示。
__8。为了查看这个文件的内容,使用-cat命令如下:
hadoop fs -cat README
您应该看到README文件(存储在HDFS中)的输出。我们还可以使用linux diff命令查看我们放入HDFS中的文件是否与本地文件系统上的原始文件相同。
__9。执行下面的命令来使用diff命令。
cd /home/biadmin/
diff <( hadoop fs -cat README ) README
在这里插入图片描述
因为diff命令不产生输出,所以我们知道文件是相同的(diff命令打印文件中所有不同的行)。要找到文件的大小,需要使用-du或-dus命令。请记住,这些命令以字节为单位返回文件大小。
__10。要查找README文件的大小,请使用以下命令。
hadoop fs -du README
在这里插入图片描述
__11。要查找/user/biadmin目录中所有文件的大小,可以使用以下命令:
hadoop fs -du /user/biadmin
在这里插入图片描述
__12。要查找/user/biadmin目录中所有文件的大小,请使用以下命令。
hadoop fs -dus /user/biadmin
在这里插入图片描述
__13。如果您想获得关于hadoop fs命令的更多信息,请按以下方式调用-help。
hadoop fs -help
在这里插入图片描述
__14。对于命令上的特定帮助,请在帮助之后添加命令名。例如,要在dus命令上获得帮助,可以执行以下操作。
hadoop fs -help dus
在这里插入图片描述
我们现在已经完成了终端部分,您可以关闭终端。

1.3探索Hadoop分布式文件系统(Web控制台)

访问BigInsights Web控制台的第一步是启动所有BigInsights进程(Hadoop、Hive、Oozie、Map/Reduce等),这些进程应该在本实验室的开始就已经启动了。

1.3.1使用Web控制台

__1。双击BigInsights WebConsole图标启动Web控制台。
在这里插入图片描述
__2。验证您的Web控制台是否与此类似,并注意每个部分:
Tasks:快速访问流行的BigInsights任务
Quick Links:指向内部和外部快速链接的链接,以及用于增强环境的下载
Learn More: Online resources available to Learn More about BigInsights
在这里插入图片描述

1.3.2 Working with 欢迎页面

本节将向您介绍通过Welcome选项卡显示的Web控制台的主页。欢迎页面提供到常见任务的链接,其中许多任务也可以从控制台的其他区域启动。此外,欢迎页面还包含到流行外部资源的链接,例如BigInsights InfoCenter(产品文档)和社区论坛。您将探索这个页面的几个方面。
__3。在Welcome选项卡中,Tasks窗格允许您快速访问常见任务。选择视图、启动或停止服务任务。必要时向下滚动。
在这里插入图片描述
__4。这将把您带到Cluster Status选项卡。在这里,您可以停止并启动Hadoop服务,并获得下一节所示的额外信息
__5。单击Welcome选项卡返回主页面。
在这里插入图片描述

__6。检查右上角的Quick Links窗格,并使用它的垂直滚动条(如果需要的话)熟悉通过该窗格访问的各种资源。前几个链接仅激活Web控制台中的不同选项卡,而后续链接使您能够执行设置功能,例如向Eclipse开发环境中添加BigInsights插件。
在这里插入图片描述
__7。查看右下角的Learn More窗格。该区域中的链接可以访问您认为有用的外部Web资源,例如加速器演示和文档、BigInsights InfoCenter、公共讨论论坛、IBM support和IBM的BigInsights产品站点。如果需要,单击其中一个或多个链接,查看您可以使用的链接
在这里插入图片描述
1.3.3Administering BigInsights
Web控制台允许管理员检查系统的总体健康状况,并执行基本功能,如启动和停止特定的服务器(或组件),向集群添加节点,等等。您将在这里探索这些功能的一个子集。

1.3.4检查集群的状态
__8。单击页面顶部的Cluster Status选项卡返回到Cluster Status窗口
在这里插入图片描述
__9。检查集群的总体状态。下图是在一个运行多个服务的单节点集群上拍摄的。一个服务—监视—不可用。(如果您在集群上安装并启动了所有BigInsights服务,您的显示将显示正在运行的所有服务)
在这里插入图片描述
__10。单击Hive服务,并注意右侧窗格中为该服务提供的详细信息。从这里,您可以根据需要启动或停止hive服务(或您选择的任何服务)。例如,您可以看到Hive的Web界面的URL及其进程ID。
在这里插入图片描述
__11。还可以选择将Hive Web界面的URL剪切粘贴到浏览器的新选项卡中。您将看到用于管理目的的Hive提供的开源工具,如下所示。
在这里插入图片描述
__12。关闭此选项卡并返回到BigInsights Web控制台的集群状态部分

1.3.5启动和停止组件
__13。如果需要,单击Hive服务以显示其状态。
__14。在右边的窗格中(显示Hive状态),单击红色Stop按钮停止服务
在这里插入图片描述
__15。当提示确认要停止Hive服务时,单击OK并等待操作完成。右边的窗格应该类似于下面的图像
在这里插入图片描述
__16。单击Hive状态标题下的绿色箭头重新启动Hive服务。(请参见前面的图)当操作完成时,Web控制台将指示Hive再次运行,很可能是在一个进程ID下运行,这个进程ID与这个lab模块开头显示的较早的Hive进程ID不同。(您可能需要使用Web浏览器的Refresh按钮来重新加载显示在左侧窗格中的信息。)

1.3.6 Working with Files
控制台的Files选项卡允许您探索文件系统的内容、创建新的子目录、为测试目的上载小文件,以及执行其他与文件相关的功能。在这个模块中,您将了解如何在BigInsights的Hadoop分布式文件系统(HDFS)上执行此类任务。
__17。单击控制台的Files选项卡,开始研究分布式文件系统。
在这里插入图片描述
__18。展开左侧窗格中显示的目录树(/user/biadmin)。如果已经将文件上传到HDFS,就可以在目录中导航以找到它们。
在这里插入图片描述
__19。熟悉通过此窗格顶部的图标提供的函数,我们将在本模块的后续部分中介绍其中一些函数。只需将光标指向图标即可了解其功能。从左到右,图标使您可以复制一个文件或目录,文件,创建一个目录,重命名,HDFS上传文件,下载一个文件从HDFS到您的本地文件系统,从HDFS删除一个文件,设置权限,打开一个命令窗口启动HDFS shell命令,并刷新Web控制台页面
在这里插入图片描述
__20。将光标定位到user/biadmin目录上,然后单击Create directory图标,以创建用于测试的子目录
在这里插入图片描述
__21。当弹出窗口提示您输入目录名时,输入安慰ab并单击OK
在这里插入图片描述
__22。展开目录层次结构以验证新子目录是否已创建。
在这里插入图片描述
__23。创建另一个名为 ConsoleLabTest的目录。
__24。使用“重命名”图标将此目录重命名为“ ConsoleLabTest2”
在这里插入图片描述
__25。单击“移动”图标,当弹出“移动”屏幕时,选择“ConsoleLab ”目录并单击“确定”。
在这里插入图片描述
__26。使用set权限图标,您可以更改目录的权限设置。完成后单击OK。
在这里插入图片描述
__27。在突出显示ConsoleLabTest2 文件夹时,选择Remove图标并删除目录。
在这里插入图片描述
__28。保留在ConsoleLab目录中,单击Upload图标上传一个小示例文件,以供测试使用。
在这里插入图片描述
__29。当弹出窗口出现时,单击Browse按钮以浏览您的本地文件系统以获取示例文件。
__30。在本地文件系统中导航到安装BigInsights的目录。对于ibm提供的VMWare映像,BigInsights安装在文件系统:/opt/ibm/ BigInsights中。找到…/IHC子目录并选择CHANGES.txt文件。单击Open。
__31。验证窗口是否显示此文件的名称。请注意,您可以继续浏览以上载的其他文件,也可以从显示的列表中删除作为上载目标的文件。但是,对于这个练习,只需单击OK
在这里插入图片描述
__32。当上传完成时,验证CHANGES.txt文件出现在左侧的目录树中,如果它不能立即显示,则单击refresh按钮。在右边,您应该看到文件内容的一个子集以文本格式显示
在这里插入图片描述
__33。在ConsoleLab 目录中突出显示CHANGES.txt文件,然后单击Download按钮。
在这里插入图片描述
__34。出现提示时,单击Save File按钮。然后选择OK。
在这里插入图片描述
__35。如果Firefox被设置为默认浏览器,该文件将保存到用户下载目录中。对于这个练习,默认目录位置是可以的
在这里插入图片描述
1.4总结
恭喜你!现在您已经熟悉Hadoop分布式文件系统。现在您已经知道如何使用终端和BigInsights Web控制台在内部操作文件。你可以换到下一个单元。

3.MadReduce

Hadoop基础与InfoSphere BigInsights
课程3:MapReduce介绍

内容
实验1使用MapReduce
1.1运行MapReduce程序(终端)
1.2运行MapReduce程序(Web控制台)
1.3运行MapReduce程序 (Eclipse)
1.3.1准备
1.3.2创建BigInsights项目
1.3.3创建新的java map / reduce程序
1.3.4实施map / reduce项目
1.3.5运行本地Java map / reduce程序
1.3.6运行Java map / reduce项目集群
1.4总结

实验1使用MapReduce
现在我们已经了解了如何使用文件系统(fs) shell执行Hadoop命令来与HDFS交互,同样的fs shell也可以用来启动MapReduce作业。
在本节中,我们将介绍运行MapReduce程序所需的步骤。
MapReduce程序的源代码包含在编译的.jar文件中。Hadoop将把JAR加载到HDFS中,并将其分发到数据节点,在那里执行MapReduce作业的各个任务。Hadoop附带了一些要运行的示例MapReduce程序。其中一个是分布式WordCount程序,它读取文本文件并计算每个单词的频率。

在完成这个动手实验之后,您将能够:
•通过终端运行MapReduce程序
•通过Web控制台运行MapReduce程序
•通过Eclipse运行MapReduce程序。

允许45分钟到1小时完成这部分实验。

这个版本的实验是使用InfoSphere BigInsights 2.1 Quick Start版本设计的。

在整个实验过程中,您将使用以下帐户登录信息:
在这里插入图片描述
如果您在完成Hadoop基础知识第1部分:探索Hadoop分布式文件系统之后,还在继续这一系列的实验,那么您可以转到这个实验室的1.1部分。(应该启动所有Hadoop组件)

1.1运行MapReduce程序(终端)

首先,我们需要将数据文件从本地文件系统复制到HDFS。
__1。打开终端并输入cd $BIGINSIGHTS_HOME/bin
在这里插入图片描述
__2。执行下面的命令将输入文件复制到HDFS中。
hadoop fs -mkdir /user/biadmin/input
hadoop fs -put /home/biadmin/ sampledata / ibmwatson/* .txt /user/biadmin/input
在这里插入图片描述
__3。使用以下命令检查已复制的文件:
hadoop fs -ls input
在这里插入图片描述
__4。现在我们可以使用下面的命令运行wordcount作业。
hadoop jar /opt/ibm/biginsights/IHC/hadoop-example -1.1.1.jar wordcount /user/biadmin/input output

/user/biadmin/input/是输入文件所在的位置,output是存储作业输出的目录。在执行上述命令时,将自动创建输出目录。
注意:如果输出文件夹已经存在,或者尝试使用相同的参数重新运行成功的Mapper作业,MapReduce的默认行为是中止处理。您应该会看到这样的输出错误:
13/05/16 08:38:41错误安全性。UserGroupInformation: PriviledgedActionException as:biadmin cause:org.apache.hadoop.mapred。FileAlreadyExistsException:输出目录输出已经存在
在这里插入图片描述
__5。现在查看步骤3的输出。
hadoop fs -ls output
在这里插入图片描述
在这种情况下,输出没有被分割成多个文件(即part-r-00001, part-r-00002,等等)
__6。要查看part-r-0000文件的内容,发出以下命令:
hadoop fs -cat output/*00
在这里插入图片描述

1.2运行MapReduce程序(Web控制台)

__1。单击BigInsights WebConsole图标启动Web控制台
在这里插入图片描述
__2。单击Applications选项卡。应用程序目录显示在左侧的窗格中。正如您所看到的,这个VM上目前没有部署的应用程序。(管理员可以根据需要上传和“发布”内部或第三方应用程序,以及删除示例应用程序)。
在这里插入图片描述
__3。单击Manage链接。左侧窗格是包含示例应用程序的文件夹树。右边的窗格是实际示例应用程序的列表。注意它们都说未部署。
在这里插入图片描述
__4。在搜索框中,键入Word Count 以搜索单词计数应用程序。在右窗格中看到应用程序后,选择它。Web控制台在右侧的窗格中显示有关此应用程序和状态的信息。如果还没有部署,单击Deploy按钮,如下所示,然后单击弹出的模态对话框上的Deploy。
在这里插入图片描述
__5。当操作完成时,验证Web控制台指示应用程序已成功部署。具体来说,请确认右上角的按钮已更改为Undeploy,并且其旁边的Delete按钮不再活动。(已部署应用无法删除;它们必须先“取消部署”,然后才能从目录中删除。现在可以运行这个应用程序了。
在这里插入图片描述
__6。单击Run链接以查看已部署的应用程序,包括刚刚部署的单词计数应用程序。如果需要,您可以开始在搜索框中键入“单词计数”,以便在运行窗格中快速访问它。
在这里插入图片描述
__7。一旦您选择了上面显示的单词计数应用程序,在“执行名称”框中,输入MapReduceTest。还没有单击Run按钮。
__8。在Parameters区域,通过单击Browse按钮指定输入路径目录。
__9。当弹出窗口出现时,展开HDFS目录树以定位/user/biadmin/input目录。(您还记得,您在这个实验室的前一个模块中创建了这个目录,并将一些示例文本文件上传到其中。)突出显示目录并单击OK。
在这里插入图片描述
__10。将应用程序的输出路径参数设置为/user/biadmin/output_WC(您可以通过浏览输出目录来创建此目录,就像您在输入目录中所做的那样,然后手动将_WC追加到输出目录中)。
__11。确认你的字数设置与下面显示的一致,然后按绿色的运行按钮。这将导致为您的作业(或应用程序)生成一个简单的基于oozi的工作流,应用程序将开始运行。
在这里插入图片描述
__12。在应用程序运行时,在右下角窗格(名为应用程序历史记录)中监视其进度。请注意,您可以通过单击此窗格中的红色stop按钮来停止应用程序。但是,对于此练习,请允许作业运行到完成。根据您的机器资源,这可能需要几分钟。
在这里插入图片描述
__13。许多应用程序(包括单词计数)在成功执行时会生成输出。在Application History窗格中(在这里监视MapReduceTest应用程序的执行状态),单击作业输出列中的文件指针。如果需要,使用底部滚动条。
在这里插入图片描述
__14。控制台将切换到Files视图,并显示指定为应用程序输出路径的目录(在我们的示例中为/user/biadmin/output_WC)。展开此目录的内容,直到到达名为part-r-00000的输出文件。(如果需要,单击Web浏览器的Refresh按钮)单击该文件,右窗格将以文本格式显示其部分内容。
在这里插入图片描述
__15。由于Word Count以选项卡分隔的值格式生成输出,因此可以使用BigInsight类似电子表格的工具轻松查看这些数据。在右窗格中,单击“工作表”按钮,将显示样式从文本更改为工作表。
在这里插入图片描述

__16。我们希望清楚地看到这些数据,为了做到这一点,我们需要更改格式表示。单击靠近顶部的线阅读器旁边的铅笔图标。使用下拉菜单指定选项卡分隔的值数据作为阅读器类型。(行阅读器是指定的默认阅读器)。
在这里插入图片描述
__17。取消检查标题包括?框并单击绿色复选标记。
在这里插入图片描述
__18。验证您的输出是否以电子表格样式的格式显示。
在这里插入图片描述

1.3运行MapReduce程序 (Eclipse)

在本节中,您将使用一个名为RDBMS_data.csv的csv文件。该文件应该位于/home/biadmin/sampleData/DBMS目录下的本地文件系统中。

1.3.1准备

您需要将sampleData的副本放入HDFS中。
__19。启动终端,输入以下命令:
hadoop fs -copyFromLocal /home/biadmin/sampleData /user/biadmin/sampleData

1.3.2创建一个BigInsights项目

__20。在桌面上,双击Eclipse图标启动Eclipse。Eclipse IDE已经预先加载了BigInsights工具。选择默认工作区。
在这里插入图片描述
如果提示输入密码,请输入:biadmin
__21。您将看到欢迎页面。它应该与下图类似。
在这里插入图片描述
__22。要创建一个新项目,在Overview选项卡的第一个步骤窗格中单击“创建一个新的BigInsights项目”。
在这里插入图片描述
__23。输入News_Groups并单击Finish将出现一个询问项目名称的提示
在这里插入图片描述
__24。项目News_Groups将出现在project Explorer视图中。单击News_Groups旁边的箭头展开项目。您将看到一个src文件夹,其中存储所有Java源文件。您还将看到两个库条目——JRE系统库指向Java来编译项目文件,BigInsights v2.1.0.0包含针对BigInsights集群开发所需的所有BigInsights库。这包括编译Java map/reduce程序所需的Hadoop库。如果您使用不同版本的BigInsights, BigInsights库条目将显示除2.1.0.0之外的不同版本,而下面的库将根据与特定版本的BigInsights平台绑定的内容具有不同的版本。
在这里插入图片描述

1.3.3创建新的java map / reduce程序

java map/reduce程序由mapper、reducer和提供配置并运行程序的驱动程序类组成。而mapper、reducer和driver方法都可以存储在一个扩展了所需接口的类中;将它们放在不同的类中是一个很好的设计。Eclipse的BigInsights工具提供了一个向导,可以为所有三个类创建模板。
__25。在BigInsights透视图中,选择File -> New -> Java MapReduce程序。如果Java MapReduce菜单不可见,您也可以选择File -> New -> Other…并从BigInsights文件夹中选择Java MapReduce程序。
在这里插入图片描述
__26。将打开一个新向导,其中包含三个页面,其中包含mapper和reducer实现以及驱动程序类的详细信息。
对于mapper和reducer,我们必须指定输入和输出键和值对。
首先为mapper类选择一个包:myPackage为类名
News_GroupsMapper设置示例程序的名称

对于这个简单的项目,输入将是csv文件,mapper将使用一行数据调用。为了检查是否有数据,我们将输入键类型指定为org.apache.hadoop.io.LongWritable。该值是一行文本,因此输入值类型为org.apache.hadoop.io.Text。mapper将查看公司名称,它是映射器(org.apache.hadoop.io.Text)输出的关键字,作为输出值,我们希望获得与该公司联系的频率。(org.apache.hadoop.io.IntWritable)。

向导的第一页应该如下图所示。单击Next。
在这里插入图片描述
__27。在下一页中,我们必须指定reducer实现的值。这个包预先填充了与mapper相同的包,但是如果您愿意,您可以更改该值。将reducer类的名称设置为News_GroupsReducer。
输入键和值的类型是从mapper类定义的输出键和值复制过来的,因为mapper的输出被reducer作为输入处理。

对于示例程序,reducer汇总每个新闻组被联系的次数。因此,我们将输出键的类型设置为Text (org.apache.hadoop.io.Text),将输出值的类型设置为整数(org.apache.hadoop.io.IntWritable)。

还原程序的向导页面应该如下图所示。单击Next。
在这里插入图片描述
__28。在向导的最后一页,我们只需要选择一个包并指定驱动程序类的名称。将myPackage设置为包名,News_GroupsDriver设置为类名。单击Finish。
在这里插入图片描述
单击Finish之后,向导将为这三个类创建模板,并在Java编辑器中打开它们。mapper和reducer类实现Hadoop mapper和reducer接口,方法的实现取决于我们。
Mapper:

package myPackage; 
import java.io.IOException; 
import org.apache.hadoop.io.IntWritable; 
import org.apache.hadoop.io.LongWritable; 
import org.apache.hadoop.io.Text; 
import org.apache.hadoop.mapreduce.Mapper; 
public class News_GroupsMapper extends Mapper<LongWritable, Text, Text, IntWritable> { 
	@Override 
	public void map(LongWritable key, Text value, Context context) 
		throws IOException, InterruptedException { } 
	} 

Reducer:

package myPackage; 
import java.io.IOException; 
import org.apache.hadoop.io.IntWritable; 
import org.apache.hadoop.io.Text; 
import org.apache.hadoop.mapreduce.Reducer; 
public class News_GroupsReducer extends Reducer<Text, IntWritable, Text, IntWritable> { 
	public void reduce(Text key, Iterable<IntWritable> values, Context context) 
		throws IOException, InterruptedException { 
		} 
} 

驱动程序类创建一个新的Hadoop作业配置,并相应地设置mapper和reducer类。

package myPackage; 
import org.apache.hadoop.conf.Configuration; 
import org.apache.hadoop.fs.Path; 
import org.apache.hadoop.io.IntWritable;
import org.apache.hadoop.io.Text; 
import org.apache.hadoop.mapreduce.Job; 
import org.apache.hadoop.mapreduce.lib.input.FileInputFormat; 
import org.apache.hadoop.mapreduce.lib.output.FileOutputFormat; 
import org.apache.hadoop.util.GenericOptionsParser; 
public class News_GroupsDriver { 
	public static void main(String[] args) throws Exception { 
		Configuration conf = new Configuration(); 
		// Use programArgs array to retrieve program arguments. 
		String[] programArgs = new GenericOptionsParser(conf, args) .getRemainingArgs(); 
		Job job = new Job(conf); 
		job.setJarByClass(SalesDriver.class); 		  
		job.setMapperClass(SalesMapper.class); 
		job.setReducerClass(SalesReducer.class);
		job.setOutputKeyClass(Text.class); 
		job.setOutputValueClass(IntWritable.class); 
		// TODO: Update the input path for the location of the inputs of the map-reduce job. 
		FileInputFormat.addInputPath(job, new Path("[input path]") ); 
		// TODO: Update the output path for the output directory of the map-reduce job. 
		FileOutputFormat.setOutputPath(job, new Path("[output path ]")); 
		// Submit the job and wait for it to finish. 
		job.waitForCompletion(true); 
		// Submit and return immediately: 
		// job.submit(); 
		}
	}
1.3.4实施map / reduce项目

现在我们已经为map/reduce程序创建了模板,我们可以使用Java编辑器来实现mapper和reducer类,并对驱动程序类进行一些更改。由于本教程关注的是工具方面,而不是实现mapper和reducer的细节,因此我们只提供相关方法的实现。将代码复制到每个类的生成模板中。
News_GroupsMapper.java:
map method

public void map(LongWritable key, Text value, Context context) throws IOException, InterruptedException { 			// Make sure we have data 
	if (key.get() > -1) { 
		// Convert each line of data to string for processing 
		String line = value.toString();     
		// Split up each element of the line 
		String[] elements = line.split(",");
		// news group name is second field 
		String newsgroup = elements[1]; 
		context.write(new Text(newsgroup), new IntWritable(1));
	}
} 

News_GroupsReducer.java:
reduce method

public void reduce(Text key, Iterable<IntWritable> values, Context context) throws IOException, InterruptedException { 
	// Initialize count variable 
	int count = 0; 
	// Go through each element and count repetitions 
	for (IntWritable value : values) { 
		count++; 
	} 
	context.write(key, new IntWritable(count));
} 

News_GroupsDriver.java:
我们对驱动程序类所做的唯一更改是,从程序参数中获取输入和输出路径的参数,以便能够在运行时指定值。
__29。在News_GroupsDriver.java类中,转到标记为//TODO的代码部分,并更新如下所示的代码片段:
FileInputFormat.addInputPath(job, new Path(programArgs[0]));
FileOutputFormat.setOutputPath(job, new Path(programArgs[1]));

1.3.5运行本地Java map / reduce程序

既然我们已经实现了这个程序,我们就可以运行这个程序了。该工具提供了在本地运行Java map-reduce程序的功能,也可以在集群上远程运行。首先,我们将在本地运行该程序。
__30。从“运行”菜单中选择“运行配置”…
在这里插入图片描述
__31。将打开一个新的Run configurations对话框。双击左侧树中的条目Java MapReduce,创建一个新的空运行配置。
__32。在Main选项卡中,选择project News_Groups,并选择主类myPackage.News_GroupsDriver。您还可以在name字段中为run配置指定一个更有意义的名称。
在这里插入图片描述
__33。在BigInsights部分,我们可以选择是针对集群运行(默认),还是在本地运行。现在我们希望在本地Eclipse机器上运行,因此选择local。(如有需要可向下滚动)
在这里插入图片描述
__34。我们的程序需要两个输入参数——数据输入的值(目录或特定文件)和存储输出的文件夹。由于我们希望在本地运行,所以应该在本地文件系统中指定目录。作为输入文件,指向本地文件系统中RDBMS_data.csv文件的位置。(/home/biadmin/sampleData/DBMS/RDBMS_data.csv)

输出目录可以是本地文件系统中用户id具有写访问权限的任何目录。
在这里插入图片描述
删除目录被设置为与程序的输出目录相同的值。如果在运行程序时输出目录存在,Hadoop将抛出该目录已经存在的错误。

与每次运行程序之前手动删除它不同,我们可以简单地设置delete目录,这在开发新程序或调试时非常方便。

作业名称是一个可选参数,您可以将其设置为覆盖Hadoop在运行作业时自动分配的作业名称。

__35。除了主选项卡中的设置之外,我们还必须在JAR settings选项卡中进行一些更改。单击JAR settings选项卡打开它
在这里插入图片描述
为了运行map/reduce程序,它将作为JAR文件提交给Hadoop。在JAR settings选项卡中,您可以选择指定一个现有的JAR文件,或者让JAR在每次使用BigInsights项目中的源代码运行程序时重新构建。
__36。单击Browse打开一个file select对话框,保留默认位置(这是BigInsights项目的位置),并输入名称新闻组。单击OK关闭Browse对话框。
在这里插入图片描述
__37。在JAR settings选项卡中,选中复选框,在每次运行时重新构建JAR文件。这将确保我们在每次运行程序时都使用最新的源文件重新构建jar。
在这里插入图片描述
__38。展开树并选择src文件夹以包含所有Java文件。页面应该如下图所示,JAR设置名称旁边的错误指示器应该消失。
在这里插入图片描述
在附加JAR文件列表中,您可以添加程序可能需要的附加JAR文件,这些文件将与JAR捆绑在一起,并在Hadoop运行程序时添加到类路径中。我们的示例程序不需要任何额外的Jar文件,因此我们保持列表为空。__39。单击Apply并运行该程序。由于我们在本地运行,您将看到一个控制台窗口,其中包含Hadoop的输出。
在这里插入图片描述
__40。当作业完成时,您将看到一行指示map和reduce 100%完成的行。
在这里插入图片描述
要查看程序的输出,请使用文件浏览器导航到运行配置中指定的输出目录。您将看到两个文件:来自Hadoop的成功文件和包含程序输出的部分文件。如果打开part文件,您将看到每个新闻组都被联系过一次。
在这里插入图片描述

1.3.6在集群上运行Java map/reduce程序

既然我们已经在Eclipse本地运行了该程序,那么我们还想在集群上测试该程序。要在集群上运行程序,首先需要定义到现有BigInsights集群的连接。
__41。在BigInsights视图中,单击BigInsights servers视图中的Add a new server图标。
在这里插入图片描述
__42。在出现提示时,指定BigInsights web控制台的URL以及用户id和密码。在URL字段中输入值后,服务器名称将自动填充,但是您可以更改该值。
在这里插入图片描述
__43。连接成功后,单击Test connection,单击Finish在BigInsights Servers视图中注册BigInsights服务器。

要在集群上运行,我们仍然需要运行配置,并且可以使用为本地运行创建的配置作为基础来创建新的配置。

__44。单击Run -> Run Configurations…并选择前面创建的Run配置。因为我们必须改变为输入和输出目录的位置,以反映在Hadoop文件系统的位置,我们将创建一个运行配置的第一个副本,这样我们不需要再次填写一切,可以很容易地切换本地和集群模式不改变我们的程序参数。
__45。在run configuration对话框中,选择前面创建的run configuration (News_Groups_Local),单击Duplicate按钮创建现有run配置的副本,并为run配置指定一个新名称。
在这里插入图片描述
__46。在执行模式中,选择Cluster并选择刚刚注册的BigInsights服务器。
在这里插入图片描述
__47。在作业参数部分,我们需要将输入文件位置更新到HDFS。确保您的用户id具有对HDFS中的输出目录的写访问权限。删除目录的值与输出目录的值相同。
在这里插入图片描述
__48。单击Apply并Run在集群上运行该程序。
__49。当程序在集群上运行时,程序的JAR将被复制到集群中,并使用Hadoop命令在集群上运行。Eclipse中将弹出一个包含进度信息的对话框,当程序在服务器上成功提交时,您将在Eclipse工作区的Console窗口中看到作业id信息。
在这里插入图片描述
__50。要查看工作的详细信息,您需要访问BigInsights控制台。在桌面上打开BigInsights Web控制台。__51。单击应用程序状态页面并单击子链接Jobs。
在这里插入图片描述
jobs页面显示任何Hadoop作业的作业状态信息,是深入研究更多作业细节的起点。
__52。要深入了解作业的详细信息,请单击作业的行。在页面底部,一个表显示了setup、map、reduce和cleanup任务的分解,您可以看到map任务失败被终止,并且没有成功。
在这里插入图片描述
__53。单击map行以深入了解更多细节。继续单击任务尝试,直到到达带有日志文件的页面。若要有更多空间查看日志文件内容,请单击右侧的窗口图标:
在这里插入图片描述
在日志文件页面中,您将看到作业的stdout、stderr和syslog输出。
在这里插入图片描述

1.4总结

恭喜你!您现在已经体验了通过终端、Web控制台和Eclipse运行java map/reduce程序。

4.Pig

5.Hive

6.BigSQL 1

7.BigSQL 2

8.Hbase 1

9.Hbase 2

二、 Hbase应用开发实验

实验目的:
1) 理解HBase在Hadoop体系结构中的角色;
2) 熟练使用HBase操作常用的Shell命令;
3) 熟悉HBase操作常用的Java API
实验要求:本实验为应用开发型实验,应按要求提交上机实验报告相关源程序代码
实验内容:
1.编程实现以下指定功能,并用Hadoop提供的HBase Shell命令完成相同任务:
(1) 列出HBase所有的表的相关信息,例如表名、创建时间等;
(2) 在终端打印出指定的表的所有记录数据;
(3) 向已经创建好的表添加和删除指定的列族或列;
(4) 清空指定的表的所有记录数据;
(5) 统计表的行数。
2.现有以下关系型数据库中的表和数据,要求将其转换为适合于HBase存储的表并插入数据:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
学生表(Student)
学号(S_No) 姓名(S_Name) 性别(S_Sex) 年龄(S_Age)
2015001 Zhangsan male 23
2015003 Mary female 22
2015003 Lisi male 24

课程表(Course)
课程号(C_No) 课程名(C_Name) 学分(C_Credit)
123001 Math 2.0
123002 Computer Science 5.0
123003 English 3.0

选课表(SC)
学号(SC_Sno) 课程号(SC_Cno) 成绩(SC_Score)
2015001 123001 86
2015001 123003 69
2015002 123002 77
2015002 123003 99
2015003 123001 98
2015003 123002 95
注1: 实验过程中需要在上述表中添加更多数据,具体添加要求如下:学生表(Student)添加30行;课程表(Course)添加10行;选课表(SC)添加150行;并将添加的数据作为实验报告附件提交。
注2:为得到更多的实验数据,可针对上述三个表开发自动数据生成程序。
请编程完成以下指定功能:
(1)createTable(String tableName, String[] fields)
创建表,参数tableName为表的名称,字符串数组fields为存储记录各个域名称的数组。要求当HBase已经存在名为tableName的表的时候,先删除原有的表,然后再创建新的表。
(2)addRecord(String tableName, String row, String[] fields, String[] values)
向表tableName、行row(用S_Name表示)和字符串数组files指定的单元格中添加对应的数据values。其中fields中每个元素如果对应的列族下还有相应的列限定符的话,用“columnFamily:column”表示。例如,同时向“Math”、“Computer Science”、“English”三列添加成绩时,字符串数组fields为{“Score:Math”,”Score;Computer Science”,”Score:English”},数组values存储这三门课的成绩。
(3)scanColumn(String tableName, String column)
浏览表tableName某一列的数据,如果某一行记录中该列数据不存在,则返回null。要求当参数column为某一列族名称时,如果底下有若干个列限定符,则要列出每个列限定符代表的列的数据;当参数column为某一列具体名称(例如“Score:Math”)时,只需要列出该列的数据。
(4)modifyData(String tableName, String row, String column)
修改表tableName,行row(可以用学生姓名S_Name表示),列column指定的单元格的数据。
(5)deleteRow(String tableName, String row)
删除表tableName中row指定的行的记录。
3. 利用HBase和MapReduce完成如下任务:
假设HBase有如下表,表的逻辑视图及部分数据如下所示:
在这里插入图片描述
表 逻辑视图及部分数据
书名(bookName) 价格(price)
Database System Concept 30$
Thinking in Java 60$
Data Mining 25$
注1: 实验过程中需要在上述表中添加更多数据。
要求:从HBase读出上述表中的数据,利用MapReduce完成对“price”的排序,并将结果存储到HBase中。HBase中的每一行的行键用“bookName”表示。

实验过程:

1.编程实现以下指定功能,并用Hadoop提供的HBase Shell命令完成相同任务:

(1) 列出HBase所有的表的相关信息,例如表名、创建时间等;

(2) 在终端打印出指定的表的所有记录数据;

(3) 向已经创建好的表添加和删除指定的列族或列;

(4) 清空指定的表的所有记录数据;

(5) 统计表的行数。

2.现有以下关系型数据库中的表和数据,要求将其转换为适合于HBase存储的表并插入数据:

学生表(Student)
学号(S_No) 姓名(S_Name) 性别(S_Sex) 年龄(S_Age)
2015001 Zhangsan male 23
2015003 Mary female 22
2015003 Lisi male 24

课程表(Course)
课程号(C_No) 课程名(C_Name) 学分(C_Credit)
123001 Math 2.0
123002 Computer Science 5.0
123003 English 3.0

选课表(SC)
学号(SC_Sno) 课程号(SC_Cno) 成绩(SC_Score)
2015001 123001 86
2015001 123003 69
2015002 123002 77
2015002 123003 99
2015003 123001 98
2015003 123002 95

注1: 实验过程中需要在上述表中添加更多数据,具体添加要求如下:学生表(Student)添加30行;课程表(Course)添加10行;选课表(SC)添加150行;并将添加的数据作为实验报告附件提交。
注2:为得到更多的实验数据,可针对上述三个表开发自动数据生成程序。

请编程完成以下指定功能:

(1)createTable(String tableName, String[] fields)

创建表,参数tableName为表的名称,字符串数组fields为存储记录各个域名称的数组。要求当HBase已经存在名为tableName的表的时候,先删除原有的表,然后再创建新的表。

(2)addRecord(String tableName, String row, String[] fields, String[] values)

向表tableName、行row(用S_Name表示)和字符串数组files指定的单元格中添加对应的数据values。其中fields中每个元素如果对应的列族下还有相应的列限定符的话,用“columnFamily:column”表示。例如,同时向“Math”、“Computer Science”、“English”三列添加成绩时,字符串数组fields为{“Score:Math”,”Score;Computer Science”,”Score:English”},数组values存储这三门课的成绩。

(3)scanColumn(String tableName, String column)

浏览表tableName某一列的数据,如果某一行记录中该列数据不存在,则返回null。要求当参数column为某一列族名称时,如果底下有若干个列限定符,则要列出每个列限定符代表的列的数据;当参数column为某一列具体名称(例如“Score:Math”)时,只需要列出该列的数据。

(4)modifyData(String tableName, String row, String column)

修改表tableName,行row(可以用学生姓名S_Name表示),列column指定的单元格的数据。

(5)deleteRow(String tableName, String row)

删除表tableName中row指定的行的记录。

3. 利用HBase和MapReduce完成如下任务:

假设HBase有如下表,表的逻辑视图及部分数据如下所示:

表 逻辑视图及部分数据
书名(bookName) 价格(price)
Database System Concept 30$
Thinking in Java 60$
Data Mining 25$

注1: 实验过程中需要在上述表中添加更多数据。
要求:从HBase读出上述表中的数据,利用MapReduce完成对“price”的排序,并将结果存储到HBase中。HBase中的每一行的行键用“bookName”表示。

三、Hbase JAVA编程开发实验

实验目的:在BigInsights基本实验基础上,使用Eclips开发环境中完成基于Hbase的JAVA应用开发。
实验要求:本实验为应用开发型实验,应按要求提交上机实验报告及相关JAVA源程序代码
实验内容:
1) 按照“Hbase应用开发实验1.pdf”中给出的说明,完成相关相关实验及JAVA程序的编写、调试和运行,提交JAVA源程序(AccessObject.java,HBaseTester.java,User.java)及运行结果。
2) 按照“Hbase应用开发实验2.pdf”中给出的说明,完成相关相关实验及JAVA程序的编写、调试和运行,提交JAVA源程序(AccessObject.java,HBase_CounterTester.java,HBase_FilterTester.java,HBase_SchemaTester.java)及运行结果。
3) 按照“Hbase应用开发实验3.pdf”中给出的说明,完成相关相关实验及JAVA程序的编写、调试和运行,提交JAVA源程序(ProductAnalyzer.java,ProductAnalyzer_Sink.java)及运行结果。

猜你喜欢

转载自blog.csdn.net/AthlenaA/article/details/87480063