HADOOP安裝手冊及實驗手冊 -...

Click here to load reader

Transcript of HADOOP安裝手冊及實驗手冊 -...

HADOOP安裝手冊及實驗手冊

深圳國泰安技術股份有限公司

目錄

第一部分 Hadoop安裝手冊

第1章 安装VMWare Workstation 115第2章 VMware 11安装CentOS 6112.1 CentOS系统安装112.2 安装中的关键问题142.3 克隆Hadoop Slave192.4 安装传输软件21第3章 CentOS 6安装Hadoop253.1 启动两台虚拟客户机253.2 Linux系统配置263.2.1 拷贝软件包和数据包272.2.2 配置时钟同步(需要联网)273.2.3 配置主机名283.2.4 使用setup命令配置网环境293.2.5 关闭防火墙323.2.6 配置host列表323.2.7 安装JDK333.2.8 免密码登录配置343.3 Hadoop部署363.3.1 Hadoop安装包解压363.3.2 配置环境变量hadoop-env.sh363.3.3 配置环境变量yarn-env.sh363.3.4 配置核心组件core-site.xml373.3.5 配置文件系统hdfs-site.xml373.3.6 配置文件系统yarn-site.xml383.3.7 配置计算框架mapred-site.xml383.3.8 配置从节点文件slaves393.3.9 复制到从节点393.4 启动Hadoop集群393.4.1 配置Hadoop启动的系统环境变量393.4.2 创建数据目录403.4.3 启动Hadoop集群40第4章 安装部署Hive454.1 解压并安装Hive454.2 安装配置MySQL454.3 配置Hive464.4 启动并验证Hive安装47第5章 安装部署HBase495.1 解压并安装HBase495.2 配置HBase495.2.1 修改环境变量hbase-env.sh495.2.2 修改配置文件hbase-site.xml505.2.3 设置regionservers505.2.4 设置环境变量505.3 启动并验证HBase51第6章 安装部署Mahout536.1 解压并安装Mahout536.2 启动并验证Mahout53第7章 安装部署Sqoop567.1 解压并安装Sqoop567.2 配置Sqoop567.2.1 配置MySQL连接器567.2.2 配置环境变量577.3 启动并验证Sqoop57一、数据准备591、查看数据592、数据扩展603、数据过滤604、上传数据60二、基于Hive构建日志数据的数据仓库601、基本操作602、创建分区表(按照年、月、小时分区)613、查询结果62三、实现数据分析需求一:条数统计62四、实现数据分析需求二:关键词分析62五、实现数据分析需求三:UID分析63六、实现数据分析需求四:用户行为分析63七、实现数据分析需求五:实时数据64八、使用Sqoop将数据导入MySQL65九、HBase Shell操作命令实验66十、使用Sqoop将数据导入HBase67十一、HBase Java API访问统计数据671.操作要求672.数据准备683.数据导入68十二、Mahout聚类操作实验681.数据描述682.准备数据693.运行聚类分析70

第一部分

安裝手冊

第1章

安裝VMWare 11

主要內容

· 安裝VMWare Workstation 11

第1章 安裝VMWare Workstation 11

(1)在套裝軟體中找到“VMware-workstation-full-11.1.0.58002.1428919414”,如下所示:

(2)點擊“VMware-workstation-full-11.1.0.58002.1428919414.exe”安裝

(3)等待安裝軟體檢測和解壓以後,出現如下介面,直接按一下“下一步”即可。

(4)選擇“我接受許可……”選項,直接“下一步”

(5)典型安裝和自訂安裝,可根據自己的情況酌情選擇。這裡我們選擇“自訂安裝”。

(6)選擇自訂以後,根據自己的情況選擇自己需要的功能。這裡我們選擇全部。

(7)我們可以更改軟體的安裝路徑,埠預設即可。

(8)出現如下圖的選擇框,一般不建議勾選。

(9)出現下圖的提示選擇默認即可。

(10)按一下“下一步”,即可安裝。

(11)點擊“繼續”即可。

(12)上一步完成後,輸入註冊碼:

(13)點擊輸入後,出現:

點擊完成,VMware安裝過程結束。

第2章

VMware 11安裝CentOS 6

主要內容

· CentOS系統安裝

· 安裝中的關鍵問題

· 克隆Hadoop Slave

· 安裝SSH Secure Shell Client傳輸軟體

第2章 VMware 11安裝CentOS 62.1 CentOS系統安裝

(1)打開“VMware Worksation 11”,點擊“文件” -> “新建虛擬機器”。

(2)選擇“典型(推薦)(T)”選項,點擊“下一步”。

(3)選擇“安裝程式光碟映射檔(iso)(M)”,選擇指定的CentOS系統的.iso文件,點擊“下一步”。

(4)填寫下面的資訊,點擊“下一步”:

全名:hadoop用戶名:hadoop密碼:hadoop確認:hadoop

(5)虛擬機器名稱:HadoopMaster,選擇安裝位置,點擊“下一步”。

(6)指定磁片容量大小,預設為20.0,要調大該值,設置為30.0,點擊“下一步”。

(7)使用默認,點擊“下一步”。

(8)正常情況下,安裝CentOS 6進入下面的介面:

(9)直接等待安裝完成,系統自動重啟。

(10)輸入密碼“hadoop”登錄進系統

至此,CentOS系統安裝完畢。

2.2 安裝中的關鍵問題

如果出現下面的介面,說明BIOS中沒有打開VT-x功能,所以就不能用VT-x進行加速。

BIOS開啟VT指南

一、進入BIOS

參考以下按鍵,開機時按住對應的鍵進入BIOS:

組裝機以主機板分,華碩按F8、Intel按F12,其他品牌按ESC、F11或F12;

筆記本以品牌分,聯想ThinkPad系列按F1,其他品牌按F2;

品牌桌上型電腦按品牌分, Dell按ESC,其他按F12;

如果仍然不能進入BIOS,找找電腦(主機板)說明書或者參考BIOS設置怎麼進入圖解教程。

二、開啟VT

1、Phoenix BIOS機型

(1)進入BIOS,選擇Configuration選項,選擇Intel Virtual Technology並回車。注意:若無VT選項或不可更改,則表示你的電腦不支持VT技術。

(2)將游標移動至Enabled處,並回車確定。

(3)此時該選項將變為Enabled,最後按F10熱鍵保存並退出即可開啟VT功能。

2、Insyde BIOS機型

(1)進入BIOS,選擇Configuration選項,選擇Intel Virtual Technology並回車。

(2)將游標移動至Enabled處,並回車確定。

(3)此時該選項將變為Enabled,最後按F10熱鍵保存並退出即可開啟VT功能。

如果修改該BIOS選項之後,仍然出現提示VT-x沒有打開的情況,需要重啟電腦重試。如果仍然不可以,請使用下面的方式驗證電腦的硬體設定。

三、測試電腦虛擬化功能

運行SecurAble軟體,有四種情況。

(1)CPU和BIOS都不支持

右邊顯示紅色的NO。

(2)CPU不支持,BIOS支持

右邊顯示紅色的Locked OFF

(3)CPU和BIOS都支持

右邊顯示綠色的Locked ON/ z

(4)其他顯示

右邊還會有顯示綠色Yes的情況

第(3)和(4)是肯定支持VT的。

SecurAble就是一款測試電腦能否支援Window7的XP相容模式的免費軟體,另外SecurAble還可以測試你的機器硬體是否支援Hyper-V和KVM,要運行Hyper-V和KVM,物理主機的CPU必須支援虛擬化,而且主機是64位元的,同時BIOS要開啟硬體級別的資料執行保護(Hardward D.E.P),這些資訊通過SecurAble就可以找到答案。

2.3 克隆Hadoop Slave

(1)點擊下圖所示的“克隆”選項

(2)點擊“下一步”,看到下面的介面。

(3)使用預設選項,點擊“下一步”,選擇“創建完整克隆”,點擊“下一步”,如下圖所示:

(4)將虛擬機器重命名為HadoopSlave,選擇一個存儲位置(佔用空間10GB左右),點擊完成。

(5)點擊“關閉”。切換到虛擬機器管理介面,發現“HadoopSlave”虛擬機器就在左側的列表欄中。

2.4 安裝傳輸軟體

在套裝軟體中找到安裝檔:“SSHSecureShellClient.zip”,該檔用於windows系統與Linux系統之間進行檔案傳輸。

(1)安裝SSH Secure Shell Client

在本機windows系統的任意位置,解壓並安裝“SSH Secure Shell Client”。只要一直點擊“NEXT”即可安裝完成,在windows桌面會看到如下圖的快捷方式。

(2)測試“上傳檔”功能

點擊快捷方式“SSH Secure File Transfer Client”,會出現如下圖彈窗。

(3)點擊“Quick Conncet”,彈出連接對話方塊。

(4)輸入已經安裝的CentOS的主機名稱和用戶名

(5)假設安裝的CentOS虛擬機器的IP地址是“192.168.220.136”,用戶名是hadoop,點擊“Connect”,彈出輸入密碼對話方塊。

(6)輸入密碼“hadoop”,點擊“OK”,會看到下面的聖誕框,表示連接成功。

上圖中左側是windows本機目錄,右側是Linux目錄,拖拽檔即可實現複製。

第3章

CentOS安裝Hadoop

主要內容

· 啟動兩台虛擬客戶機

· Linux系統組態

· Hadoop配置部

· 啟動Hadoop集群

第3章 CentOS 6安裝Hadoop3.1 啟動兩台虛擬客戶機

打開VMware Workstation 11

打開已經安裝好的虛擬機器:HadoopMaster和HadoopSlave,出現異常,選擇“否”進入系統。

如果之前沒有打開過虛擬機器,請使用“檔”->“打開”選項,選擇之前的虛擬機器安裝包,打開“.vmdk”文件。

3.2 Linux系統組態

用工具“SecureCRT”連接到HadoopMaster、HadoopSlave節點,以下操作步驟需要在HadoopMaster和HadoopSlave節點上分別完整操作,均使用root用戶,從當前用戶切換到root用戶的命令如下:

su root

輸入密碼:hadoop

本節所有的命令操作都在終端環境,打開終端的過程如下圖的Terminal功能表:

終端打開後如下圖中命令列視窗所示。

3.2.1 拷貝套裝軟體和資料包

將“GTA Hadoop”下的software和data整體拖拽到HadoopMaster節點的桌面上,並且在終端中執行下麵的移動檔命令:

mv /home/hadoop/Desktop/software /home/hadoop

mv /home/hadoop/Desktop/data /home/hadoop

2.2.2 配置時鐘同步(需要聯網)

新裝的伺服器可能設置了錯誤的時區,需要調整時區並調整時間。如下是使用NTP來從一個時間伺服器同步。

(1)配置自動時間同步

把當前時區調整為上海,+8區,想改其他時區也可以去看看/usr/share/zoneinfo目錄:

cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime

加入定時計畫任務,每隔10分鐘同步一下時鐘

crontab -e

鍵入下面的一行代碼:

輸入i,進入插入模式(星號之間和前後都有空格)

指定每小時的第01分鐘執行一次同步

01 * * * * /usr/sbin/ntpdate us.pool.ntp.org

這樣,我們就可以來解決在CentOS系統中時間不準確的問題了。

(2)手動同步時間

用ntpdate同步標準時間:

ntpdate us.pool.ntp.org

該薦同時需要在HadoopSlave節點配置。

3.2.3 配置主機名稱

1、HadoopMaster節點

使用gedit編輯主機名稱

gedit /etc/sysconfig/network

配置資訊如下,如果已經存在則不修改,將HadoopMaster節點的主機名稱改為master。

NETWORKING=yes#啟動網路

HOSTNAME=master#主機名稱

確實修改生效

hostname master

檢測主機名稱是否修改成功,在操作之前關閉當前終端,重新打開一個終端。

hostname

執行完命令,會看到下圖的列印輸入:

2、HadoopSlave節點

使用gedit編輯主機名稱

gedit /etc/sysconfig/network

配置資訊如下,如果已經存在則不修改,將HadoopSlave節點的主機名稱改為slave。

NETWORKING=yes#啟動網路

HOSTNAME=salve#主機名稱

確實修改生效

hostname slave

檢測主機名稱是否修改成功,在操作之前關閉當前終端,重新打開一個終端。

hostname

執行完命令,會看到下圖的列印輸入:

3.2.4 使用setup命令配置網環境

在終端中執行下麵的命令:

ifconfig

如果看到下面的列印輸出

如果出現紅色框內容,說明該節點不需要配置網路,否則進行下面的步驟。

在終端中執行下麵的命令:

setup

會出現下圖中的內容

使用游標鍵移動選擇“Network configuration”,回車進入該項。

使用游標鍵移動到“Device configuration”,回車進入該項。

使用游標鍵移動選擇eth0,回車進入該項。

使用游標鍵移動到“[*]”,按空白鍵進入編輯模式,按照圖中的方式輸入各項內容。

重啟網路服務

service network restart

檢查是否成功

ifconfig

看到如下圖的內容(IP不一定和下圖相同,根據你之前的配置),說明配置成功。

該項同時需要在HadoopSlave節點配置。

3.2.5 關閉防火牆

在終端中執行下麵命令

setup

游標移動選擇“Firewall configuration”選項,回車進入選項。

如果該項前面有“*”標,則按一下空白鍵關閉防火牆,如下圖所示,然後移動選擇“OK”保存修改內容,選擇“yes”確認。

該項同時需要在HadoopSlave節點配置。

3.2.6 配置host清單

編輯主機名稱列表檔

gedit /etc/hosts

將下麵兩行添加到“/etc/hosts”文件中。

192.168.220.136 master

192.168.220.138 salve

注意:這裡的master節點對應IP位址是192.168.220.136,slave對應的IP是192.168.220.138,而自己在做配置時,需要將這兩個IP位址改為你的master和slave對應的IP位址。

Slave的IP地址也是這樣查看。

驗證是否配置成功的命令是:

ping master

ping salve

如果出現下圖的資訊表示配置成功:

該項同時需要在HadoopSlave節點配置。

3.2.7 安裝JDK

進入套裝軟體“~/software”目錄,找到jdk安裝包“jdk-7u71-linux-x64.rpm”。執行rpm安裝,預設安裝到/usr目錄。

cd /home/hadoop/software

rpm -ivh jdk-7u71-linux-x64.rpm

配置JAVA環境變數

gedit /home/hadoop/.bash_profile

在檔最後添加以下語句:

export JAVA_HOME=/usr/java/jdk1.7.0_71

export PATH=$JAVA_HOME/bin:$PATH

保存退出:“:wq”

使變動生效:

source /home/hadoop/.bash_profile

測試配置

java version

如果出現下圖的資訊,表示JDK安裝成功:

該項同時需要在HadoopSlave節點配置

3.2.8 免密碼登錄配置

該部分所有操作都要在hadoop用戶下,切換回hadoop命令是:

su hadoop

1、HadoopMaster節點

在終端生成密碼,命令如下(一直回車生成金鑰)

ssh-keygen -t rsa

生成的金鑰在.ssh目錄下如下圖所示:

複製公陰文件

cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys

修改authorized_keys文件的許可權,命令如下:

chmod 600 ~/.ssh/authorized_keys

修改完許可權後,檔清單情況如下:

將authorized_keys文件複製到slave節點,命令如下:

scp ~/.ssh/authorized_keys hadoop@slave:~/

如果提示輸入yes/no的時候,輸入yes,回車

密碼是:hadoop

2、HadoopSlave節點

在終端生成金鑰,命令如下(點擊回車生成金鑰)

ssh-keygen -t rsa

將authorized_keys文件移動到.ssh目錄

mv ~/authorized_keys ~/.ssh/

修改authorized_keys文件的許可權,命令如下:

cd ~/.ssh

chmod 600 authorized_keys

3、驗證免密碼登錄

在HadoopMaster機器上執行下麵的命令:

ssh slave

3.3 Hadoop部署

每個節點上的Hadoop配置基本相同,在HadoopMaster節點操作,完成後複製到另一個節點。下面所有的操作都使用hadoop用戶,切換到hadoop用戶的命令是:

su hadoop

3.3.1 Hadoop安裝包解壓

進入套裝軟體“~/software”目錄,找到Hadoop安裝包“hadoop-2.5.2.tar.gz”。解壓Hadoop安裝包到hadoop用戶主目錄:

cd ~/software

tar -zxvf hadoop-2.5.2.tar.gz -C ~/

cd ~/hadoop-2.5.2

ls -l看到如下圖的內容,表示解壓成功:

3.3.2 配置環境變數hadoop-env.sh

環境變數檔中,只需要配置JDK的路徑。

gedit /home/hadoop/hadoop-2.5.2/etc/hadoop/hadoop-env.sh

在檔靠前的部分找到下面一行代碼:

export JAVA_HOME=${JAVA_HOME}

將這行代碼修改為下面的代碼:

export JAVA_HOME=/usr/java/jdk1.7.0_71

然後保存文件

3.3.3 配置環境變數yarn-env.sh

環境變數檔中,只需要配置JDK的路徑。

gedit /home/hadoop/hadoop-2.5.2/etc/hadoop/yarn-env.sh

在檔靠前的部分找到下面一行代碼:

# export JAVA_HOME=/home/y/libexec/jdk1.6.0/

去掉#號,將這行代碼修改為下面的代碼:

export JAVA_HOME=/usr/java/jdk1.7.0_71

然後保存文件

3.3.4 配置核心元件core-site.xml

使用gedit編輯:

gedit /home/hadoop/hadoop-2.5.2/etc/hadoop/core-site.xml

用下面的代碼替換core-site.xml中的內容:

<?xml version="1.0" encoding="UTF-8"?>

<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>

fs.defaultFS

hdfs://master:9000

hadoop.tmp.dir

/home/hadoop/hadoopdata

3.3.5 設定檔系統hdfs-site.xml

使用gedit編輯:

gedit /home/hadoop/hadoop-2.5.2/etc/hadoop/hdfs-site.xml

用下面的代碼替換hdfs-site.xml中的內容:

<?xml version="1.0" encoding="UTF-8"?>

<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>

dfs.replication

1

3.3.6 設定檔系統yarn-site.xml

使用gedit編輯:

gedit /home/hadoop/hadoop-2.5.2/etc/hadoop/yarn-site.xml

用下面的代碼替換yarn-site.xml中的內容:

<?xml version="1.0"?>

yarn.nodemanager.aux-services

mapreduce_shuffle

yarn.resourcemanager.address

master:8032

yarn.resourcemanager.scheduler.address

master:8030

yarn.resourcemanager.resource-tracker.address

master:8031

yarn.resourcemanager.admin.address

master:8033

yarn.resourcemanager.webapp.address

master:8088

3.3.7 配置計算框架mapred-site.xml

進入到Hadoop設定檔目錄:

cd /home/hadoop/hadoop-2.5.2/etc/hadoop

複製mapred-site.xml.template文件

cp mapred-site.xml.template mapred-site.xml

使用gedit編輯:

gedit mapred-site.xml

用下面的代碼替換mapred-site.xml中的內容:

<?xml version="1.0"?>

<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>

mapreduce.framework.name

yarn

true

3.3.8 配置從節點檔slaves

使用gedit編輯:

gedit slaves

用下面的代碼替換salves中的內容:

slave

3.3.9 複製到從節點

使用下面的命令將已經配置完成的Hadoop複製到從節點HadoopSlave上:

scp -r ~/hadoop-2.5.2 slave:~/

注意:因為之前已經配置了密碼登錄,這裡可以直接遠端複製。

3.4 啟動Hadoop集群

下面所有的操作都使用hadoop用戶,切換到hadoop用戶的命令是:

su hadoop

3.4.1 配置Hadoop啟動的系統環境變數

該節的配置需要同時在兩個節點(HadoopMaster和HadoopSlave)上進行操作,操作命令如下:

gedit ~/.bash_profile

將下面的代碼追加到.bash_profile末尾

export HADOOP_HOME=/home/hadoop/hadoop-2.5.2

export PATH=$HADOOP_HOME/bin:$HADOOP_HOME/sbin:$PATH

然後執行命令:

source ~/.bash_profile

3.4.2 創建資料目錄

該節的配置需要同時在兩個節點(HadoopMaster和HadoopSlave)上進行操作。

在hadoop的使用者目錄下,創建資料目錄,命令如下:

mkdir /home/hadoop/hadoopdata

3.4.3 啟動Hadoop集群

1、格式化檔案系統

格式化命令如下,該操作需要在HadoopMaster節點上執行:

hdfs namenode -format

看到下圖的列印資訊表示格式化成功:

2、啟動Hadoop

首先進入Hadoop安裝主目錄,然後執行啟動命令:

start-dfs.sh

start-yarn.sh

執行命令時,提示yes/no時,輸入yes。

3、查看進程是否啟動

在HadoopMaster的終端執行jps命令,在列印結果中會看到4個進程,分別是ResourceManager、Jps、NameNode和SecondaryNameNode,如下圖所示。如果出現了這4個進程表示主節點進程啟動成功。

在HadoopSlave的終端執行jps命令,在列印結果中會看到3個進程,分別是NodeManager、DataNode和Jps,如下圖所示。如果出現了這3個進程表示主節點進程啟動成功。

4、Web UI查看集群是否成功啟動

在HadoopMaster上啟動Firefox流覽器,在流覽器位址欄中輸入http://master:50070/,檢查namenodet datanode是否正常,UI頁面如下圖所示。

在HadoopMaster上啟動Firefox流覽器,在流覽器位址欄中輸入http://master:8088/,檢查yarn是否正常,UI頁面如下圖所示。

5、運行PI實例檢查集群是否成功

進入Hadoop安裝主目錄,執行下面的命令:

cd ~/hadoop-2.5.2/share/hadoop/mapreduce/

hadoop jar hadoop-mapreduce-examples-2.5.2.jar pi 10 10

會看到如下的執行結果:

最後輸出:

如果以上三個驗證步驟都沒有問題,說明集群正常啟動。

第4章

安裝部署Hive

主要內容

· 解壓並安裝Hive

· 安裝配置MySQL

· 配置Hive

· 啟動並驗證Hive安裝

第4章 安裝部署Hive

該部分的安裝需要在Hadoop已經成功安裝的基礎上,並且要求Hadoop已經正常啟動。

我們將Hive安裝在HadoopMaster節點上。所以下面的所有操作都在HadoopMaster節點上進行。

下面所有的操作都使用hadoop用戶,切換到hadoop用戶的命令是:

su hadoop

4.1 解壓並安裝Hive

使用下面的命令,解壓Hive安裝包到hadoop使用者的主目錄:

cd /home/hadoop/software

tar -zxvf apache-hive-0.13.1-bin.tar.gz -C ~/

cd

將hive安裝目錄“apache-hive-0.13.1-bin”重命為“hive-0.13.1”。

mv apache-hive-0.13.1-bin hive-0.13.1

進入hive安裝主目錄“hive-0.13.1”,執行ls -l會看到下圖所示內容,這些內容是Hive包含的檔:

4.2 安裝配置MySQL

注意:安裝MySQL服務需要root許可權,切換成root用戶,命令如下

su

輸入密碼:hadoop

在聯網的情況下,用yum安裝MySQL

yum install mysql-server

yum install mysql

yum install mysql-devel

如果命令執行過程中提示套裝軟體已經安裝了,則不需要重新安裝。

安裝之後,啟動MySQL服務

service mysqld start

以root用戶登錄mysql,(注意這裡的root使用者是資料庫的root的使用者,不是系統的root使用者)。預設情況下root使用者沒有密碼,可以通過下面的方式登錄:

mysql -uroot

然後創建hadoop用戶:

grant all on *.* to hadoop@'%' identified by 'hadoop';

grant all on *.* to hadoop@'localhost' identified by 'hadoop';

grant all on *.* to hadoop@'master' identified by 'hadoop';

flush privileges;

創建資料庫:

create database hive_00

輸入命令退出MySQL

quit;

4.3 配置Hive

進入hive安裝目錄下的配置目錄,然後修改設定檔:

cd /home/hadoop/hive-0.13.1/conf/

然後在該目錄下創建一個新檔hive-site.xml,命令如下

gedit hive-site.xml

將下面的內容添加hive-site.xml文件中:

<?xml version="1.0"?>

<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>

javax.jdo.option.ConnectionURL

jdbc:mysql://master/hive_00?characterEncoding=UTF-8

javax.jdo.option.ConnectionDriverName

com.mysql.jdbc.Driver

javax.jdo.option.ConnectionUserName

hadoop

javax.jdo.option.ConnectionPassword

hadoop

將mysql的java connector複製到依賴庫

cd /home/hadoop/software

cp mysql-connector-java-5.1.28-bin.jar ~/hive-0.13.1/lib/

配置Hive環境變數

gedit /home/hadoop/.bash_profile

在檔最後添加以下語句:

export HIVE_HOME=/home/hadoop/hive-0.13.1

export PATH=$PATH:$HIVE_HOME/bin

使變動生效命令:

source /home/hadoop/.bash_profile

4.4 啟動並驗證Hive安裝

進入hive安裝主目錄,啟動Hive用戶端:

hive

出現下面的頁面表示hive部署成功:

第5章

安裝部署HBase

主要內容

· 解壓並安裝Hbse

· 配置Hbase

· 啟動並驗證Hbase

第5章 安裝部署HBase

該部分的安裝需要在Hadoop已經成功安裝的基礎上,並且要求Hadoop已經正常啟動。

Hbase需要部署在HadoopMaster和HadoopSlave上。下面的操作都是通過HadoopMaster節點進行。

配音所有的操作都使用hadoop用戶,切換用戶的命令是:

su hadoop

5.1 解壓並安裝HBase

使用下面的命令,解壓HBase到hadoop使用者的主目錄:

cd /home/hadoop/software

tar -zxvf h hbase-0.98.8-hadoop2-bin.tar.gz -C /home/hadoop/

將HBase安裝目錄“hbase-0.98.8-hadoop2”重命為“hbase-0.98.8”。

cd

mv hbase-0.98.8-hadoop2 hbase-0.98.8

進入hbase安裝主目錄“hbase-0.98.8”,執行ls -l會看到下圖所示內容,這些內容是Hbase包含的檔:

5.2 配置HBase

進入HBase安裝主目錄,然後修改設定檔:

cd /home/hadoop/hbase-0.98.8/conf/

5.2.1 修改環境變數hbase-env.sh

使用下面的命令打開文件:

gedit hbase-env.sh

該檔的靠前部分有下面一行內容:

# export JAVA_HOME=/usr/java/jdk1.6.0/

去掉#號,將這行代碼修改為下面的代碼:

export JAVA_HOME=/usr/java/jdk1.7.0_71

然後保存文件

5.2.2 修改設定檔hbase-site.xml

用下面的內容替換原先hbase-site.xml中的內容:

<?xml version="1.0"?>

<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>

hbase.cluster.distributed

true

hbase.rootdir

hdfs://master:9000/hbase

hbase.zookeeper.quorum

master

5.2.3 設置regionservers

使用下面命令打開文件:

gedit regionservers

將regionservers中的localhost修改為下面的內容:

slave

5.2.4 設置環境變數

編輯系統設定檔,執行:

gedit ~/.bash_profile

將下面的代碼添加到文件末尾:

export HBASE_HOME=/home/hadoop/hbase-0.98.8

export PATH=$HBASE_HOME/bin:$PATH

export HADOOP_CLASSPATH=$HBASE_HOME/lib/*

然後執行:

source ~/.bash_profile

5.2.5 將Hbase安裝檔複製到HadoopSlave節點

使用下面的命令操作:

cd

scp -r hbase-0.98.8 slave:~/

5.3 啟動並驗證HBase

進入HBase安裝主目錄,啟動HBase

cd /home/hadoop/hbase-0.98.8

bin/start-hbase.sh

執行命令後會看到下面的列印輸出:

使用Web UI介面查看啟動情況:

打開Firefox流覽器,在位址欄中輸入http://master:60010,會看到如下圖的HBase管理頁面:如下圖

第6章

安裝部署Mahout

主要內容

· 解壓並安裝Mahout

· 啟動並驗證Mahout

第6章 安裝部署Mahout

該部分的安裝需要Hadoop已經成功安裝的基礎上,並且要求Hadoop已經正常啟動。下面的操作都是通過HadoopMaster節點進行。

本章所有的操作都使用hadoop用戶。

6.1 解壓並安裝Mahout

使用下面的命令,解壓Mahout到hadoop使用者的主目錄:

cd /home/hadoop/software

tar -zxvf mahout-0.9-cdh5.2.0.tar.gz -C /home/hadoop/

將Mahout安裝目錄“mahout-0.9-cdh5.2.0”重命為“mahout-0.9”。

cd

mv mahout-0.9-cdh5.2.0 mahout-0.9

進入Mahout安裝主目錄“mahout-0.9”,執行ls -l會看到下圖所示內容,這些內容是Mahout包含的檔:

6.2 啟動並驗證Mahout

進入Mahout安裝主目錄:

cd /home/hadoop/mahout-0.9/

執行命令後會看到下面的列印輸出,表示安裝成功:

第7章

安裝部署Sqoop

主要內容

· 解壓並安裝Sqoop

· 配置Sqoop

· 啟動並驗證Sqoop

第7章 安裝部署Sqoop

該部分的安裝需要Hadoop已經成功安裝的基礎上,並且要求Hadoop已經正常啟動。下面的操作都是通過HadoopMaster節點進行。

本章所有的操作都使用hadoop用戶。

7.1 解壓並安裝Sqoop

使用下面的命令,解壓Sqoop到hadoop使用者的主目錄:

cd /home/hadoop/software

tar -zxvf sqoop-1.4.6.bin__hadoop-2.0.4-alpha.tar.gz -C /home/hadoop/

將Mahout安裝目錄“sqoop-1.4.6.bin__hadoop-2.0.4-alpha”重命為“sqoop-1.4.6”。

cd

mv sqoop-1.4.6.bin__hadoop-2.0.4-alpha sqoop-1.4.6

進入Sqoop安裝主目錄“sqoop-1.4.6”,執行ls -l會看到下圖所示內容,這些內容是Mahout包含的檔:

7.2 配置Sqoop7.2.1 配置MySQL連接器

將mysql的java connector複製到依賴庫

cd /home/hadoop/software

cp mysql-connector-java-5.1.28-bin.jar ~/sqoop-1.4.6/lib/

7.2.2 配置環境變數

cd ~/sqoop-1.4.6/conf/

cp sqoop-site-template.sh sqoop-site.sh

將檔的內容替換為:

#Set path to where bin/hadoop is available

export HADOOP_COMMON_HOME=/home/hadoop/hadoop-2.5.2

#Set path to where hadoop-*-core.jar is available

export HADOOP_MAPRED_HOME=/home/hadoop/hadoop-2.5.2

#set the path to where bin/hbase is available

export HBASE_HOME=/home/hadoop/hbase-0.98.8

#Set the path to where bin/hive is available

export HIVE_HOME=/home/hadoop/hive-0.13.1

#Set the path for where zookeper config dir is

#export ZOOCFGDIR=

7.3 啟動並驗證Sqoop

進入Sqoop安裝主目錄:

cd ~/sqoop-1.4.6/

bin/sqoop help

執行命令後會看到下面的列印輸出,表示安裝成功:

深圳國泰安教育技術股份有限公司

- 第10頁 -

地址:深圳市南山區學苑大道1001號南山智園 A4棟 電話:400-609-6665網址:http://www.gtafe.com 傳真:0755-83940070

第二部分

實驗手冊

搜狗搜索日誌分析系統

一、數據準備1、查看數據

進入實驗資料檔案夾

cd /home/hadoop/data

less查看

less sogou.500w.utf8.gz

解壓數據

gunzip sogou.500w.utf8.gz

查看總行數

wc -l sogou.500.utf8

返回“5000000”行

截取前100萬行數據

head -n 1000000 sogou.500w.utf8 > sogou.100w.utf8

2、資料擴展

將時間欄位拆分為並拼接,添加年、月、日、小時欄位

cd /home/hadoop/software/

bash sogou-log-extend.sh /home/hadoop/data/sogou.100w.utf8 /home/hadoop/data/sogou.100w.utf8.ext

3、數據過濾

過濾第2個欄位(UID)或者第3個欄位(搜索關鍵字)為空的行(需要用第2步資料擴展的結果)

cd /home/hadoop/software/

bash sogou-log-filter.sh /home/hadoop/data/sogou.100w.utf8.ext /home/hadoop/data/sogou.100w.utf8.flt

4、上傳數據

創建HDFS存儲目錄

hdfs dfs -mkdir /sogoudata

hdfs dfs -mkdir /sogoudata_flt

數據載入到HDFS上

cd /home/hadoop/data

hdfs dfs -put sogou.100w.utf8 /sogoudata

hdfs dfs -put sogou.100w.utf8.flt /sogoudata_flt

二、基於Hive構建日誌資料的資料倉庫

要求:

Hadoop集群正常啟動

mysql服務啟動

打開Hive用戶端

hive

下面的操作都是在Hive用戶端操作。

1、基本操作

查看資料庫

show databases;

創建資料庫

create database sogou;

使用資料庫

use sogou;

查看所有表名

show tables;

創建外部表

create external table sogou_ext0 (

ts STRING,

uid STRING,

keyword STRING,

rank INT,

order INT,

url STRING)

COMMENT 'This is the sogou search data of one data'

row format delimited fields terminated by '\t'

stored as textfile

location '/sogoudata';

查看新創建表結構

show create table sogou_ext0;

describe sogou_ext0;

刪除表

drop table sogou_ext0;

2、創建分區表(按照年、月、小時分區)

創建擴展4個欄位(年、月、日、小時)資料的外部表:

create external table sogou_ext (

ts STRING,

uid STRING,

keyword STRING,

rank INT,

order INT,

url STRING,

year INT,

month INT,

day INT,

hour INT)

row format delimited fields terminated by '\t'

stored as textfile

location '/sogoudata_flt';

創建帶分區的表:

create external table sogou_partition (

ts STRING,

uid STRING,

keyword STRING,

rank INT,

order INT,

url STRING

)

COMMENT 'This is the sogou search data of partition'

partitioned by (

year INT,

month INT,

day INT,

hour INT

)

row format delimited fields terminated by '\t'

stored as textfile;

導入數據

> set hive.exec.dynamic.partition.mode=nonstrict;

> insert overwrite table sogou_partition partition(year,month,day,hour) select * from sogou_ext;

3、查詢結果

> select * from sogou_ext limit 10;

> select url from sogou_ext limit 10;

> select * from sogou_ext where uid='285f88780dd0659f5fc8acc7cc4949f2';

三、實現資料分析需求一:條數統計

數據總條數

select count(*) from sogou.sogou_ext;

非空查詢準則

select count(*) from sogou.sogou_ext where keyword is not null and keyword !='';

無重複總條數(根據ts、uid、keyword、url)

select count(*) from (select * from sogou.sogou_ext group by ts,uid,keyword,url having count(*)=1) a;

獨立UID總數

select count(distinct(uid)) from sogou.sogou_ext;

四、實現資料分析需求二:關鍵字分析

查詞關鍵字長度統計

select avg(a.cnt) from (select size(split(keyword,'\\s+')) as cnt from sogou.sogou_ext) a;

查詢頻度排名(頻度最高的前50詞)

select keyword,count(*) as cnt from sogou.sogou_ext group by keyword order by cnt desc limit 50;

五、實現資料分析需求三:UID分析

1. UID的查詢次數分析(查詢1次的UID個數,…查詢N次的UID個數)

select sum(if(uids.cnt=1,1,0)),sum(if(uids.cnt=2,1,0)),sum(if(uids.cnt=3,1,0)),sum(if(uids.cnt>3,1,0)) from (select uid,count(*) as cnt from sogou.sogou_ext group by uid) uids;

2. UID平均查詢次數

select sum(a.cnt)/count(a.uid) from (select uid,count(*) as cnt from sogou.sogou_ext group by uid) a;

3.查詢次數大於2次的用戶總數

select count(a.uid) from (select uid,count(*) as cnt from sogou.sogou_ext group by uid having cnt >2) a;

4. 查詢次數大於2次的用戶占比

A UID總數:

select count (distinct (uid)) from sogou.sogou_ext;

B UID 2次以上的數量

select count(a.uid) from (select uid,count(*) as cnt from sougou.sogou_ext group by uid having cnt >2) a;

結果C=B/A

5. 查詢次數大於2次的資料展示

select b.* from (select uid,count(*) as cnt from sogou_ext group by uid having cnt > 2) a join sogou.sogou_ext b on a.uid=b.uid limit 50;

六、實現資料分析需求四:用戶行為分析

1. 點擊次數與Rank之間的關係分析

Rank在10以內的點擊次數占比

A:

select count(*) from sogou.sogou_ext where rank < 11;

B:

select count(*) from sogou.sogou_ext;

占比:A/B

用戶只翻看搜尋引擎返回結果的前10個結果,即返回結果頁面的第一頁。這個使用者行為決定了儘管搜尋引擎返回的結果數目十分龐大,但真正可能被絕大部分用戶所流覽,只有排在最前面的很小一部分而已。所以傳統的基於整個結果集合查準率和查全率的評價方式不再適用於網路資訊檢索的評價,我們需要著重強調在評價中有關最靠前結果文檔與用戶查詢需求的相關度的部分。

2. 直接輸入URL作為查詢詞的比例

(1)直接輸入URL查詢的比例

A:

select count(*) from sogou.sogou_ext where keyword like '%www%';

B:

select count(*) from sogou.sogou_ext;

占比:A/B

(2)直接輸入URL查詢中,點擊數點擊的結果就是用戶輸入的URL的網直所占的比例

C:

select sum(if(instr(url,keyword)>0,1,0)) from (select * from sogou.sogou_ext where keyword like '%www%') a;

占比:C/A

3. 獨立用戶行為分析

(1)查詢搜索過的“仙劍奇俠傳的”uid,並且次數大於3

select uid,count(*) as cnt from sogou.sogou_ext where keyword='仙劍奇俠傳' group by uid having cnt >3;

(2)查uid是“e11c6273e337c1d1032229f1b2321a75”的相關搜索記錄

select * from sogou.sogou_ext where uid='e11c6273e337c1d1032229f1b2321a75' and keyword like '%仙劍奇俠傳%';

(3)分析列印結果

e11c6273e337c1d1032229f1b2321a75http://baike.baidu.com/view/2086505.htmGrenade2

搜索具有多樣性,因人而異,主要注意個性化需求。

七、實現資料分析需求五:即時資料

每個UID在當天的查詢點擊次數

(1)創建臨時表

create table sogou.uid_cnt (uid string,cnt int) comment 'this is the sogou search data of one day' row format delimited fields terminated by '\t' stored as textfile;

(2)查詢並插入

insert overwrite table uid_cnt select uid,count(*) as cnt from sogou_ext group by uid;

八、使用Sqoop將資料導入MySQL

要求:

MySQL服務啟動且運行正常,命令為:

/etc/init.d/mysqld status

Hadoop集群啟動且運行正常,命令為:

jps

將前面的生成的即時資料從HDFS導入到MySQL中,步驟如下:

以下操作都是在MySQL交互用戶端執行。

(1)登錄MySQL

mysql -uhadoop -phadoop

(2)創建資料庫

查看test資料庫是否存在

show databases;

如果不存在就創建:

create database test;

創建表

CREATE TABLE `test`.`uid_cnt` (

`uid` varchar(255) DEFAULT NULL,

`cnt` int(11) DEFAULT NULL

) ENGINE=InnoDB DEFAULT CHARSET=utf8;

提示:語句中的引號是反引號`,不是單引號’。

創建成功後,退出MySQL。

(3)導入數據

進入Sqoop安裝主目錄

cd /home/hadoop/sqoop-1.4.6

匯出命令:

bin/sqoop export --connect jdbc:mysql://master:3306/test --username hadoop --password hadoop --table uid_cnt --export-dir '/user/hive/warehouse/sogou.db/uid_cnt' --fields-terminated-by '\t'

代碼解釋:

bin/sqoop export##表示資料從hive複製到mysql中

--connect jdbc:mysql://master:3306/test

--username hadoop

--password hadoop

--table uid_cnt##mysql中的表,即將導入到表名稱

--export-dir '/user/hive/warehouse/sogou.db/uid_cnt' ##hive中被匯出的文件

--fields-terminated-by '\t' ##hive中被匯出的文件欄位的分隔符號

九、HBase Shell操作命令實驗

要求:

HBase集群正常啟動,且可運行正常

進入用戶端

hbase shell

查看列表

list

創建表test

create 'test',{NAME=>'f1',VERSIONS=>5}

再次查看列表對比

list

插入資料

put 'test','aid001','f1:uid','001'

掃描查詢資料

scan 'test'

單條查詢資料

get 'test','aid001'

查看表結構

describe 'test'

修改表

disable 'test'

alter 'test',NAME=>'f1',VERSIONS=>3

enable 'test'

再次查看表的結構對比

describe 'test'

清空表

truncate 'test'

掃描表

scan 'test'

刪除表

disable 'test'

drop 'test'

list

創建新表

create 'uid_cnt',{NAME=>'f1',VERSIONS=>5}

十、使用Sqoop將資料導入HBase

要求:

MySQL服務啟動且運行正常

HBase集群啟動且運行正常

進入Sqoop安裝主目錄

cd /home/hadoop/sqoop-1.4.6/

執行導入命令:

bin/sqoop import --connect jdbc:mysql://master:3306/test --username hadoop --password hadoop --table uid_cnt --hbase-table uid_cnt --column-family f1 --hbase-row-key uid --hbase-create-table -m 1

代碼解釋

bin/sqoop import --connect jdbc:mysql://master:3306/test --username hadoop --password hadoop --table uid_cnt

--hbase-table uid_cnt##HBase中表名稱

--column-family f1##列簇名稱

--hbase-row-key uid##HBase行鍵

--hbase-create-table##是否在不存在的情況下創建表

-m 1##啟動Map數量

十一、HBase Java API訪問統計資料1.操作要求

Hadoop集群啟動且運行正常

HBase集群啟動且運行正常

2.數據準備

將之前的uid_cnt資料從HDFS複製到本地

cd

hdfs dfs -get /user/hive/warehouse/sogou.db/uid_cnt

cd uid_cnt

cat 00000* > uid_cnt.output

head uid_cnt.output

3.數據導入

使用Java程式將資料導入HBase中:

cd ~/software

hadoop jar hbase-example.jar com.adintellig.teach.HBaseImportTest /home/hadoop/uid_cnt/uid_cnt.output

十二、Mahout聚類操作實驗1.資料描述

控制時序資料

共分為六類:

· 趨勢向下:Downward Trends (A)

· 週期:Cyclic (By)

· 正常:Normal (C)

· 向上偏移:Upward Shift (D)

· 趨勢向上:Upward Trend (E)

· 向下偏移:Downward Shift (F)

下面每一副圖都代表了一類資料:

· 資料檔案描述:

· ASCII編碼

· 600行

· 每行60列

· 每行表示一個圖表

類別有下面的一些參數定義(600樣本的實際分類):

· 1–100正常

· 101–200週期

· 201–300趨勢向上

· 301–400趨勢向下

· 401–500向上偏移

· 501–600向下偏移

2.準備數據

在HadoopMaster節點上,打開終端,然後下載控制資料:

wget http://kdd.ics.uci.edu/databases/synthetic_control/synthetic_control.data

如果無法上網下載,則執行下面的命令:

cd

cp ~/data/synthetic_control.data ~/

實驗資料上傳到HDFS

cd

hdfs dfs -mkdir testdata

hdfs dfs -put synthetic_control.data testdata/

hdfs dfs -ls testdata

3.運行聚類分析

直接運行下面的命令:

hadoop jar /home/hadoop/mahout-0.9/mahout-examples-0.9-cdh5.2.0-job.jar org.apache.mahout.clustering.syntheticcontrol.kmeans.Job

查看結果檔列表

hdfs dfs -ls output

HDFS上文件列表如下:

Found 15 items

-rw-r--r-- 1 hadoop supergroup 194 2015-10-13 13:59 output/_policy

drwxr-xr-x - hadoop supergroup 0 2015-10-13 14:00 output/clusteredPoints

drwxr-xr-x - hadoop supergroup 0 2015-10-13 13:52 output/clusters-0

drwxr-xr-x - hadoop supergroup 0 2015-10-13 13:53 output/clusters-1

drwxr-xr-x - hadoop supergroup 0 2015-10-13 13:59 output/clusters-10-final

drwxr-xr-x - hadoop supergroup 0 2015-10-13 13:54 output/clusters-2

drwxr-xr-x - hadoop supergroup 0 2015-10-13 13:55 output/clusters-3

drwxr-xr-x - hadoop supergroup 0 2015-10-13 13:55 output/clusters-4

drwxr-xr-x - hadoop supergroup 0 2015-10-13 13:56 output/clusters-5

drwxr-xr-x - hadoop supergroup 0 2015-10-13 13:57 output/clusters-6

drwxr-xr-x - hadoop supergroup 0 2015-10-13 13:57 output/clusters-7

drwxr-xr-x - hadoop supergroup 0 2015-10-13 13:58 output/clusters-8

drwxr-xr-x - hadoop supergroup 0 2015-10-13 13:59 output/clusters-9

drwxr-xr-x - hadoop supergroup 0 2015-10-13 13:52 output/data

drwxr-xr-x - hadoop supergroup 0 2015-10-13 13:52 output/random-seeds

查看文件:

/home/hadoop/mahout-0.9/bin/mahout clusterdump -i /user/hadoop/output/clusters-2 -p /user/hadoop/output/clusteredPoints -o result.txt

可以看到聚類的所有類別和每行資料所在的類別。

這個命令會將每一類的點列出來,input指向的目錄存放的是某類有幾個點和該類的質心點及半徑,即clusters-N目錄,pointsDir指向的是所有輸入點歸於哪一類,即clusteredPoints目錄,兩者聯合起來,就可以列舉出屬於同一類的所有點。