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