李霄揚(yáng) 朱恒
關(guān)鍵詞:Hadopp;海量數(shù)據(jù);離線業(yè)務(wù)分析
中圖分類號(hào):TP311 文獻(xiàn)標(biāo)識(shí)碼:A
文章編號(hào):1009-3044(2023)10-0075-03
0 引言
如今,計(jì)算機(jī)和信息技術(shù)發(fā)展迅猛,并且得到了普遍應(yīng)用,各大行業(yè)的數(shù)據(jù)量都在以爆炸性的速度增長(zhǎng),全球已經(jīng)進(jìn)入了“大數(shù)據(jù)”時(shí)代[1]。在大數(shù)據(jù)時(shí)代下,企業(yè)可以從龐大繁雜的數(shù)據(jù)背后挖掘和分析用戶的行為習(xí)慣和愛(ài)好,其創(chuàng)造的價(jià)值和人們的生活息息相關(guān)。在實(shí)際的商業(yè)案例,信用卡公司VISA需要處理兩年中730億單的交易,由于采用了Hadoop技術(shù),在以往技術(shù)大約需要一個(gè)月時(shí)間,而現(xiàn)在僅僅花了13 分鐘的時(shí)間[2]。顯然,企業(yè)依舊按照傳統(tǒng)的方法進(jìn)行處理傳統(tǒng)的數(shù)據(jù)處理方式已經(jīng)無(wú)法滿足和解決動(dòng)輒數(shù)百TB級(jí)甚至是PB級(jí)大數(shù)據(jù)的問(wèn)題,尤其是在數(shù)據(jù)的存儲(chǔ)和計(jì)算方面。當(dāng)今時(shí)代,大數(shù)據(jù)應(yīng)用系統(tǒng)無(wú)處不在,對(duì)于不同的應(yīng)用場(chǎng)景,各大系統(tǒng)需要進(jìn)行具體問(wèn)題具體分析,針對(duì)自己所處的場(chǎng)景、所想要的結(jié)果去采用不同的數(shù)據(jù)處理技術(shù)和不同的大數(shù)據(jù)框架。
1 基于Hadoopde 大數(shù)據(jù)分析系統(tǒng)的通用架構(gòu)
數(shù)據(jù)已經(jīng)成為重要的無(wú)形資產(chǎn)[3]。本研究的主要目標(biāo)是基于Hadoop、Hive、Sqoop技術(shù),總結(jié)出大數(shù)據(jù)應(yīng)用系統(tǒng)的一般架構(gòu)。Hadoop是apache旗下的一套開(kāi)源軟件平臺(tái),其功能主要有:利用服務(wù)器集群,根據(jù)用戶的自定義業(yè)務(wù)邏輯,對(duì)海量數(shù)據(jù)進(jìn)行分布式處理。Hive則是基于Hadoop的一個(gè)數(shù)據(jù)倉(cāng)庫(kù)工具,它能將結(jié)構(gòu)化的數(shù)據(jù)文件映射為一張數(shù)據(jù)庫(kù)表。Sqoop 是SQL-to-Hadoop的縮寫,運(yùn)行在HDFS之上,主要用于實(shí)現(xiàn)結(jié)構(gòu)型數(shù)據(jù)和Hadoop之間進(jìn)行數(shù)據(jù)遷移的工具[4]。這三大套件的基本架構(gòu)如圖1所示。
2 基于Hadoopde 大數(shù)據(jù)分析系統(tǒng)的環(huán)境配置
2.1 Hadoop 基礎(chǔ)環(huán)境的搭建
Hadoop采用在多節(jié)點(diǎn)上分布式方式運(yùn)行,具體安裝步驟如下:
1)創(chuàng)建Hadoop用戶
$ sudo useradd –m Hadoop –s /bin/bash #添加hadoop用戶
$ sudo passwd hadoop #設(shè)置hadoop密碼
說(shuō)明:sudo是一種權(quán)限管理機(jī)制,通過(guò)該命令,普通用戶可以被管理員賦予一些只有root權(quán)限才能執(zhí)行的操作的權(quán)限。
2)更新apt
$ sudo apt-get update 說(shuō)明:此操作的執(zhí)行目的是便于后期軟件的安裝。如果沒(méi)有更新apt,后期可能會(huì)有一些軟件安裝不了。
3)安裝SSH、配置SSH無(wú)密碼登錄
$ sudo apt-get install openssh-server # 安裝SSH server
$ cd ~/.ssh/
$ ssh-keygen -t rsa # 會(huì)有提示,都按回車就可以
$ cat ./id_rsa.pub >> ./authorized_keys # 將id_rsa.pub加入授權(quán)
說(shuō)明:在第二行命令中,如果沒(méi)有ssh目錄,需要先執(zhí)行命令:ssh localhost。
4)Hadoop分布式配置
①修改配置文件core-site.xml,新增
修改hdfs-site.xml,新增dfs.namenode.name.dir和dfs.datanode.data.dir屬性;
②NameNode格式化:
$ ./bin/hdfs namenode -format
③開(kāi)啟NameNode和DataNode守護(hù)進(jìn)程;
④驗(yàn)證是否配置成功。
驗(yàn)證命令如下:
jps
說(shuō)明:?jiǎn)?dòng)成功則會(huì)列出如下進(jìn)程:“NameNode”“DataNode”“ResourceManage”“SecondaryNameNode”。啟動(dòng)成功后,可以通過(guò)在瀏覽器打開(kāi)http://localhost:50070訪問(wèn)Web界面查看相關(guān)信息,在該界面中,同樣可以查看HDFS中的文件,訪問(wèn)成功如圖1所示。
2.2 Hive 的安裝
1)下載并解壓hive源程序
$ sudo tar -zxvf ./apache-hive-1.2.1-bin.tar.gz -C /usr/local # 解壓到目錄/usr/local中
$ cd /usr/local/
$ sudo mv apache-hive-1.2.1-bin hive # 將文件夾名改成hive
$ sudo chown -R hadoop:hadoop hive # 修改文件權(quán)限
2)配置環(huán)境變量
在.bashrc文件中添加如下內(nèi)容:
export HIVE_HOME=/usr/local/hive
source ~/.bashrc #保存退出,使配置生效
3)修改hive-site.xml文件
$ cd /usr/local/hive/conf #打開(kāi)hive-site.xml文件的位置
$ mv hive-default.xml.template hive-default.xml # 重命名文件名
$ vim hive-site.xml #利用vim 編輯器新建一個(gè)hive-site.xml配置文件
4)配置MySQL允許hive接入
用戶進(jìn)入MySQL命令提示符下,進(jìn)行如下操作:mysql> grant all on *.* to hive@localhost identified by 'hive';
mysql> flush privileges;
說(shuō)明:第一步是賦予權(quán)限的操作,即hive可以享有操作數(shù)據(jù)庫(kù)中所有表的權(quán)限,identified by‘hive則是配置hive的連接密碼;第二步的操作則是由于前面賦予權(quán)限的操作,這里需要刷新權(quán)限表。
2.3 Sqoop 的安裝
由于這里很多操作,例如解壓安裝等操作與前面類似,這里不再多作說(shuō)明。
1)下載并解壓Sqoop
$ sudo tar -zxvf sqoop-1.4.6.bin__hadoop-2.0.4-
alpha.tar.gz -C /usr/local
$ sudo chown -R hadoop:hadoop sqoop #修改文件夾屬主
2)修改配置文件sqoop-env.sh
$ cd sqoop/conf/
$ cat sqoop-env-template.sh >> sqoop-env.sh #復(fù)制文件
$ vim sqoop-env.sh #編輯該腳本文件,添加相關(guān)內(nèi)容
編輯內(nèi)容如下:
export HADOOP_COMMON_HOME=/usr/local/ha?doop
export HADOOP_MAPRED_HOME=/usr/local/ha?doop
export HBASE_HOME=/usr/local/hbase
export HIVE_HOME=/usr/local/hive
3)配置環(huán)境變量
方法與上述Hive的環(huán)境變量配置相同,同樣是在.bashrc的配置文件中添加Sqoop的安裝路徑,然后保存退出使其生效即可。
4)將MySQL驅(qū)動(dòng)包拷貝到$SQOOP_HOME/lib
5)測(cè)試與MySQL的連接
通過(guò)sqoop list-databases,并連接MySQL的端口,輸入MySQL 的登錄信息查看MySQL 中的數(shù)據(jù)庫(kù)列表。這里是在SecureCRT中進(jìn)行的測(cè)試,具體命令及測(cè)試結(jié)果如圖3所示。
3 離線數(shù)據(jù)分析應(yīng)用:網(wǎng)站用戶行為分析
“網(wǎng)站用戶行為分析”指通過(guò)網(wǎng)站中用戶的一些基本信息以及用戶的一些操作行為,例如用戶對(duì)某商品是點(diǎn)擊了還是收藏、加入購(gòu)物車或是購(gòu)買,用戶什么時(shí)間購(gòu)買了什么商品哪類商品等。通過(guò)以上各種行為以及個(gè)人基本信息,可以統(tǒng)計(jì)分析出用戶的主要消費(fèi)行為是什么,哪些類商品比較熱銷、用戶主要是哪類人群、哪個(gè)月份銷售量大等對(duì)網(wǎng)站運(yùn)營(yíng)很重要的信息。本案例需要通過(guò)給定的數(shù)據(jù)集,對(duì)該數(shù)據(jù)集進(jìn)行一些必要的操作,統(tǒng)計(jì)分析出對(duì)該網(wǎng)站運(yùn)營(yíng)有用的信息。其基本架構(gòu)如圖4所示:
其算法流程如圖5所示:
以用戶消費(fèi)行為為例,基于R語(yǔ)言實(shí)現(xiàn)數(shù)據(jù)分析可視化:
library(ggplot2)
ggplot(user_action,aes(as.numeric(behavior_type)))+geom_histogram()
說(shuō)明:上述命令中,第一行命令中,ggplot2表示一種繪圖包,如果要用該繪圖包,則要利用library將其導(dǎo)入到庫(kù)中。第二行命令表示開(kāi)始利用ggplot進(jìn)行繪制。在繪制時(shí),利用“+”對(duì)圖層進(jìn)行疊加,可見(jiàn)上述命令中創(chuàng)建了兩個(gè)圖層。在第一個(gè)圖層中,包含了兩個(gè)參數(shù):數(shù)據(jù)和變量名稱映射。上述的數(shù)據(jù)為user_ac?tion,變量名稱則需要被包含aes()函數(shù)里。上述命令中映射出behavior_type中各個(gè)值的總量。第二個(gè)圖層中,表示用直方圖進(jìn)行繪制??傻玫饺鐖D6所示的分析結(jié)果。
4 結(jié)束語(yǔ)
大數(shù)據(jù)的核心價(jià)值是從龐大的數(shù)據(jù)背后挖掘和分析用戶的行為和習(xí)慣,根據(jù)得到的數(shù)據(jù)并對(duì)這些數(shù)據(jù)進(jìn)行相關(guān)的分析,從而可以對(duì)用戶進(jìn)行相關(guān)推薦[5]。通過(guò)用戶行為數(shù)據(jù)進(jìn)行分析得到的結(jié)果為用戶推薦相關(guān)產(chǎn)品的做法已經(jīng)逐漸普遍化,本文中的系統(tǒng)架構(gòu)可以為類似的離線數(shù)據(jù)分析系統(tǒng)提供范例和參考,從而進(jìn)一步地改進(jìn)并提升數(shù)據(jù)分析的工作質(zhì)量。