大資料之路起航——大資料環境搭建
摘要:大資料門檻較高,僅僅環境的搭建可能就要耗費我們大量的精力,本文總結了作者是如何在自己電腦上搭建大資料環境的,希望能幫助學弟學妹們更快地走上大資料學習之路。
0. 準備安裝包
本文所需的系統映象、大資料軟體安裝包、開發環境軟體安裝包等都可以在我的百度雲盤中下載。
連結: ofollow,noindex">系統映象和各種大資料軟體
密碼:n2cn
1. Windows下安裝Ubuntu雙系統
Hadoop等大資料開源框架是不支援Windows系統的,所以需要先安裝一個Linux雙系統。
雙系統安裝
請參考安裝指南:
第一步: 制定系統啟動U盤
第二步: 安裝雙系統
2. 搭建Hadoop平臺
Hadoop是Apache 公司開發的一款可靠的、可擴充套件性的、分散式計算的開源軟體。以Hadoop分散式檔案系統(HDFS)和分散式運算程式設計框架(MapReduce)為核心,允許在叢集伺服器上使用簡單的程式設計模型對大資料集進行分散式處理。下面,請跟著作者一步步搭建自己的Hadoop平臺吧。
2.1更新源
在bash終端中執行如下shell指令,設定root使用者密碼,並切換到root使用者
#設定root密碼 sudo passwd #切換到root使用者 su root
安裝vim編譯器
apt-get install vim
備份原始的官方源
cp /etc/apt/sources.list /etc/apt/sources.list.bak
刪除原始的官方源
rm /etc/apt/sources.list
執行如下shell命令,重新建立sources.list檔案
vim /etc/apt/sources.list
按 i 進入vim的編輯模式,複製下面的阿里源到sources.list檔案中,然後按 esc 退出編輯模式,最後輸入:+wq ,按回車儲存。
deb http://mirrors.aliyun.com/ubuntu/ zesty main multiverse restricted universe deb http://mirrors.aliyun.com/ubuntu/ zesty-backports main multiverse restricted universe deb http://mirrors.aliyun.com/ubuntu/ zesty-proposed main multiverse restricted universe deb http://mirrors.aliyun.com/ubuntu/ zesty-security main multiverse restricted universe deb http://mirrors.aliyun.com/ubuntu/ zesty-updates main multiverse restricted universe deb-src http://mirrors.aliyun.com/ubuntu/ zesty main multiverse restricted universe deb-src http://mirrors.aliyun.com/ubuntu/ zesty-backports main multiverse restricted universe deb-src http://mirrors.aliyun.com/ubuntu/ zesty-proposed main multiverse restricted universe deb-src http://mirrors.aliyun.com/ubuntu/ zesty-security main multiverse restricted universe deb-src http://mirrors.aliyun.com/ubuntu/ zesty-updates main multiverse restricted universe
執行如下shell命令,完成源的更新
apt-get update
2.2 安裝SSH、配置SSH無密碼登陸
叢集、單節點模式都需要用到 SSH 登陸(類似於遠端登陸,你可以登入某臺 Linux 主機,並且在上面執行命令),Ubuntu 預設已安裝了 SSH client,此外還需要安裝 SSH server:
sudo apt-get install openssh-server
安裝後,可以使用如下命令登陸本機,但此時需要密碼才能登陸:
ssh localhost
首先退出剛才的 ssh,就回到了我們原先的終端視窗,然後利用 ssh-keygen 生成金鑰,並將金鑰加入到授權中:
exit# 退出剛才的 ssh localhost cd ~/.ssh/# 若沒有該目錄,請先執行一次ssh localhost ssh-keygen -t rsa# 會有提示,都按回車就可以 cat ./id_rsa.pub >> ./authorized_keys# 加入授權
在 Linux 系統中,~ 代表的是使用者的主資料夾(root使用者例外),即 “/home/使用者名稱” 這個目錄,如你的使用者名稱為 ubuntu,則 ~ 就代表 “/home/ubuntu/”。 如果是root使用者則~代表/root,此外,命令中的 # 後面的文字是註釋,只需要輸入前面命令即可。
此時再用 ssh localhost 命令,無需輸入密碼就可以直接登陸了。
2.3 安裝JAVA環境
Java環境推薦使用 Oracle 的 JDK,首先,準備好檔案 jdk-8u162-linux-x64.tar.gz ,然後將檔案移到/usr/local目錄下:
mv jdk-8u162-linux-x64.tar.gz /usr/local
解壓檔案
tar -zxvf jdk-8u162-linux-x64.tar.gz
重新命名資料夾為java
mv jdk-8u162-linux-x64 java
新增系統環境變數
vim /etc/profile
在檔案末尾新增如下JAVA環境變數
export JAVA_HOME=/usr/local/java export JRE_HOME=/usr/local/java/jre export CLASSPATH=.:$CLASSPATH:$JAVA_HOME/lib:$JRE_HOME/lib export PATH=$PATH:$JAVA_HOME/bin:$JRE_HOME/bin
接著還需要讓該環境變數生效,執行如下程式碼:
source /etc/profile
檢驗JAVA是否安裝成功
echo $JAVA_HOME# 檢驗變數值 java -version java javac
如果設定正確的話,java -version 會輸出 java 的版本資訊,java 和 javac 會輸出命令的使用指導。
2.4 安裝Hadoop
下載 hadoop-2.7.6.tar.gz 檔案,然後將檔案移到/usr/local目錄下
mv hadoop-2.7.6.tar.gz /usr/local
解壓
tar -zxvf hadoop-2.7.6.tar.gz
資料夾重新命名為hadoop
mv hadoop-2.7.6 hadoop
配置環境變數,開啟檔案/etc/profile,新增如下Hadoop環境變數
export HADOOP_HOME=/usr/local/hadoop export PATH=$PATH:/usr/local/hadoop/bin:/usr/local/hadoop/sbin
同樣,需要讓該環境變數生效,執行如下程式碼:
source /etc/profile
輸入如下命令來檢查 Hadoop 是否可用,成功則會顯示 Hadoop 版本資訊:
hadoop version
2.5 Hadoop偽分散式配置
Hadoop 可以在單節點上以偽分散式的方式執行,Hadoop 程序以分離的 Java 程序來執行,節點既作為 NameNode 也作為 DataNode,同時,讀取的是 HDFS 中的檔案。
Hadoop 的配置檔案位於 /usr/local/hadoop/etc/hadoop/ 中,偽分散式需要修改2個配置檔案 core-site.xml 和 hdfs-site.xml 。Hadoop的配置檔案是 xml 格式,每個配置以宣告 property 的 name 和 value 的方式來實現。
修改配置檔案 core-site.xml (通過 gedit 編輯會比較方便: gedit ./etc/hadoop/core-site.xml),將當中的
<configuration> </configuration>
修改為下面配置:
<configuration> <property> <name>hadoop.tmp.dir</name> <value>file:/usr/local/hadoop/tmp</value> <description>Abase for other temporary directories.</description> </property> <property> <name>fs.defaultFS</name> <value>hdfs://localhost:9000</value> </property> </configuration>
同樣的,修改配置檔案 hdfs-site.xml:
<configuration> <property> <name>dfs.replication</name> <value>1</value> </property> <property> <name>dfs.namenode.name.dir</name> <value>file:/usr/local/hadoop/tmp/dfs/name</value> </property> <property> <name>dfs.datanode.data.dir</name> <value>file:/usr/local/hadoop/tmp/dfs/data</value> </property> </configuration>
Hadoop配置檔案說明
Hadoop 的執行方式是由配置檔案決定的(執行 Hadoop 時會讀取配置檔案),偽分散式只需要配置 fs.defaultFS 和 dfs.replication 就可以執行(官方教程如此),不過若沒有配置 hadoop.tmp.dir 引數,則預設使用的臨時目錄為 /tmp/hadoo-hadoop,而這個目錄在重啟時有可能被系統清理掉,導致必須重新執行 format 才行。所以我們進行了設定,同時也指定 dfs.namenode.name.dir 和 dfs.datanode.data.dir,否則在接下來的步驟中可能會出錯。
配置完成後,執行 NameNode 的格式化:
./usr/local/hadoop/bin/hdfs namenode -format
啟動hadoop
./usr/local/hadoop/sbin/start-all.sh
成功啟動後,使用jps命令會出現如下如下程序

hadoop成功啟動後的程序
檢視 NameNode 和 Datanode 資訊,還可以線上檢視 HDFS 中的檔案。
3. 安裝HBase資料庫
HBase是一個分散式的、面向列的開源資料庫,源於Google的一篇論文《BigTable:一個結構化資料的分散式儲存系統》。HBase以表的形式儲存資料,表有行和列組成,列劃分為若干個列族/列簇(column family)。欲瞭解HBase的官方資訊,請訪問 HBase官方網站 。HBase的執行有三種模式:單機模式、偽分散式模式、分散式模式。
單機模式:在一臺計算機上安裝和使用HBase,不涉及資料的分散式儲存;偽分散式模式:在一臺計算機上模擬一個小的叢集;分散式模式:使用多臺計算機實現物理意義上的分散式儲存。這裡出於學習目的,我們只重點討論偽分散式模式。
3.1. HBase安裝
下載 hbase-2.0.0-bin.tar.gz 檔案,並將檔案移到/usr/local目錄下
mv hbase-2.0.0-bin.tar.gz /usr/local
解壓
tar -zxvf hbase-2.0.0-bin.tar.gz
資料夾重新命名
mv hbase-2.0.0 hbase
將hbase下的bin目錄新增到path中,這樣,啟動hbase就無需到/usr/local/hbase目錄下,大大的方便了hbase的使用。教程下面的部分還是切換到了/usr/local/hbase目錄操作,有助於初學者理解執行過程,熟練之後可以不必切換。
編輯/etc/profile檔案
vim /etc/profile
在/etc/profile檔案尾行新增如下內容:
export HBASE_HOME=/usr/local/hbase export PATH=$HBASE_HOME/bin:$PATH export HBASE_MANAGES_ZK=true
編輯完成後,再執行source命令使上述配置在當前終端立即生效,命令如下:
source /etc/profile
檢視HBase版本,確定hbase安裝成功,命令如下:
hbase version
3.2. HBase偽分佈模式配置
配置/usr/local/hbase/conf/hbase-site.xml,開啟並編輯hbase-site.xml,命令如下:
vim /usr/local/hbase/conf/hbase-site.xml
在啟動HBase前需要設定屬性hbase.rootdir,用於指定HBase資料的儲存位置,因為如果不設定的話,hbase.rootdir預設為/tmp/hbase-${user.name},這意味著每次重啟系統都會丟失資料。此處設定為HBase安裝目錄下的hbase-tmp資料夾即(/usr/local/hbase/hbase-tmp),新增配置如下:
<configuration> <property> <name>hbase.rootdir</name> <value>hdfs://localhost:9000/hbase</value> </property> <property> <name>hbase.cluster.distributed</name> <value>true</value> </property> </configuration>
接下來測試執行。首先切換目錄至HBase安裝目錄/usr/local/hbase;再啟動HBase。命令如下:
cd /usr/local/hbase bin/start-hbase.sh bin/hbase shell
停止HBase執行,命令如下:
bin/stop-hbase.sh
如果hbase啟動成功,則使用jps命令會出現如下程序

hbase啟動成功後進程
4. 安裝Spark記憶體計算引擎
Apache Spark 是一個新興的大資料處理通用引擎,提供了分散式的記憶體抽象。Spark 最大的特點就是快,可比 Hadoop MapReduce 的處理速度快 100 倍。Spark基於Hadoop環境,Hadoop YARN為Spark提供資源排程框架,Hadoop HDFS為Spark提供底層的分散式檔案儲存。
4.1. Spark安裝
Spark的安裝過程較為簡單,在已安裝好 Hadoop 的前提下,經過簡單配置即可使用,首先下載 spark-2.3.0-bin-hadoop2.7.tgz 檔案,並將檔案移到/usr/local目錄下
mv spark-2.3.0-bin-hadoop2.7.tgz /usr/local
解壓
cd /usr/local tar -zxvf spark-2.3.0-bin-hadoop2.7.tgz
資料夾重新命名
mv spark-2.3.0 spark
編輯/etc/profile檔案,新增環境變數
vim /etc/profile
在/etc/profile檔案尾行新增如下內容:
export SPARK_HOME=/usr/local/spark export PATH=$PATH:$SPARK_HOME/bin:$SPARK_HOME/sbin
編輯完成後,再執行source命令使上述配置在當前終端立即生效,命令如下:
source /etc/profile
4.2. Spark配置
安裝後,還需要修改Spark的配置檔案spark-env.sh
cd /usr/local/spark cp ./conf/spark-env.sh.template ./conf/spark-env.sh
編輯spark-env.sh檔案(vim ./conf/spark-env.sh),在第一行新增以下配置資訊:
export JAVA_HOME=/usr/local/java export HADOOP_CONF_DIR=/usr/local/hadoop/etc/hadoop export HADOOP_HDFS_HOME=/usr/local/hadoop export SPARK_HOME=/usr/local/spark export SPARK_DIST_CLASSPATH=$(/usr/local/hadoop/bin/hadoop classpath)
配置完成後就可以直接使用,不需要像Hadoop執行啟動命令。
通過執行Spark自帶的示例,驗證Spark是否安裝成功。
cd /usr/local/spark bin/run-example SparkPi 2>&1 | grep "Pi is"
執行結果如下圖所示,可以得到π 的 14位小數近似值:

Spark Pi計算結果
5. 安裝hive
Hive是一個架構在Hadoop之上的資料倉庫基礎工具,用來處理結構化資料,為大資料查詢和分析提供方便。最初,Hive是由Facebook開發,後來由Apache軟體基金會開發,並作為進一步將它作為名義下Apache Hive為一個開源專案。Hive 不是一個關係資料庫,也不是一個設計用於聯機事務處(OLTP)實時查詢和行級更新的語言。簡單的說,Hive就是在Hadoop上架了一層SQL介面,可以將SQL翻譯成MapReduce去Hadoop上執行,這樣就使得資料開發和分析人員很方便的使用SQL來完成海量資料的統計和分析,而不必使用程式語言開發MapReduce那麼麻煩。
5.1. Hive安裝
下載 apache-hive-1.2.2-bin.tar.gz 檔案,並將檔案移到/usr/local目錄下
mv apache-hive-1.2.2-bin.tar.gz /usr/local
解壓
tar -zxvf apache-hive-1.2.2-bin.tar.gz
資料夾重新命名
mv apache-hive-1.2.2 hive
編輯/etc/profile檔案,配置環境變數
vim /etc/profile
在/etc/profile檔案尾行新增如下內容:
export HIVE_HOME=/usr/local/hive export PATH=$PATH:$HIVE_HOME/bin
編輯完成後,再執行source命令使上述配置在當前終端立即生效,命令如下:
source /etc/profile
5.2. 安裝並配置MySQL
我們採用MySQL資料庫儲存Hive的元資料,而不是採用Hive自帶的derby來儲存元資料。ubuntu下Mysql的安裝比較簡單,直接執行如下命令。在安裝過程中,會要求配置使用者名稱和密碼,這個一定要記住。
apt-get install mysql-server
啟動並登陸mysql shell
service mysql start mysql -u root -p#登陸shell介面
新建hive資料庫
#這個hive資料庫與hive-site.xml中localhost:3306/hive的hive對應,用來儲存hive元資料 mysql> create database hive;
將hive資料庫的字元編碼設定為latin1(重要)
mysql> alter database hive character set latin1;
5.3. Hive配置
修改/usr/local/hive/conf下的hive-site.xml,執行如下命令:
cd /usr/local/hive/conf mv hive-default.xml.template hive-default.xml
上面命令是將hive-default.xml.template重新命名為hive-default.xml,然後,使用vim編輯器新建一個配置檔案hive-site.xml,命令如下:
cd /usr/local/hive/conf vim hive-site.xml
在hive-site.xml中新增如下配置資訊,其中:USERNAME和PASSWORD是MySQL的使用者名稱和密碼。
<?xml version="1.0" encoding="UTF-8" standalone="no"?> <?xml-stylesheet type="text/xsl" href="configuration.xsl"?> <configuration> <property> <name>javax.jdo.option.ConnectionURL</name> <value>jdbc:mysql://localhost:3306/hive?createDatabaseIfNotExist=true</value> <description>JDBC connect string for a JDBC metastore</description> </property> <property> <name>javax.jdo.option.ConnectionDriverName</name> <value>com.mysql.jdbc.Driver</value> <description>Driver class name for a JDBC metastore</description> </property> <property> <name>javax.jdo.option.ConnectionUserName</name> <value>USERNAME</value> <description>username to use against metastore database</description> </property> <property> <name>javax.jdo.option.ConnectionPassword</name> <value>PASSWORD</value> <description>password to use against metastore database</description> </property> </configuration>
然後,按鍵盤上的“ESC”鍵退出vim編輯狀態,再輸入:wq,儲存並退出vim編輯器。由於Hive在連線MySQL時需要 JDBC驅動 ,所以首先需要下載對應版本的驅動,然後將驅動移動到/usr/local/hive/lib中。
#解壓 tar -zxvf mysql-connector-java-5.1.47.tar.gz #將mysql-connector-java-5.1.47.tar.gz拷貝到/usr/local/hive/lib目錄下 cp mysql-connector-java-5.1.47/mysql-connector-java-5.1.47-bin.jar /usr/local/hive/lib
啟動hive(啟動hive之前,請先啟動hadoop叢集)。
./usr/local/hadoop/sbin/start-all.sh #啟動hadoop hive#啟動hive
5.4. Spark和Hive的整合
Hive的計算引擎預設為MapReduce,如果想要用Spark作為Hive的計算引擎,可以參考文章 編譯Spark原始碼支援Hive並部署
6. 結語
本文介紹了大資料環境的搭建過程,旨在讓學弟學妹們少踩坑。後面,作者將為大家奉獻如何利用Java+Scala來開發大資料應用。如果覺得文章有用的話,別忘記點贊哦O(∩_∩)O~!