基於docker的spark-hadoop分布式集群之二: 環境測試


在上一章《環境搭建》基礎上,本章對各個模塊做個測試

Mysql 測試

1、Mysql節點准備

為方便測試,在mysql節點中,增加點數據

進入主節點

docker exec -it hadoop-maste /bin/bash

進入數據庫節點

ssh hadoop-mysql

創建數據庫

create database zeppelin_test;

創建數據表

create table user_info(id INT NOT NULL AUTO_INCREMENT PRIMARY KEY,name VARCHAR(16),age INT);

增加幾條數據,主鍵讓其自增:

insert into user_info(name,age) values("aaa",10);
insert into user_info(name,age) values("bbb",20);
insert into user_info(name,age) values("ccc",30);

2、Zeppelin配置

配置驅動及URL地址:

default.driver  ====>   com.mysql.jdbc.Driver
default.url	    ====>   jdbc:mysql://hadoop-mysql:3306/zeppelin_test

使zeppelin導入mysql-connector-java庫(maven倉庫中獲取)

mysql:mysql-connector-java:8.0.12

3、測試mysql查詢

%jdbc
select * from user_info;

應能打印出先前插入的幾條數據。

Hive測試

本次使用JDBC測試連接Hive,注意上一節中,hive-site.xml的一個關鍵配置,若要使用JDBC連接(即TCP模式),hive.server2.transport.mode應設置為binary。

1、Zeppelin配置

(1)增加hive解釋器,在JDBC模式修改如下配置

default.driver  ====>   org.apache.hive.jdbc.HiveDriver

default.url	    ====>   jdbc:hive2://hadoop-hive:10000

(2)添加依賴

org.apache.hive:hive-jdbc:0.14.0
org.apache.hadoop:hadoop-common:2.6.0

2、測試

Zeppelin增加一個note

增加一個DB:

%hive
CREATE SCHEMA user_hive
%hive
use user_hive

創建一張表:

%hive
create table if not exists user_hive.employee(id int ,name string ,age int)

插入數據:

%hive
insert into user_hive.employee(id,name,age) values(1,"aaa",10)

再打印一下:

%hive
select * from user_hive.employee

所有的操作,都是OK的。

另外,可以從mydql中的hive.DBS表中,查看到剛剛創建的數據庫的元信息:

%jdbc
select * frmo hive.DBS;

如下:

上圖顯示了剛剛創建的DB的元數據。

登錄Hadoop管理后台,應也能看到該文件信息(容器環境將Hadoop的50070端口映射為宿主機的51070)

http://localhost:51070/explorer.html#/home/hive/warehouse/user_hive.db

可以看到,user_hive.db/employee下,有剛剛創建的數據文件,如下:

分布式測試

在上一節基礎上,進入主從節點,可以看到,在相同的目錄下,都存在有相同的數據內容,可見上一節對於hive的操作,在主從節點是都是生效的。操作如下:

主節點:

root@hadoop-maste:~# hdfs dfs -ls  /home/hive/warehouse/user_hive.db/employee
Found 1 items
-rwxr-xr-x   2 gpadmin supergroup          9 2018-08-15 11:36 /home/hive/warehouse/user_hive.db/employee/000000_0

從節點:

root@hadoop-node1:~# hdfs dfs -ls  /home/hive/warehouse/user_hive.db/employee
Found 1 items
-rwxr-xr-x   2 gpadmin supergroup          9 2018-08-15 11:36 /home/hive/warehouse/user_hive.db/employee/000000_0

測試 Spark 操作 hive

通過spark向剛才創建的user_hive.db中寫入兩條數據,如下:

import org.apache.spark.sql.{SQLContext, Row}
import org.apache.spark.sql.types.{StringType, IntegerType, StructField, StructType}
import org.apache.spark.sql.hive.HiveContext
//import hiveContext.implicits._

val hiveCtx = new HiveContext(sc)

val employeeRDD = sc.parallelize(Array("6 rc 26","7 gh 27")).map(_.split(" "))

val schema = StructType(List(StructField("id", IntegerType, true),StructField("name", StringType, true),StructField("age", IntegerType, true)))

val rowRDD = employeeRDD.map(p => Row(p(0).toInt, p(1).trim, p(2).toInt))

val employeeDataFrame = hiveCtx.createDataFrame(rowRDD, schema)

employeeDataFrame.registerTempTable("tempTable")

hiveCtx.sql("insert into user_hive.employee select * from tempTable")

運行之后,查一下hive

%hive
select * from employee

可以看到,數據已經寫進文件中了


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM