spark基礎知識之搭建環境

                           spark基礎知識之搭建環境<一>

本文詳細講解如何搭建hadoop、zookeeper、hbase和spark的集羣環境,這裏我是在本地虛擬機上搭建的集羣,但是和實際環境的配置差不多。我會從零開始搭建並且儘量寫得詳細,所以還會講到很多配置linux環境的東西,希望大家不要煩,務必按照步驟一步步做下去。
本文主要講了以下內容:

Linux系統的一些基礎配置 安裝jdk 配置SSH免登陸 hadoop的安裝和配置 zookeeper集羣的安裝配置 hbase的安裝和配置 spark的安裝和配置

1 使用Vmware安裝Linux系統

這個很easy,軟件和操作步驟請自行搜索,我安裝的ubuntu系統,三個主機的名稱分別是master、slave1、slave2,用戶名統一都是trigl,後面設置ssh免登錄需要用戶名是相同的否則就會出錯。後面的很多配置這三臺主機都是相同的,直接複製配置文件即可,這裏教大家一下不同主機之間傳輸文件(文件夾)的命令:

?
1
scp -r 本主機文件路徑 其他主機用戶名@其他主機IP:文件父目錄

如將master的jdk的tar包傳給slave1,命令如下:

?
1
scp -r /data/install/java/jdk-7u45-linux-x64.tar.gz trigl@192.168.79.133:/data/install/java

2 安裝xshell和xftp

xshell用於連接linux系統並輸入命令,xftp用於向linux系統傳輸文件,安裝比較簡單,請自行搜索。
我安裝了ubuntu系統後首次用xshell連接是連不上的,如圖:

這裏寫圖片描述

這是由於新裝的系統沒有ssh服務,使用下面命令下載安裝:<喎�"/kf/ware/vc/" target="_blank" class="keylink">vcD4NCjxwcmUgY2xhc3M9"brush:java;"> sudo apt-get install openssh-server

安裝完成以後用xshell就可以連接上了

3 解決ubuntu自帶VI編輯器不好用的問題

使用ubuntu自帶的vi來編輯文件的時候,方向鍵會變成ABCD,解決方法如下:
編輯 /etc/vim/vimrc.tiny ,將“set compatible”改爲“set nocompatible”,在這句話的下面加上“set backspace=2”,如下:

這裏寫圖片描述

4 分別修改三臺主機的hosts文件和主機名

1、修改hosts文件
編輯hosts文件:

?
1
sudo vi /etc/hosts

添加下面內容:

?
1
2
3
192.168.79.131 master
192.168.79.132 slave1
192.168.79.133 slave2

這樣就配置好了域名,在後面配置需要ip時我們可以直接用域名來方便地替換ip。

2、修改主機名
分別修改三臺主機 /etc/hostname 的內容爲master、slave1、slave2

注意主機名和hosts文件是沒有關係的,hosts文件用來表示域名和ip的對應關係,而主機名就是系統顯示的名稱

5 新建安裝目錄並更改所屬用戶和組

1、新建應用的安裝目錄

?
1
sudo mkdir -p /data/install

2、更改該安裝目錄所屬用戶和組
例如將目錄歸屬爲trigl用戶和trigl用戶組:

?
1
sudo chown -R trigl:trigl /data

對slave1和slave2做相同操作,更改用戶和組以後對該目錄就有了所有權限,後續輸入命令不再需要加sudo了

6 安裝jdk

hadoop等的搭建都依賴於jdk,所以需要先安裝jdk

1、到官網下載jdk:http://www.oracle.com/technetwork/cn/java/javase/downloads/jdk7-downloads-1880260.html,我下載的是 jdk-7u75-linux-x64.tar.gz

2、下載好的tar包放在 /data/install/java 目錄並解壓:

?
1
tar -xvf jdk-7u75-linux-x64.tar.gz

3、配置環境變量
首先進入編輯Linux配置環境變量的文件:

?
1
sudo vi /etc/profile

在裏面添加如下內容:

?
1
2
3
export JAVA_HOME=/data/install/java/jdk1.7.0_45
export PATH=$JAVA_HOME/bin:$JAVA_HOME/jre/bin:$PATH
export CLASSPATH=$CLASSPATH:.:$JAVA_HOME/lib:$JAVA_HOME/jre/lib

4、使環境變量立刻生效:

?
1
source /etc/profile

7 配置SSH免登陸

關於爲什麼需要配置SSH免登陸,我這裏僅給出具體的配置方式

1、生成SSH的公鑰,命令如下,三臺主機都要執行一次:

?
1
ssh-keygen -t rsa

讓輸入內容直接回車即可,執行以後會在 /home/trigl/.ssh/(家目錄/.ssh) 下生成id_rsa和id_rsa.pub文件

2、將主機slave1和slave2在上一步驟生成的id_rsa.pub文件傳到主機master的 /home/trigl/.ssh/ 下面,爲了防止覆蓋,重命名爲id_rsa.pub.slave1和id_rsa.pub.slave2

?
1
2
scp id_rsa.pub trigl@master:~/.ssh/id_rsa.pub.slave1
scp id_rsa.pub trigl@master:~/.ssh/id_rsa.pub.slave2

3、在主機master的 /home/trigl/.ssh/ 目錄下分別將id_rsa.pub、id_rsa.pub.slave1和id_rsa.pub.slave2追加到authorized_keys文件中

?
1
2
3
cat id_rsa.pub >> authorized_keys
cat id_rsa.pub.slave1 >> authorized_keys
cat id_rsa.pub.slave2 >> authorized_keys

這樣就生成了一個可以同時驗證master、slave1和slave2的公鑰文件

4、將上一步生成的authorized_keys文件分別傳到slave1和slave2的/home/trigl/.ssh/下面

?
1
2
scp authorized_keys trigl@slave1:~/.ssh
scp authorized_keys trigl@slave2:~/.ssh

5、驗證
驗證master連接slave1:

?
1
ssh slave1

如果沒有讓輸入密碼且成功切換到slave1的終端,說明配置成功,驗證連接slave2類似

8 hadoop的安裝和配置

1、下載hadoop
首先到Apache官網(http://www.apache.org/dyn/closer.cgi/hadoop/common/)複製下載地址,然後進入 /data/install/apache 目錄下面執行以下命令直接進行下載:

?
1
wget http://mirror.bit.edu.cn/apache/hadoop/common/stable/hadoop-2.7.3.tar.gz

下載完成後進行解壓:

?
1
tar -xvf hadoop-2.7.3.tar.gz

2、配置hadoop
進入hadoop的配置目錄:

?
1
cd /data/install/apache/hadoop-2.7.3/etc/hadoop/

需要修改的配置文件爲:core-site.xml、hdfs-site.xml、yarn-site.xml、mapred-site.xml、slaves、hadoop-env.sh、yarn-env.sh

core-site.xml

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
<configuration>
    <property>
        <name>fs.default.name</name>
        <value>hdfs://master:9000</value>
    </property>
    <property>
        <name>hadoop.tmp.dir</name>
        <value>file:/data/install/apache/hadoop-2.7.3/tmp</value>
    </property>
    <property>
        <name>io.file.buffer.size</name>
        <value>131702</value>
    </property>
</configuration>

hdfs-site.xml

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
<configuration>
    <property>
        <name>dfs.namenode.name.dir</name>
        <value>file:/data/install/apache/hadoop-2.7.3/hdfs/name</value>
    </property>
    <property>
        <name>dfs.datanode.data.dir</name>
        <value>file:/data/install/apache/hadoop-2.7.3/hdfs/data</value>
    </property>
    <property>
        <name>dfs.replication</name>
        <value>1</value>
    </property>
    <property>
        <name>dfs.namenode.secondary.http-address</name>
        <value>master:9001</value>
    </property>
    <property>
        <name>dfs.webhdfs.enabled</name>
        <value>true</value>
    </property>
    <property>
        <name>dfs.namenode.datanode.registration.ip-hostname-check</name>
        <value>false</value>
    </property>
</configuration>

yarn-site.xml

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
<configuration>    <property>
        <name>yarn.nodemanager.auxservices.mapreduce.shuffle.class</name>
        <value>org.apache.hadoop.mapred.ShuffleHandler</value>
    </property>
    <property>
        <name>yarn.resourcemanager.address</name>
        <value>master:8032</value>
    </property>
    <property>
        <name>yarn.resourcemanager.scheduler.address</name>
        <value>master:8030</value>
    </property>
    <property>
        <name>yarn.resourcemanager.resource-tracker.address</name>
        <value>master:8031</value>
    </property>
    <property>
        <name>yarn.resourcemanager.admin.address</name>
        <value>master:8033</value>
    </property>
    <property>
        <name>yarn.resourcemanager.webapp.address</name>
        <value>master:8088</value>
    </property>
</configuration>

mapred-site.xml

通過cp etc/hadoop/mapred-site.xml.template etc/hadoop/mapred-site.xml創建etc/hadoop/mapred-site.xml,內容改爲如下:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
<configuration>
    <property>
        <name>mapreduce.framework.name</name>
        <value>yarn</value>
    </property>
    <property>
        <name>mapreduce.jobhistory.address</name>
        <value>master:10020</value>
    </property>
    <property>
        <name>mapreduce.jobhistory.webapp.address</name>
        <value>master:19888</value>
    </property>
</configuration>

slaves

?
1
2
slave1
slave2

hadoop-env.shyarn-env.sh

?
1
export JAVA_HOME=/data/install/java/jdk1.7.0_45

配置文件修改完以後,將master下hadoop文件夾複製到slave1和slave2中,記得將配置文件裏面的域名master修改爲slave1和slave2

?
1
2
scp -r /data/install/apache/hadoop-2.7.3 trigl@slave1:/data/install/apache/
scp -r /data/install/apache/hadoop-2.7.3 trigl@slave2:/data/install/apache/

3、運行hadoop

啓動hadoop的命令都在master上執行

(1)初始化hadoop(清空hdfs數據):

?
1
2
3
rm -rf /data/install/apache/hadoop-2.7.3/hdfs/*
rm -rf /data/install/apache/hadoop-2.7.3/tmp/*
/data/install/apache/hadoop-2.7.3/bin/hdfs namenode -format

(2)啓停hdfs:

?
1
2
/data/install/apache/hadoop-2.7.3/sbin/start-dfs.sh
/data/install/apache/hadoop-2.7.3/sbin/stop-dfs.sh

驗證是否啓動成功,在master輸入 jps,應當存在namenode和secondary namenode

這裏寫圖片描述

在slave1和slave2輸入jps,應當存在datanode

這裏寫圖片描述

進一步驗證,訪問:http://192.168.79.131:50070/dfshealth.html(192.168.79.131是master的ip),如圖:

這裏寫圖片描述

(3)啓停yarn

?
1
2
/data/install/apache/hadoop-2.7.3/sbin/start-yarn.sh
/data/install/apache/hadoop-2.7.3/sbin/stop-yarn.sh

在master輸入 jps,應當存在resourcemanager

這裏寫圖片描述

在slave1和slave2輸入jps,應當存在nodemanager

這裏寫圖片描述

訪問:http://192.168.79.131:8088/cluster

這裏寫圖片描述

9 zookeeper集羣的安裝配置

1、下載
到http://apache.fayea.com/zookeeper/stable/下載安裝包並解壓:

?
1
wget http://apache.fayea.com/zookeeper/stable/zookeeper-3.4.9.tar.gz

2、配置

(1)建立數據目錄

?
1
mkdir /data/install/apache/zookeeper-3.4.9/data

(2)進入conf目錄創建並修改zoo.cfg文件

?
1
cp zoo_sample.cfg zoo.cfg

修改以後的內容爲:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
# The number of milliseconds of each tick
tickTime=2000
# The number of ticks that the initial
# synchronization phase can take
initLimit=10
# The number of ticks that can pass between
# sending a request and getting an acknowledgement
syncLimit=5
# the directory where the snapshot is stored.
# do not use /tmp for storage, /tmp here is just
# example sakes.
dataDir=/data/install/apache/zookeeper-3.4.9/data
# the port at which the clients will connect
clientPort=2181
# the maximum number of client connections.
# increase this if you need to handle more clients
#maxClientCnxns=60
#
# Be sure to read the maintenance section of the
# administrator guide before turning on autopurge.
#
# http://zookeeper.apache.org/doc/current/zookeeperAdmin.html#sc_maintenance
#
# The number of snapshots to retain in dataDir
#autopurge.snapRetainCount=3
# Purge task interval in hours
# Set to "0" to disable auto purge feature
#autopurge.purgeInterval=1
server.0=master:2888:3888
server.1=slave1:2888:3888
server.2=slave2:2888:3888

這裏還需要在數據目錄/data/install/apache/zookeeper-3.4.9/data下面新建名爲myid的文件,各個主機對應的內容是不同的,master的內容是1,slave1的內容是2,slave2的內容是3,分別對應server.x中的x

(3)設置環境變量:/etc/profile添加如下內容

?
1
2
export ZOOKEEPER_HOME=/home/hadoop/platform/zookeeper-3.4.5
export PATH=$PATH:$ZOOKEEPER_HOME/bin:$ZOOKEEPER_HOME/conf

別忘了source一下讓環境變量生效

?
1
source /etc/profile

3、啓停zookeeper

?
1
2
/data/install/apache/zookeeper-3.4.9/bin/zkServer.sh start
/data/install/apache/zookeeper-3.4.9/bin/zkServer.sh stop

輸入jps檢測一下:

這裏寫圖片描述

查看各個主機的狀態:

?
1
sh bin/zkServer.sh status

這裏寫圖片描述

這裏如果報錯:

?
1
bin/zkServer.sh: 81: /data/install/apache/zookeeper-3.4.9/bin/zkEnv.sh: Syntax error: "(" unexpected (expecting "fi")

10 hbase的安裝和配置

1、下載
首先到http://apache.fayea.com/hbase/stable/下載穩定版安裝包並解壓:

?
1
wget http://apache.fayea.com/hbase/stable/hbase-1.2.2-bin.tar.gz

2、配置

主要修改conf目錄下的三個文件:hbase-env.sh、hbase-site.xml、regionservers

hbase-env.sh

?
1
2
3
export JAVA_HOME=/data/install/java/jdk1.7.0_45
export HBASE_MANAGES_ZK=true
export HBASE_LOG_DIR=/data/install/apache/hbase-1.2.2/logs

hbase-site.xml

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
<configuration>
    <property>
        <name>hbase.rootdir</name>
        <value>hdfs://master:9000/hbase</value>
    </property>
    <property>
        <name>hbase.cluster.distributed</name>
        <value>true</value>
    </property>
    <property>
        <name>hbase.zookeeper.quorum</name>
        <value>master,slave1,slave2</value>
    </property>
    <property>
        <name>hbase.master.maxclockskew</name>
        <value>180000</value>
        <description>Time difference of regionserver from master</description>
    </property>
</configuration>

regionservers

?
1
2
slave1
slave2

3、啓停hbase

?
1
2
/data/install/apache/hbase-1.2.2/bin/start-hbase.sh
/data/install/apache/hbase-1.2.2/bin/stop-hbase.sh

master輸入jps:

這裏寫圖片描述

slave1和slave2輸入jps:

這裏寫圖片描述

訪問:http://192.168.79.131:16010

這裏寫圖片描述

4、hbase的一些基本命令

名稱 命令表達式
創建表 create ‘表名稱’, ‘列名稱1’,’列名稱2’,’列名稱N’
添加記錄 put ‘表名稱’, ‘行名稱’, ‘列名稱:’, ‘值’
查看記錄 get ‘表名稱’, ‘行名稱’
查看錶中的記錄總數 count ‘表名稱’
刪除記錄 delete ‘表名’ ,’行名稱’ , ‘列名稱’
刪除一張表 disable ‘表名稱’
drop ‘表名稱’
查看所有記錄 scan “表名稱”

首先進入hbase shell

?
1
./bin/hbase shell

(1)創建表

?
1
creat 'test','address'

(2)添加記錄

?
1
2
put'test','row1','address:province','zhejiang'
put 'test','row2','address:city','hangzhou'

(3)查看記錄

?
1
get 'test','row1'

(4)查看錶中的記錄總數

?
1
count 'test'

(5)刪除記錄

?
1
delete 'test','row1','address'

(6)刪除一張表

?
1
2
disable 'test'
drop 'test'

(7)查看所有記錄

?
1
scan 'test'

11 spark的安裝和配置

1、下載
首先在http://spark.apache.org/downloads.html下載指定hadoop版本的安裝包,然後解壓縮

2、配置

創建並修改conf目錄下的配置文件 spark-env.sh,slaves

spark-env.sh

?
1
cp spark-env.sh.template spark-env.sh

修改內容爲:

?
1
2
3
4
export JAVA_HOME=/data/install/java/jdk1.7.0_45
export HADOOP_HOME=/data/install/apache/hadoop-2.7.3
export HADOOP_CONF_DIR=$HADOOP_HOME/etc/hadoop
export HBASE_HOME=/data/install/apache/hbase-1.2.2

slaves

?
1
cp slaves.template slaves

修改內容爲:

?
1
2
slave1
slave2

3、啓停spark

?
1
2
/data/install/apache/spark-2.0.0-bin-hadoop2.7/sbin/start-all.sh
/data/install/apache/spark-2.0.0-bin-hadoop2.7/sbin/stop-all.sh

在master上輸入jps:

這裏寫圖片描述

在slave1和slave2上輸入jps:

這裏寫圖片描述

訪問:http://192.168.79.131:8080/

這裏寫圖片描述


以上,就完成了整個集羣環境的搭建。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章