华为云实验—MRS基础入门实践

2.MRS基础配置收起

云原生数据湖MRS(MapReduce Service)为客户提供Hudi、ClickHouse、Spark、Flink、Kafka、HBase等Hadoop生态的高性能大数据组件,支持数据湖、数据仓库、BI、AI融合等能力。MRS同时支持混合云和公有云两种形态:混合云版本,一个架构实现离线、实时、逻辑三种数据湖,以云原生架构助力客户智能升级;公有云版本,协助用户快速构建低成本、灵活开放、安全可靠的一站式大数据平台。

2.1.进入集群创建界面

进入华为云控制台,鼠标移动到云桌面浏览器页面中左侧菜单栏,点击服务列表->“大数据”->“MapReduce服务 MRS”,进入后点击左侧栏“集群列表”,打开如下图所示:

2.2.创建集群

点击左侧栏“现有集群”,单击右上角“购买集群”,选择“快速购买”并按下图配置参数。

具体参数如下:

区域:华北-北京四

计费模式:按需计费

集群名称:mrs_test

版本类型:普通版

集群版本:MRS 3.1.2.1.T19

组件选择:Hadoop分析集群

可用区:默认

虚拟私有云:vpc-mrs

子网:subent_mrs

集群节点:默认

Kerberos认证:不开启

用户名:root/admin

密码:Mrstest@123

通信安全授权:确认授权

点击下方“立即购买”,此时返回至集群列表界面,可以查看到已经创建的集群。

2.3.绑定弹性公网IP

选择“服务列表-计算-弹性云服务器ECS”,进入ECS控制台,此时可以看到通过集群创建好的五台ECS,接着找到命名为“…master1”的主用ECS。

此时找到右侧“更多-网络设置-绑定弹性公网IP”,将系统预置的弹性公网IP绑定到对应ECS。

此处选择两个预置弹性公网IP中,带宽为100 Mbit/s的EIP进行绑定。

绑定完成后,可以发现详情界面发生改变,此时能够看到主用ECS已显示有刚刚绑定的弹性公网IP。

2.4.配置安全组规则

返回MRS集群列表界面,点击集群名称进入详情界面。

此时找到“IAM用户同步”,点击“同步”按钮,等待同步完成。

同步完成后,可以看到界面已经发生改变。

此时点击“前往Manager”按钮,为集群绑定公网IP和安全组。

绑定成功后,即可进入“Manager”界面。

此时点击“添加安全组规则”,之后选择“管理安全组规则”。

选择“入方向规则”,点击“添加规则”,放通22端口和9022端口,为之后通过远程登录的方式进入ECS做好准备,具体配置如下图:

此处放通的0.0.0.0/0网段只用于实验使用,在实际生产中不建议使用该网段,该网段为全放通状态,有一定安全隐患,故仅限实验测试使用。

安全组配置完成后,返回绑定界面,点击“确定”,此时会自动跳转至“Manager”界面。

输入之前创建MRS集群所设置的用户名“admin”和密码即可进入。

2.5.Hive创建表

Hive是建立在Hadoop上的数据仓库基础构架。它提供了一系列的工具,可以用来进行数据提取转化加载(ETL),这是一种可以存储、查询和分析存储在Hadoop中的大规模数据的机制。Hive定义了简单的类SQL查询语言,称为HiveQL,它允许熟悉SQL的用户查询数据。Hive的数据计算依赖于MapReduce、Spark、Tez。

此时进入ECS控制台,找到主用ECS“master1”,查看对应弹性公网IP并复制。

接着通过虚拟桌面中的Xfce终端登录ECS“master1”,具体操作如下(登录密码为创建MRS集群时所设置的集群密码):

通过如下命令登录至ECS,

ssh root@弹性公网IP

(若是出现提示,选择yes进入下一步,输入密码完成登录)

2.5.1.创建内部表

首先设置环境变量,输入以下命令实现:

source  /opt/client/bigdata_env

输入:beeline,回车进入hive;

注意:hive中的所有语句都需要以分号结尾,否则不能执行。

输入以下命令创建内部表:

create  table  test01(name string,gender string ,age int) row format delimited fields terminated by ',' stored as textfile ;

通过“show tables;”命令显示所有已存在的表。

2.5.2.创建外部表

输入以下命令创建外部表:

create external table test02(name string,gender string ,age int)  row format delimited fields terminated by ',' stored as textfile ;

2.5.3.载入HDFS数据

HDFS是Hadoop的分布式文件系统(Hadoop Distributed File System),实现大规模数据可靠的分布式读写。HDFS针对的使用场景是数据读写具有“一次写,多次读”的特征,而数据“写”操作是顺序写,也就是在文件创建时的写入或者在现有文件之后的添加操作。HDFS保证一个文件在一个时刻只被一个调用者执行写操作,而可以被多个调用者执行读操作。

首先通过“ctrl+c”退出hive模式(或者新打开一个窗口),此时编辑名为test01.txt的数据文件,具体编辑内容如下:

此时使用命令“source /opt/client/bigdata_env”设置HDFS环境变量。

source  /opt/client/bigdata_env

在根目录的user文件夹下创建test01文件夹,首先查看user下的内容,然后创建,再使用ls命令查看,可以看到出现了test01文件夹。

具体命令:

hdfs  dfs  -mkdir  /user/test01
hdfs dfs -ls /user/

执行hdfs的put命令,把刚刚编辑的数据文件上传到hdfs上的/user/test01/目录中。

命令为:

hdfs  dfs  -put  test01.txt  /user/test01/

输入beeline进入hive,执行数据加载,导入数据到外部表中,命令:

load  data  inpath  '/user/test01/test01.txt'  into table  test02;
select * from test02;

2.6.Hive查询

2.6.1.模糊查询表

执行命令:

show  tables  like  'test*';

2.6.2.简单查询

Limit(典型的查询会返回多行数据,Limit子句用于限制返回的行数。)

执行命令:

select  *  from  test02  limit  2;

Where(使用where子句,将不满足条件的行过滤掉,where子句紧随from子句后面。)

执行命令:

select  *  from  test02  where  gender ='male'  limit  2;

Order by(order by为全局排序,后面可以有多列进行排序,默认按字典排序。)

执行命令:

select  *  from  test02  where  gender ='female'  order  by  age  limit  2;

2.6.3.复杂查询

首先通过“ctrl+c”退出hive模式,之后在本地使用“vi”编辑数据文件test03.txt,具体内容如下:

将刚刚新增的数据文件上传至HDFS。

执行命令:

hdfs  dfs  -put  test03.txt   /user/test01/

使用“beeline”命令再次进入Hive模式,创建测试用表,具体命令如下:

create external table test03(id int,name string ,subject string,score  float)  row format delimited fields terminated by ',' stored as textfile ;

使用如下命令将数据导入至对应测试用表中:

load  data  inpath  '/user/test01/test03.txt'  into  table  test03;
select * from test03;

Sum(将某列进行累加(如果某行的列的为null则忽略))

通过执行如下命令完成测试用例中学生成绩的汇总统计:

select  name  ,sum(score)  total_score  from  test03  group  by  name ;

求出学生总成绩后,过滤出总分大于230的学生,具体命令如下:

select  name  ,sum(score)  total_score  from  test03  group  by  name  having  total_score > 230;

Max(获取组内某字段最大值(null自动忽略))

查看每门课程的最高分,具体命令如下:

select  subject,max(score)  from  test03  group by subject;

Count(统计有效行(非null))

统计每门课有多少人参加考试,具体命令如下:

select subject,count(1) from test03 group by subject;

2.7.Hadoop分析

2.7.1.准备Hadoop样例程序

具体操作如下:

登录主用ECS“master1”,输入如下命令下载hadoop样例程序:

wget https://dist.apache.org/repos/dist/release/hadoop/common/hadoop-3.2.4/hadoop-3.2.4.tar.gz

通过“tar”命令解压下载好的样例程序安装包,具体命令如下:

tar -zxvf hadoop-3.2.4.tar.gz

2.7.2.准备Hadoop数据文件

通过“vi”编辑两个数据文件,即wordcount1.txt和wordcount2.txt,具体操作命令如下:

vi wordcount1.txt

vi wordcount2.txt

在hdfs根目录的user文件夹下创建helloworld文件夹,首先查看user下的内容,然后创建,再使用ls命令查看,可以看到出现了helloworld文件夹:

hdfs  dfs  -ls  /user/
hdfs  dfs  -mkdir  /user/helloworld
hdfs  dfs  -ls  /user/

同理创建input文件夹:

hdfs  dfs  -mkdir  /user/input

通过“put”命令,将之前下载好的样例程序上传至刚创建好的helloworld文件夹,具体命令如下:

hdfs  dfs  -put  hadoop-3.2.4/share/hadoop/mapreduce/hadoop-mapreduce-examples-3.2.4.jar  /user/helloworld/

同理将之前编辑好的wordcount1.txt和wordcount2.txt上传至刚创建好的input文件夹,具体命令如下:

hdfs  dfs  -put  wordcount1.txt  /user/input/
hdfs  dfs  -cat  /user/input/wordcount1.txt

hdfs  dfs  -put  wordcount2.txt  /user/input/
hdfs  dfs  -cat  /user/input/wordcount2.txt

2.7.3.通过MRS界面提交分析作业任务

在MRS控制台左侧导航栏选择“集群列表 > 现有集群”,单击名称为“mrs_test”的集群。

在集群信息页面选择“作业管理”页签,单击“添加”,进入添加作业页面,居然操作如下:

“作业类型”选择“MapReduce”;

“作业名称”填写“wordcount”;

“程序执行路径”单击HDFS,选择刚刚在HDFS上传的hadoop样例程序,具体路径为:

/user/helloworld/hadoop-mapreduce-examples-3.2.4.jar;

“执行程序参数”配置为:

wordcount hdfs://hacluster/user/input/ hdfs://hacluster/user/output/ 。output为输出路径(请设置为一个不存在的目录);

“服务配置参数”不配置。

单击“确定”,提交作业。

作业提交成功后默认为“已接受”状态,不需要用户手动执行作业。

进入“作业管理”页面,查看作业执行状态及日志,稍等几分钟后可以看到作业已执行成功。

此时返回Cloudshell界面,通过hdfs查询命令查看作业执行结果所对应的输出文件夹output,具体操作如下:

执行ls命令查看output文件夹下存在的输出文件:

hdfs dfs -ls /user/output

执行cat命令查看part-r-00000文件内的分析结果:

hdfs  dfs  -cat /user/output/part-r-00000

至此实验内容全部完成。