版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
任务5.1Sqoop的安装与应用任务实施1.安装与配置Sqoop(1)安装与配置所需的软件切换到安装包的存储目录,执行命令“tar-zxvfsqoop-1.4.7.bin_hadoop-2.6.0.tar.gz-C/usr/local”,解压Sqoop安装包到指定目录中,操作命令如下。[root@master1opt]#tar-zxvf
sqoop-1.4.7.bin__hadoop-2.6.0.tar.gz-C/usr/local将解压后的sqoop包重命名为“sqoop”,操作命令如下。[root@master1local]#mvsqoop-1.4.7.bin__hadoop-2.6.0sqoop如果在普通用户模式下,需要额外执行命令“sudochown-Rhadoop:hadoopsqoop/”,修改“sqoop”目录的权限。(2)配置sqoop-env.sh执行命令“catsqoop-env-template.sh>>sqoop-env.sh”,复制/usr/local/sqoop/conf目录中的配置文件sqoop-env-template.sh,并将其重命名为sqoop-env.sh,操作命令如下。[root@master1conf]#catsqoop-env-template.sh>>sqoop-env.sh编辑sqoop-env.sh文件,分别将Hadoop、HBase、Hive、ZooKeeper的安装目录添加到文件中,编辑内容如下。(3)配置环境变量编辑“~/.bashrc”文件,将Sqoop的安装路径添加到环境变量中,操作内容如下。exportSQOOP_HOME=/usr/local/sqoopPATH=$PATH:$SQOOP_HOME/bin修改完成后,按“Esc”键返回命令模式,通过输入“:wq!”保存修改并退出,随后执行“source~/.bashrc”命令,使配置文件立即生效,操作命令如下。[root@masterlocal]$source~/.bashrc(4)配置MySQL连接执行命令“cpmysql-connector-java-5.1.40-bin.jar/usr/local/sqoop/lib/”,将数据库连接需要的jar包添加到“/usr/local/sqoop/lib/”下,操作命令如下。[root@master1mysql-connector-java-5.1.40]#cpmysql-connector-java-5.1.40-bin.jar/usr/local/sqoop/lib/(5)测试Sqoop与MySQL之间的连接执行命令“servicemysqlstart”,启动MySQL服务,操作命令及结果如下。
[root@master1mysql-connector-java-5.1.40]#servicemysqlstartStartingMySQLSUCCESS!执行命令“sqooplist-databases-connectjdbc:mysql://localhost:3306--usernameroot-password123456”,测试Sqoop与MySQL之间的连接是否成功,如果可以看到MySQL数据库中的数据库列表,则表示Sqoop安装成功。若连接时提示SSL相关,可以增加useSSL=false参数,操作命令及结果如下。[root@master1bin]#./sqoop
list-databases--connectjdbc:mysql://localhost:3306/?useSSL=false--usernameroot--password12345623/03/0211:15:31INFOsqoop.Sqoop:RunningSqoopversion:1.4.723/03/0211:15:31WARNtool.BaseSqoopTool:Settingyourpasswordonthecommand-lineisinsecure.Considerusing-Pinstead.23/03/0211:15:31INFOmanager.MySQLManager:PreparingtouseaMySQLstreamingresultset.information_schemainfo_stationinformation_DBmyhivemysqlperformance_schemasys2.使用Sqoop完成MySQL和HDFS之间的数据互导(1)上传准备好的测试数据到MySQL中登录MySQL,操作命令及结果如下。在测试数据库test中创建表test1,用于存放本地测试数据,操作命令及结果如下。mysql>createdatabasetest\->charactersetutf8;QueryOK,1rowaffected(0.00sec)mysql>usetestDatabasechangedmysql>createtabletest1(->ipvarchar(100)notnull,->timevarchar(100)notnull,->urlvarchar(255)notnull);QueryOK,0rowsaffected(0.01sec)将本地的测试数据text.txt文件上传到test1表中,注意分隔符,此处分隔符是‘,’,以实际操作为准,操作命令及结果如下。mysql>loaddatalocalinfile'/opt/text.txt'intotabletest1fieldsterminatedby',';QueryOK,30rowsaffected,60warnings(0.00sec)Records:30Deleted:0Skipped:0Warnings:60上传完成后,查看test1表中的前10条数据,如图所示。(2)上传数据到HDFS中将test1中的数据上传到HDFS中,操作命令如下。[root@master1bin]#./sqoopimport--connectjdbc:mysql://localhost:3306/test?useSSL=false--usernameroot--password123456--tabletest1-m1执行完上述操作后,执行命令“hadoopdfs-text/user/root/test1/part-m-00000”,在HDFS中查看导入的数据,如图所示。(3)将HDFS数据导入到MySQL中在导出前需要先创建导出表的结构,如果导出的表在数据表中不存在,则系统会报错;若重复多次导出数据,则表中的数据会重复。准备数据表。在test数据库中创建表test2,可以直接复制test1表的结构,操作命令及结果如下。mysql>createtabletest2asselect*fromtest1where1=2;QueryOK,0rowsaffected(0.00sec)Records:0Duplicates:0Warnings:0使用Sqoop将HDFS中的数据导入到MySQL的test2中,操作命令如下。[root@master1bin]#sqoopexport--connectjdbc:mysql://master1:3306/test--usernameroot--password123456--tabletest2--export-dirhdfs:///user/root/test1/part-m-00000-m1在MySQL中,执行命令“select*fromtest2”查询数据,查看test2表中的数据,验证导入数据的正确性,查看结果如下。mysql>select*fromtest2......|63|2015/3/3017:38|/uc_server/avatar.php?uid=57232&size=middle||64|2015/3/3017:38|/uc_server/data/avatar/000/05/83/35_avatar_middle.jpg||60|2015/3/3017:38|/uc_server/data/avatar/000/01/54/22_avatar_middle.jpg|+----------------+-----------------+-------------------------------------------------------+30rowsinset(0.00sec)任务5.2
Pig的安装和使用任务实施1.Pig的安装和配置(1)安装所需的软件在master1中切换目录到pig安装包所在目录,执行命令“ll”查看目录,过程如图所示。执行命令“tar-zxvfpig-0.17.0.tar.gz-C/usr/local”,解压Pig安装包到指定目录中,操作命令如下。[root@master1opt]#tar-zxvf
pig-0.17.0.tar.gz-C/usr/local将解压文件重命名为pig,操作命令如下。[root@master1local]#mvpig-0.17.0pig若是普通用户,通过执行命令“chown-Rhadoop:hadooppig”,为pig目录修改权限,操作命令如下。[root@master1local]#chown-Rhadoop:hadooppig(2)编辑环境变量编辑“~/.bashrc”文件,将pig的安装路径添加到环境变量中,操作内容如下。exportPIG_HOME=/usr/local/pigPATH=$PATH:$PIG_HOME/bin修改完成后,按“Esc”键返回命令模式,通过输入“:wq!”保存修改并退出,随后执行“source~/.bashrc”命令,使配置文件立即生效,操作命令如下。[root@master1local]#source~/.bashrc(3)启动测试通过执行命令“pig-xlocal”进入本地模式,过程如图所示,以便访问本地文件系统测试或处理小规模数据集。通过执行命令“pig-xmapreduce”进入MapReduce模式,过程如图5-7所示,在MapReduce模式下,Pig可以访问整个Hadoop集群,处理大规模数据集。2.Pig的应用(1)计算多维度组合下的平均值假设有数据文件data1.txt(各数值之间是以“Tab”键分隔)。现在要求在第2、3、4列的所有组合中,最后两列的平均值分别是多少?[root@master1pig]#catdata1.txta1234.29.8a3053.52.1b799--a7992.66.2a1257.75.9a1231.40.2为了验证计算结果,在此先人工计算一下需求结果。首先,第2、3、4列有一个组合为(1,2,3),即第一行和最后一行数据。对于这个维度组合来说,最后两列的平均值分别为(4.2+1.4)/2=2.8(9.8+0.2)/2=5.0特别的,组合(7,9,9)有两行记录,即第3、4行,但是第3行数据的最后两列没有值,因此它不应该被用于平均值的计算,也就是说,在计算平均值时,第3行的数据是无效数据。所以(7,9,9)组合的最后两列的平均值为2.6和6.2。而对于第2、3、4列的其他维度组合来说,都分别只有一行数据,因此最后两列的平均值其实就是它们自身。现在使用Pig来进行计算,并且输出最终的结果。先进入本地调试模式(pig-xlocal),再依次输入Pig代码,操作命令及结果如下。grunt>A=LOAD'data1.txt'AS(col1:chararray,col2:int,col3:int,col4:int,col5:double,col6:double);grunt>B=GROUPABY(col2,col3,col4);grunt>C=FOREACHBGENERATEgroup,AVG(A.col5),AVG(A.col6);grunt>DUMPC;
((1,2,3),2.8,5.0)((1,2,5),7.7,5.9)((3,0,5),3.5,2.1)((7,9,9),2.6,6.2)由最终计算结果可以看出,人工计算结果和Pig计算结果完全一致。具体代码分析如下。①加载data1.txt文件,并指定每一列的数据类型分别为chararray(字符串)、int、int、int、double、double。同时,分别给每一列定义一个别名,分别为col1,col2,…,col6。这个别名在后面的数据处理中会用到,如果不指定别名,则在后面的处理中只能使用索引($0,$1…)来标示相应的列,这样可读性会变差。将数据加载之后保存到变量A中,A的数据结构如下。A:{col1:chararray,col2:
int,col3:
int,col4:
int,col5:
double,col6:
double}可见A是用大括号括起来的,是一个包。②按照A的第2、3、4列对A进行分组。Pig会找出第2、3、4列的所有组合,并按照升序进行排列,将它们与对应的包A整合起来,得到数据结构如下。B:{group:(col2:int,col3:int,col4:int),A:{col1:chararray,col2:int,col3:int,col4:int,col5:double,col6:double}}可见,A的第2、3、4列的组合被Pig赋予了一个别名(group),这很形象。同时,可以观察到,B的每一行其实就是由一个group和若干个A组成的。实际的数据如下。((1,2,3),{(a,1,2,3,4.2,9.8),(a,1,2,3,1.4,0.2)})((1,2,5),{(a,1,2,5,7.7,5.9)})((3,0,5),{(a,3,0,5,3.5,2.1)})((7,9,9),{(b,7,9,9,,),(a,7,9,9,2.6,6.2)})可见,组合(1,2,3)对应了两行数据,组合(7,9,9)也对应了两行数据。③计算每一种组合下的最后两列的平均值。根据得到的B的数据,可以把B想象为一行一行的数据(这些行不是对称的),FOREACH的作用是对B的每一行数据进行遍历,并进行计算。GENERATE可以理解为要生成什么样的数据,这里的group就是上一步操作中B的第一项数据(即Pig为A的第2、3、4列的组合赋予的别名),所以在数据集C的每一行中,第一项就是B中的group,类似于(1,2,3)的形式。而AVG(A.col5)的计算调用了Pig的一个求平均值的函数AVG,用于对A的名为col5的列(别名,col5就是倒数第二列)求平均值。在此操作中遍历的是B,在B的数据结构中,每一行数据中包含一个group,其对应的是若干个A,因此这里的A.col5指的是B的每一行中的A,而不是包含全部数据的A。例如,((1,2,3),{(a,1,2,3,4.2,9.8),(a,1,2,3,1.4,0.2)}),遍历到B的这一行时,要计算AVG(A.col5),Pig会找到(a,1,2,3,4.2,9.8)中的4.2及(a,1,2,3,1.4,0.2)中的1.4,将其加起来除以2,就得到了平均值。同理,可以清楚地知道AVG(A.col6)是怎样计算出来的。但有一点需要注意,对于(7,9,9)组,它对应的数据(b,7,9,9,,)中最后两列是无值的,这是因为数据文件对应位置上不是有效数字,而是两个“-”,Pig在加载数据的时候自动将其置为空,而计算平均值的时候,也不会把这一组数据考虑在内(相当于忽略这组数据的存在)。C的数据结构如下。C:{group:(col2:
int,col3:
int,col4:
int),double,double}④DUMPC就是将C中的数据输出到控制台上。如果要输出到文件,则需要使用以下语句。STOREC
INTO
'output';这样Pig就会在当前目录中新建一个output目录(该目录必须事先不存在),并把结果文件放到该目录中。统计数据行数在SQL语句中,统计表中数据的行数非常简单,使用以下语句即可。SELECT
COUNT(*)
FROM
table_name
WHERE
conditionPig中也有一个COUNT函数,假设要计算数据文件data1.txt的行数,可否进行如下操作呢?A=LOAD'data1.txt'USINGPigStorage('')AS(col1:chararray,col2:int,col3:int,col4:int,col5:double,col6:double);B=
COUNT(*);DUMPB;最终测试会报错。Pig手册中有信息如下。Note:Youcannotusethetupledesignator(*)withCOUNT;thatis,COUNT(*)willnotwork.而修改语句为B=
COUNT(A.col2);后,最终测试依然会报错。要统计A中含col2字段的数据有多少行,正确的做法是使用以下语句。A=LOAD'data1.txt'USINGPigStorage('')AS(col1:chararray,col2:int,col3:int,col4:int,col5:double,col6:double);B=
GROUP
A
ALL;C=FOREACHBGENERATE
COUNT(A.col2);DUMPC;(6)在这个例子中,统计COUNT(A.col2)和COUNT(A)的结果是一样的,但是如果col2列中含有空值,数据如下。[root@localhostpig]$
cat
test.txt
a1234.29.8a
053.52.1b799--a7992.66.2a1257.75.9a1231.40.2Pig程序的执行结果如下。A=LOAD'data1.txt'USINGPigStorage('')AS(col1:chararray,col2:int,col3:int,col4:int,col5:double,col6:double);B=
GROUP
A
ALL;C=FOREACHBGENERATE
COUNT(A.col2);DUMPC;(5)可见,结果为5行。这是因为LOAD数据的时候指定了col2的数据类型为int,而test.txt的第2行数据是空的,因此数据加载到A中以后,有一个字段是空的。grunt>DUMPA;(a,1,2,3,4.2,9.8)(a,,0,5,3.5,2.1)(b,7,9,9,,)(a,7,9,9,2.6,6.2)(a,1,2,5,7.7,5.9)(a,1,2,3,1.4,0.2)在使用COUNT的时候,null的字段将不会被计入在内,所以结果是5。(3)FLATTEN操作符关于FLATTEN操作符的作用,这里仍然采用前面的data1.txt数据文件来说明,如果计算多维度组合下的最后两列的平均值,则A=LOAD'data1.txt'USINGPigStorage('')AS(col1:chararray,col2:int,col3:int,col4:int,col5:double,col6:double);B=GROUPABY(col2,col3,col4);C=FOREACHBGENERATE
group,
AVG(A.col5),
AVG(A.col6);DUMPC;((1,2,3),2.8,5.0)((1,2,5),7.7,5.9)((3,0,5),3.5,2.1)((7,9,9),2.6,6.2)可见,在输出结果中,每一行的第一项是一个tuple(元组)。下面来试试看FLATTEN的作用。结果显示,被FLATTEN的group本来是一个元组,现在变为了扁平结构。按照Pig文档的说法,FLATTEN用于对元组和包进行“解嵌套”。有时,不“解嵌套”的数据结构是不利于观察的,输出这样的数据可能不利于外围程序的处理(例如,Pig将数据输出到磁盘中后,如果需要使用其他程序做后续处理,则对于一个元组而言,其输出的内容中是含括号的,这就在处理流程上多了一道去括号的工序),因此,FLATTEN提供了一个在某些情况下可以清楚、方便地分析数据的机会。(4)把数据当作“元组”来加载依然假设有data1.txt的数据,如果按照以下方式来加载数据。A=LOAD'data1.txt'USINGPigStorage('')AS(col1:chararray,col2:int,col3:int,col4:int,col5:double,col6:double);则得到的A的数据结构如下。DESCRIBEA;A:{col1:chararray,col2:int,col3:int,col4:int,col5:double,col6:double}如果把A当作一个元组来加载,则A=LOAD'data1.txt'USINGPigStorage('')AS(T:tuple(col1:chararray,col2:int,col3:int,col4:int,col5:double,col6:double));即想要得到以下数据结构:DESCRIBEA;A:{T:(col1:chararray,col2:int,col3:int,col4:int,col5:double,col6:double)}但是,上面的方法将得到一个空的A。grunt>DUMPA;()()()()()()这是因为数据文件data1.txt的结构不适用于加载为元组。如果有数据文件data2.txt:[root@localhostpig]$
cat
data2.txt:
(a,1,2,3,4.2,9.8)(a,3,0,5,3.5,2.1)(b,7,9,9,-,-)(a,7,9,9,2.6,6.2)(a,1,2,5,7.7,5.9)(a,1,2,3,1.4,0.2)则使用上面所说的加载方法进行加载后,其结果如下。可见,加载的数据的结构确实被定义为了元组。(5)在多维度组合下,计算某个维度组合中的不重复记录的条数以数据文件data3.txt为例,计算在第2、3、4列的所有维度组合下,最后一列不重复的记录分别有多少条?[root@localhostpig]$
cat
data3.txt
a1234.29.8100a3053.52.1200b799--300a7992.66.2300a1257.75.9200a1231.40.2500由数据文件可见,第2、3、4列有一个维度组合是(1,2,3),在这个维度下,最后一列有两种值——100和500,因此不重复的记录数为2。同理,可求得其他不重复记录的条数。Pig代码及输出结果如下。A=LOAD'data3.txt'USINGPigStorage('')AS(col1:chararray,col2:int,col3:int,col4:int,col5:double,col6:double,col7:int);B=GROUPABY(col2,col3,col4);C=FOREACHB{D=DISTINCTA.col7;GENERATEgroup,COUNT(D);};DUMPC;((1,2,3),2)((1,2,5),1)((3,0,5),1)((7,9,9),1)具体代码分析如下。①LOAD就是加载数据。②GROUP的作用和前面表述的一样。GROUP之后得到的数据如下。grunt>DUMPB;((1,2,3),{(a,1,2,3,4.2,9.8,100),(a,1,2,3,1.4,0.2,500)})((1,2,5),{(a,1,2,5,7.7,5.9,200)})((3,0,5),{(a,3,0,5,3.5,2.1,200)})((7,9,9),{(b,7,9,9,,,300),(a,7,9,9,2.6,6.2,300)})③DISTINCT用于将一个关系中重复的元组移除,FOREACH用于对B的每一行进行遍历,其中B的每一行中含有一个包,每一个包中含有若干元组A,因此,FOREACH后面的大括号中的操作其实是对所谓的“内部包”的操作,这里指定了对A的col7列进行去重,去重的结果被命名为D,并对D进行计数(COUNT),最终得到了想要的结果。④DUMP表示使结果数据输出显示。Pig中使用Shell进行辅助数据处理Pig中可以嵌套使用Shell进行辅助处理,假设在某一步Pig处理后,得到了类似于以下data4.txt中的数据。[root@localhostpig]$
cat
data4.txt
1598
=734
863262
06=65现在的问题是,如何将数据中第4列中的“=”全部替换为9999。具体实现代码如下。A=LOAD'data4.txt'USINGPigStorage('')AS(col1:int,col2:int,col3:int,col4:chararray,col5:int);B=STREAMATHROUGH`awk'{if($4=="=")print$1""$2""$3"9999"$5;elseprint$0;}'`;DUMPB;(1,5,98,9999,7)(34,8,6,3,2)(62,0,6,9999,65)具体代码分析如下。①LOAD表示加载数据。②通过“STREAM…THROUGH…”的方式,可以调用一个Shell语句,使用该Shell语句对A的每一行数据进行处理。此处的Shell逻辑如下:当某一行数据的第4列为“=”时,将其替换为“9999”;否则按照原样输出。③DUMP表示输出B。(7)向Pig脚本中传入参数假设Pig脚本输出的文件是通过外部参数指定的,则此参数不能写死,需要传入。在Pig中,传入参数的语句如下。STOREA
INTO
'$output_dir';其中,“output_dir”就是传入的参数。在调用Pig的Shell脚本时,可以使用以下语句传入参数。pig-paramoutput_dir="/home/my_output_dir/"
my_pig_script.pig这里传入的参数“output_dir”的值为“/home/my_output_dir/”。任务5.3
Flume的安装和使用任务实施1.Flume的安装与配置(1)安装所需的软件在Flume安装包目录中,执行命令“tar-zxvf/opt/apache-flume-1.7.0-bin.tar.gz-C/usr/local/”,解压Flume安装包到指定目录中,操作命令如下。[root@master1opt]#tar-zxvf/opt/apache-flume-1.7.0-bin.tar.gz-C/usr/local/执行命令“mvapache-flume-1.7.0-bin/flume”,将解压文件重命名为Flume,操作命令如下。[root@master1local]#mvapache-flume-1.7.0-binflume若是普通用户,通过执行命令“chown-Rhadoop:hadoopflume/”修改Flume目录的权限,操作命令如下。[root@master1conf]#mvflume-env.sh.templateflume-env.sh
(2)编辑环境变量编辑“~/.bashrc”文件,将HBase的安装路径添加到环境变量中,操作内容如下。exportFLUME_HOME=/usr/local/flumePATH=$PATH:$SQOOP_HOME/bin:$PIG_HOME/bin:$FLUME_HOME/bin修改完成后,按“Esc”键返回命令模式,通过输入“:wq!”保存修改并退出,随后执行“source~/.bashrc”命令,使配置文件立即生效,操作命令如下。[root@master1local]#source~/.bashrc重命名配置文件“flume-env.sh.template”为“flume-env.sh”,编辑flume-env.sh配置文件,将配置项修改内容如下。#Enviromentvariablescanbesethere.exportJAVA_HOME=/usr/lib/jdk1.8.0配置完成后,进入Flume的bin目录,执行命令“./flume-ngversion”,查看Flume是否安装成功,操作命令及结果如下。[root@master1bin]#./flume-ngversionError:Couldnotfindorloadmainclassorg.apache.flume.tools.GetJavaPropertyFlume1.7.0Sourcecoderepository:https://git-wip-/repos/asf/flume.gitRevision:511d868555dd4d16e6ce4fedc72c2d1454546707CompiledbybessbdonWedOct1220:51:10CEST2016Fromsourcewithchecksum0d21b3ffdc55a07e1d08875872c00523启动Flume后会提示“org.apache.flume.tools.GetJavaProperty”错误,可以通过修改“Hbase-env.sh”文件来解决这个错误。首先,使用编辑器打开hbase-env.sh文件,操作命令如下。[root@master1conf]#vihbase-env.sh其次,编辑hbase-env.sh文件,将hbase-env.sh文件中的“HBASE_CLASSPATH=/usr/local/hbase/conf”一行注释掉,修改内容如下。#exportHBASE_CLASSPATH=/usr/local/hadoop/etc/hadoop
重新启动Flume,操作命令及结果如下。[root@master1bin]#flume-ngversionFlume1.7.0Sourcecoderepository:https://git-wip-/repos/asf/flume.gitRevision:511d868555dd4d16e6ce4fedc72c2d1454546707CompiledbybessbdonWedOct1220:51:10CEST2016Fromsourcewithchecksum0d21b3ffdc55a07e1d08875872c005232.使用Flume完成日志数据上传HDFS操作执行命令“start-all.sh”启动Hadoop集群,在选定目录中创建一个文件,例如在/simple目录中执行命令“toucha2.conf”,创建a2.conf文件,需要注意创建“a2.conf”文件的目录需要与配置文件中的“mand”配置项的值一致,编辑配置文件如下。a2.sources=r1a2.channels=c1a2.sinks=k1a2.sources.r1.type=execmand=tail-F/simple/data.txta2.channels.c1.type=memorya2.channels.c1.capacity=1000a2.channels.c1.transactionCapacity=100a2.sinks.k1.type=hdfsa2.sinks.k1.hdfs.path=hdfs://:9000/flume/date_hdfs.txta2.sinks.k1.hdfs.filePrefix=events-a2.sinks.k1.hdfs.fileType=DataStreama2.sources.r1.channels=c1a2.sinks.k1.channel=c1进入Flume安装目录中的bin目录中,使用“a2.conf”配置文件启动Flume,操作命令如下。[root@master1bin]#./flume-ngagent-na2-f/simple/a2.conf-c../conf/-Dflume.root.logger=INFO,console任意创建测试数据文件data2.txt,模拟日志的生成,操作命令如下。[root@master1simple]#catdata2.txt>>data.txt通过执行HDFS的命令,查看HDFS中生成的文件内容,操作命令及结果如右。[root@master1simple]#hadoopfs-cat/flume/date_hdfs.txt/*(a,1,2,3,4.2,9.8)(a,3,0,5,3.5,2.1)(b,7,9,9,-,-)(a,7,9,9,2.6,6.2)(a,1,2,5,7.7,5.9)(a,1,2,3,1.4,0.2)(a,1,2,3,4.2,9.8)(a,3,0,5,3.5,2.1) (b,7,9,9,-,-)(a,7,9,9,2.6,6.2)(a,1,2,5,7.7,5.9)(a,1,2,3,1.4,0.2)任务5.4
Kafka的安装和使用任务实施1.安装与配置kafka(1)运行Docker容器,并分别开启master1、slave1和slave2的Zookeeper服务。①在master1节点上运行“jps”命令查看进程,操作命令及结果如下。[root@master1bin]#jps135QuorumPeerMain169Jps②在slave1节点上运行“jps”命令查看进程,操作命令及结果如下。[root@slave1bin]#jps145Jps115QuorumPeerMain③slave2节点上运行“jps”命令查看进程,操作命令及结果如下。[root@slave2bin]#jps104QuorumPeerMain142Jps(2)
解压Kafka安装包,切换到解压目录重命名Kafka文件,操作命令如下。[root@master1opt]#tar-zxvf/opt/kafka_2.11-.tgz-C/usr/local/[root@master1local]#mvkafka_2.11-/kafka(3)
编辑“~/.bashrc”文件,将Kafka的安装路径添加到环境变量中,操作内容如下。exportKAFKA_HOME=/usr/local/kafkaPATH=$PATH:$KAFKA_HOME/bin修改完成后,按“Esc”键返回命令模式,通过输入“:wq!”保存修改并退出,随后执行“source~/.bashrc”命令,使配置文件立即生效,操作命令如下。[root@master1local]#source~/.bashrc(4)
进入kafka/config目录下,修改perties文件,操作命令和配置项内容如下。[root@master1config]#viperties#修改如下两条参数log.dirs=/usr/local/kafka/logszookeeper.connect=master1:2181,slave1:2181,slave2:2181#在文件最后增加两行=master1delete.topic.enable=true其中“/usr/local/kafka/logs”目录需要手动创建,切换目录到kafka安装目录中,创建logs目录,操作命令如下。[root@master1kafka]#mkdirlogs(5)将配置好的kafka目录分发到集群中的slave1和slave2节点,操作命令如下。[root@master1kafka]#scp-r/usr/local/kafkaslave1:/usr/local/[root@master1kafka]#scp-r/usr/local/kafkaslave2:/usr/local/在slave1中修改perties文件,内容修改如下。broker.id=1=slave1在slave2中修改perties文件,内容修改如下。broker.id=2=slave2在master1、slave1和slave2节点上,分别切换到“kafka/bin”目录下,启动kafka(需要在zookeeper启动的情况下),并分别执行“jps”命令查看进程。在master1节点操作命令及结果如下。[root@master1bin]#./kafka-server-start.sh-daemon../config/perties[root@master1bin]#jps1632Kafka135QuorumPeerMain1694Jps在slave1节点操作命令及结果如下。[root@slave1bin]#./kafka-server-start.sh-daemon../config/perties[root@slave1bin]#jps115QuorumPeerMain419Kafka477Jps在slave2节点操作命令及结果如下。[root@slave2bin]#./kafka-server-start.sh-daemon../config/perties[root@slave2bin]#jps104QuorumPeerMain490Jps431Kafka2.Kafka运行测试(1)在master1节点创建topic,并在集群中查看已创建的topic,操作命令及结果如下。[root@master1bin]#./kafka-topics.sh--create--zookeepermaster1:2181,slave1:2181,slave2:2181--replication-factor3--partitions3--topictestCreatedtopic"test".
[root@master1bin]#./kafka-topics.sh--list--zookeepermaster1:2181,slave1:2181,slave2:2181test(2)在master1上启动“producer”并测试,操作命令及结果如下。[root@master1bin]#./kafka-console-producer.sh--broker-listmaster1:9092,slave1:9092,slave2:9092--topictest>book>test>
(3)在Slave节点(在slave1或slave2上)启动consumer,consumer会自动打印(2)中test主题输入的内容,操作命令及结果如下。[root@slave1bin]./kafka-console-consumer.sh--bootstrap-servermaster1:9092,slave1:9092,slave2:9092--from-beginning--topictest[root@slave1bin]#./kafka-console-consumer.sh--bootstrap-servermaster1:9092,slave1:9092,slave2:9092--from-beginning--topictestbooktest任务5.5
Flink的安装和使用任务实施Flink的安装与配置,主要过程如下。(1)解压Flink安装包,并重命名文件,操作命令如下。[root@master1opt]#tar-zxvf
flink-1.10.0-bin-scala_2.11.tgz-C/usr/local[root@master1local]#mvflink-1.10.0flink(2)配置环境变量,编辑~/.bashrc配置文件,添加内容如下。exportHADOOP_CLASSPATH=`hadoopclasspath`exportFLINK_HOME=/usr/local/flinkexportHADOOP_CONF_DIR=/usr/local/hadoop/etc/hadoopPATH=$PATH:$FLINK_HOME/bin修改完成后,按“Esc”键返回命令模式,通过输入“:wq!”保存修改并退出,随后执行“source~/.bashrc”命令,使配置文件立即生效,操作命令如下。[root@master1local]$source~/.bashrc(3)配置yarn-site.xml文件①yarn-site.xml配置文件如下。(内容过长,文本放在ppt展示页面下方)<configuration><!--SitespecificYARNconfigurationproperties--><property><name>yarn.n
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 高空作业车租赁合同范文
- 2024年“健康中国心”慢病知识竞赛试题
- 财务代理合同模板经典版样书
- 公司股份合作协议书详细版范文
- 湖北省曾都区2024年七年级上学期数学期中考试试题【附答案】
- 中考物理复习专项综合题组1课件
- 工程项目竣工交接单模板
- 2018年东北三省三校第三次高考模拟考试文科数学试卷扫描版含答案
- 工程线(营业线)施工安全考试试题
- 工程塑料管道粘接、焊接工艺
- 期中测试卷-2024-2025学年统编版语文四年级上册
- 公司解散清算的法律意见书、债权处理法律意见书
- 修山合同模板
- 立冬节气介绍立冬传统习俗气象物候起居养生课件
- 商务星球版八年级地理上册地理总复习提纲
- 2024年全球智能手持影像设备市场发展白皮书
- 2024年教育质量检测反馈问题及整改方案
- 2024中小学学校疫苗接种工作应急预案
- 开展与群众恳谈对话、为群众排忧解难实施方案
- 2024年全国星级饭店职业技能竞赛(前厅部分)备赛试题库(含答案)
- 十六届山东省职业院校技能大赛中职组“养老照护”赛项评分标准
评论
0/150
提交评论