hadoop-2.2.0+spark1.1.0安裝過程
hadoop-2.2.0+spark1.1.0安裝過程
首先介紹一下整個過程中需要用到的一些軟件
虛擬機vmwareworkstation 10
Linux版本 CentOS 6.4
Jdk jdk-7u21-linux-i586.tar.gz
終端SecureCRT
Hadoop2.2.0
Spark1.1.0
scala2.10.4
本人是采用在32位的windowns下安裝虛擬機,在虛擬機中建立節點部署hadoop和spark的,spark比較耗內存,所以需要較大內存。
整體設計:一臺namenode,namenode同時當datanode,另外2臺datanode,如果物理機是linux系統,可以拿物理機當客戶端,spark集群的時候,通過客戶端去調用。這邊我選擇再多創建一個虛擬機當客戶端。
10.136.7.171 |
namenode |
10.136.7.172 |
datanode1 |
10.136.7.173 |
datanode2 |
10.136.7.174 |
customer |
整體介紹一下整個流程:
新建虛擬機—>網絡設置—>關閉防火墻及其他服務—>設置成文本啟動方式—> 修改配置文件—>修改hosts—>安裝jdk—>安裝scala—>環境變量設置-->安裝hadoop—>修改 hadoop的配置文件(core-site.xml,hdfs-site.xml,mapred-site.xml,yarn-site.xml, hadoop-env.sh)-->復制整個虛擬機文件—>修改復制后的虛擬機文件—>ssh無密碼登錄設置--> hadoop集群的啟動—>啟動yarn—>hadoop源碼編譯--> spark安裝—>修改配置文件(slaves,spark-env.sh)-->拷貝spark到各個節點—>spark集群啟動 -- >Spark Standalone HA 部署—>spark工具查看
具體操作:
在vm中新建虛擬機,選擇linux類型,3G內存,動態分配硬盤。網絡設置,選擇橋接網卡。
安裝好CentOS6.4之后,首先是進行網絡設置,IPV4setting中選擇manual,設置成和物理機在同一個網段上,測試能否上網。
進入終端,關閉防火墻和一些其他服務。
chkconfig iptables off
chkconfig ip6tables off
chkconfig postfix off
chkconfig bluetooth off
chkconfig --list
檢查sshd 是否為off off on on on on off
啟動時設置成文本方式
vi /etc/inittab
移動到最后,5改成3 5是以窗口方式啟動3是以文本方式啟動
重啟虛擬機shutdown -h now
新建一個目錄,之后將軟件安裝在這個目錄下(也可自行建立其他目錄)
mkdir -p /app/hadoop
一些文件句柄的設置,為以后做準備,也可跳過此步驟
vi /etc/security/limits.conf
插入最后
hadoop - nofile 32768
hadoop soft/hard nproc 32000
vi /etc/pam.d/login
插入最后
sessionrequired pam_limits.so
vi/etc/ssh/sshd_config
打開三個開關
vi/etc/hosts
在最上面增加
192.168.1.171namenode
192.168.1.172datanode1
192.168.1.173datanode2
軟件安裝
安裝java
cd 進入安裝java的目錄(這邊通過secureCRT將一些需要安裝的軟件傳到虛擬機,也可在虛擬機中自行下載)
tar-zxf /app/software/jdk-7u21-linux-i586.tar.gz
同時記住java安裝的目錄。
安裝scala
進入安裝目錄
tar-zxf /scala
為方便以后輸命令可改目錄名 mv scala-2.10.4 scala2104
修改用戶權限 chown -R root:root scala2104/
環境變量的設置
vi/etc/profile
加在最后
exportJAVA_HOME=/usr/lib/java/jdk1.7.0_21
export JRE_HOME=/usr/lib/java/jdk1.7.0_21/jre
export SCALA_HOME=/app/scala2104
export HADOOP_COMMON_HOME=/app/hadoop/hadoop220
export HADOOP_CONF_DIR=/app/hadoop/hadoop220/etc/hadoop
export YARN_CONF_DIR=/app/hadoop/hadoop220/etc/hadoop
export CLASSPATH=.:$JAVA_HOME/lib:$JAVA_HOME/lib/tools.jar
exportPATH=${JAVA_HOME}/bin:${JRE_HOME}/bin:${SCALA_HOME}/bin:${HADOOP_COMMON_HOME}/bin:${HADOOP_COMMON_HOME}/sbin:$PATH
刷新更改的環境變量配置 source /etc/profile
測試java是否安裝正確 java -version
測試scala是否安裝正確 scala -version
安裝hadoop-2.2.0
tarzxf /app/software/hadoop-2.2.0.tar.gz
mvhadoop-2.2.0 hadoop220
進入hadoop配置文件目錄,進行修改
cdhadoop220/etc/hadoop/
vi slaves
去掉localhost
加上 namenode
datanode1
datanode2
vicore-site.xml
<configuration>中間加
<property>
<name>fs.defaultFS</name>
<value>hdfs://namenode:8000</value>
</property>
vihdfs-site.xml
<property>
<name>dfs.namenode.name.dir</name>
<value>file:///app/hadoop/hadoop220/mydata/name</value>
</property>
<property>
<name>dfs.datanode.data.dir</name>
<value>file:///app/hadoop/hadoop220/mydata/data</value>
</property>
<property>
<name>dfs.replication</name>
<value>1</value>
</property>
vi mapred-site.xml
<configuration>
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
</configuration>
vi yarn-site.xml
<property>
<name>yarn.resourcemanager.hostname</name>
<value>namenode</value>
</property>
<property>
<name>yarn.resourcemanager.address</name>
<value>${yarn.resourcemanager.hostname}:8032</value>
</property>
<property>
<name>yarn.resourcemanager.scheduler.address</name>
<value>${yarn.resourcemanager.hostname}:8030</value>
</property>
<property>
<name>yarn.resourcemanager.webapp.address</name>
<value>${yarn.resourcemanager.hostname}:8088</value>
</property>
<property>
<name>yarn.resourcemanager.webapp.https.address</name>
<value>${yarn.resourcemanager.hostname}:8090</value>
</property>
<property>
<name>yarn.resourcemanager.resource-tracker.address</name>
<value>${yarn.resourcemanager.hostname}:8031</value>
</property>
<property>
<name>yarn.resourcemanager.admin.address</name>
<value>${yarn.resourcemanager.hostname}:8033</value>
</property>
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
vi hadoop-env.sh
JAVA_HOME=/usr/lib/java/jdk1.7.0_21
重啟虛擬機
記得關掉vm之后再進行復制虛擬機namenode,否則打開之后會報錯。復制整個文件夾,對文件夾進行重命名。之后打開vm,選擇打開文件,選擇復制之后的文件,修改虛擬機的名字,啟動虛擬機,首次啟動會有一個選項,選擇“我已復制虛擬機”
對復制的各個虛擬機均進行一下操作:
啟動復制的虛擬機
修改網卡的配置文件
vi /etc/udev/rules.d/70-persistent-net.rules
里面有兩張網卡,去掉前一個網卡,同時修改name 為eth0 ,同時記住mac地址
vi /etc/sysconfig/network-scripts/ifcfg-eth0
修改里面的HWADDR地址,改為剛才記住的。ip地址改為10.136.7.172
vi /etc/sysconfig/network
hostname改為datanode
關閉虛擬機
修改第三臺
重復上述過程。
三臺都要
修改用戶權限
cd/app
chown-R hadoop:hadoop hadoop
SSH無密碼登錄
每個節點
su -hadoop
生成公鑰 ssh-keygen-t rsa
cd~/.ssh
ls-lsa
公鑰三合一,在namenode上運行
ssh 機器名 cat/home/hadoop/.ssh/id_rsa.pub>>authorized_keys 合成公鑰
ssh namenode cat/home/hadoop/.ssh/id_rsa.pub>>authorized_keys
sshdatanode1 cat /home/hadoop/.ssh/id_rsa.pub>>authorized_keys
sshdatanode2 cat /home/hadoop/.ssh/id_rsa.pub>>authorized_keys
ls-lsa
修改authorized_keys文件屬性為600 ,并發放給各節點
chmod600 authorized_keys
ls-lsa
scp authorized_keyshadoop@datanode1:/home/hadoop/.ssh/
scp authorized_keyshadoop@datanode2:/home/hadoop/.ssh/
scp known_hostshadoop@datanode1:/home/hadoop/.ssh/
scp known_hostshadoop@datanode2:/home/hadoop/.ssh/
同時在三個節點上進行測試無密碼登錄
ssh namenodedate
ssh datanode1date
ssh datanode2date
hadoop集群的啟動
cd/app/hadoop
cdhadoop220/
進行格式化
//bin/hdfsnamenode -format
hadoop namenode-format
啟動hdfs
//sbin/start-dfs.sh
start-dfs.sh
注意查看是否啟動了四個,一個namenode 三個datanode
測試hdfs
bin/hdfsdfs -ls /
bin/hdfsdfs -mkdir -p /dataguru/test
bin/hdfsdfs -ls /dataguru
bin/hdfsdfs -ls /dataguru/test
ls -lsa
上傳一個文件
bin/hdfsdfs -put LICENSE.txt /dataguru/test/
查看bin/hdfs dfs -ls /dataguru/test
啟動yarn
sbin/start-yarn.sh
注意查看是否啟動了四個,一個namenode 三個datanode
jps
查看是否都已啟動
同時在其他節點也查看
jps
url訪問
namenode:50070
yarn:
namenode:8088
關閉hadoop集群
su -hadoop
cd/app/hadoop/hadoop220
sbin/stop-all.sh
hadoop源碼編譯
32位的不需再進行編譯了,64位的需要進行編譯,首次編譯比較耗時間,也可下載編譯過的軟件。
可跳過該編譯部分
在namenode上進行編譯
回到root身份
cd hadoop
解壓hadoop-2.2.0
安裝編譯工具
yum -y install lzo-devel zlib-devel gccautoconf automake libtool
解壓Ant 1.9.2
解壓Maven 3.0.5
解壓ProtocolBuffer 2.5.0 (編譯安裝)
解壓findbugs 2.0.2
解壓CMake 2.8.6 (編譯安裝)
cd ProtocolBuffer 2.5.0 目錄
./configure
make
make check
make install
cd ..
cd CMake 2.8.6目錄
./bootstrap:make:make install
其他編譯軟件環境變量的修改
cd ..
vi /etc/profile
source /etc/profile
驗證版本
ant -version
源碼的bug修改(補丁)
cd /app/hadoop/hadoop220_src
修改該文件,增加一些內容
編譯
cd hadoop220_src
mvn clean package -DskipTests-Pdist,native,docs -Dtar
spark安裝
spark-1.0.0/project/SparkBuild.scala SBT依賴包,配置參數包查看
spark-1.0.0/pom.xml Maven配置參數包查看
cd 進入安裝的目錄
tarzxf /app/software/spark-1.0.0-bin-2.2.0.tgz
mv spark-1.0.0-bin-2.2.0.tgz spark100
cdspark100/conf
節點配置
vislaves
去掉localhost
加入節點
namenode
datanode1
datanode2
運行環境
cpspark-env.sh.template spark-env.sh
修改該文件
vi spark-env.sh
加最后
exportSPARK_MASTER_IP=namenode
export SPARK_MASTER_PORT=7077
export SPARK_WORKER_CORES=1
export SPARK_WORKER_INSTANCES=1
exportSPARK_WORKER_MEMORY=2g
拷貝到各個節點
cd 退到hadoop目錄下
(拷貝時候特別注意,直接從pdf或者課件上拷貝時候很容易出現特殊符號,比如問號,報錯是需要認真看清楚)
scp -rspark100 hadoop@datanode1:/app/hadoop/
scp -rspark100 hadoop@datanode2:/app/hadoop/
啟動集群
cdspark100
sbin/start-all.sh
測試
http://10.136.7.171:8080/
客戶端安裝
scp -r hadoop@namenode:/app/hadoop/spark100 .
客戶端訪問集群
bin/spark-shell--master spark://namenode:7077
關閉集群
spark100目錄下
sbin/stop-all.sh
SparkStandalone HA 部署
基于文件系統的HA
cdconf
spark-env.sh里對SPARK_DAEMON_JAVA_OPTS 設置
vi spark-env.sh
在最后增加一行
exportSPARK_DAEMON_JAVA_OPTS="-Dspark.deploy.recoveryMode=FILESYSTEM-Dspark.deploy.recoveryDirectory=/app/hadoop/spark100/recovery"
將該文件分到各個節點
scp spark-env.shhadoop@DataNode1:/app/hadoop/spark100/conf/
scp spark-env.shhadoop@DataNode2:/app/hadoop/spark100/conf/
測試
cd ..
sbin/start-all.sh
dfs啟動
cd/app/hadoop/hadoop220
sbin/start-dfs.sh
客戶端
bin/spark-shell--master spark://namenode:7077
Spark 工具
(1)spark-shell
(2)spark-submit
參數說明可查看
bin/spark-shell --help
bin/spark-submit--help