1.選取三臺服務器(CentOS系統64位)java
114.55.246.88 主節點node
114.55.246.77 從節點linux
114.55.246.93 從節點web
以後的操做若是是用普通用戶操做的話也必須知道root用戶的密碼,由於有些操做是得用root用戶操做。若是是用root用戶操做的話就不存在以上問題。服務器
我是用root用戶操做的。app
2.修改hosts文件ssh
修改三臺服務器的hosts文件。webapp
vi /etc/hosts分佈式
在原文件的基礎最後面加上:工具
114.55.246.88 Master 114.55.246.77 Slave1 114.55.246.93 Slave2
修改完成後保存執行以下命令。
source /etc/hosts
3.ssh無密碼驗證配置
3.1安裝和啓動ssh協議
咱們須要兩個服務:ssh和rsync。
能夠經過下面命令查看是否已經安裝:
rpm -qa|grep openssh
rpm -qa|grep rsync
若是沒有安裝ssh和rsync,能夠經過下面命令進行安裝:
yum install ssh (安裝ssh協議)
yum install rsync (rsync是一個遠程數據同步工具,可經過LAN/WAN快速同步多臺主機間的文件)
service sshd restart (啓動服務)
3.2 配置Master無密碼登陸全部Salve
配置Master節點,如下是在Master節點的配置操做。
1)在Master節點上生成密碼對,在Master節點上執行如下命令:
ssh-keygen -t rsa -P ''
生成的密鑰對:id_rsa和id_rsa.pub,默認存儲在"/root/.ssh"目錄下。
2)接着在Master節點上作以下配置,把id_rsa.pub追加到受權的key裏面去。
cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
3)修改ssh配置文件"/etc/ssh/sshd_config"的下列內容,將如下內容的註釋去掉:
RSAAuthentication yes # 啓用 RSA 認證
PubkeyAuthentication yes # 啓用公鑰私鑰配對認證方式
AuthorizedKeysFile .ssh/authorized_keys # 公鑰文件路徑(和上面生成的文件同)
4)重啓ssh服務,才能使剛纔設置有效。
service sshd restart
5)驗證無密碼登陸本機是否成功。
ssh localhost
6)接下來的就是把公鑰複製到全部的Slave機器上。使用下面的命令進行復制公鑰:
scp /root/.ssh/id_rsa.pub root@Slave1:/root/
scp /root/.ssh/id_rsa.pub root@Slave2:/root/
接着配置Slave節點,如下是在Slave1節點的配置操做。
1)在"/root/"下建立".ssh"文件夾,若是已經存在就不須要建立了。
mkdir /root/.ssh
2)將Master的公鑰追加到Slave1的受權文件"authorized_keys"中去。
cat /root/id_rsa.pub >> /root/.ssh/authorized_keys
3)修改"/etc/ssh/sshd_config",具體步驟參考前面Master設置的第3步和第4步。
4)用Master使用ssh無密碼登陸Slave1
ssh 114.55.246.77
5)把"/root/"目錄下的"id_rsa.pub"文件刪除掉。
rm –r /root/id_rsa.pub
重複上面的5個步驟把Slave2服務器進行相同的配置。
3.3 配置全部Slave無密碼登陸Master
如下是在Slave1節點的配置操做。
1)建立"Slave1"本身的公鑰和私鑰,並把本身的公鑰追加到"authorized_keys"文件中,執行下面命令:
ssh-keygen -t rsa -P ''
cat /root/.ssh/id_rsa.pub >> /root/.ssh/authorized_keys
2)將Slave1節點的公鑰"id_rsa.pub"複製到Master節點的"/root/"目錄下。
scp /root/.ssh/id_rsa.pub root@Master:/root/
如下是在Master節點的配置操做。
1)將Slave1的公鑰追加到Master的受權文件"authorized_keys"中去。
cat ~/id_rsa.pub >> ~/.ssh/authorized_keys
2)刪除Slave1複製過來的"id_rsa.pub"文件。
rm –r /root/id_rsa.pub
配置完成後測試從Slave1到Master無密碼登陸。
ssh 114.55.246.88
按照上面的步驟把Slave2和Master之間創建起無密碼登陸。這樣,Master能無密碼驗證登陸每一個Slave,每一個Slave也能無密碼驗證登陸到Master。
4.安裝基礎環境(JAVA和SCALA環境)
4.1 Java1.8環境搭建
1)下載jdk-8u121-linux-x64.tar.gz解壓
tar -zxvf jdk-8u121-linux-x64.tar.gz
2)添加Java環境變量,在/etc/profile中添加:
export JAVA_HOME=/usr/local/jdk1.8.0_121 PATH=$JAVA_HOME/bin:$PATH CLASSPATH=.:$JAVA_HOME/lib/rt.jar export JAVA_HOME PATH CLASSPATH
3)保存後刷新配置
source /etc/profile
4.2 Scala2.11.8環境搭建
1)下載scala安裝包scala-2.11.8.rpm安裝
rpm -ivh scala-2.11.8.rpm
2)添加Scala環境變量,在/etc/profile中添加:
export SCALA_HOME=/usr/share/scala
export PATH=$SCALA_HOME/bin:$PATH
3)保存後刷新配置
source /etc/profile
5.Hadoop2.7.3徹底分佈式搭建
如下是在Master節點操做:
1)下載二進制包hadoop-2.7.3.tar.gz
2)解壓並移動到相應目錄,我習慣將軟件放到/opt目錄下,命令以下:
tar -zxvf hadoop-2.7.3.tar.gz
mv hadoop-2.7.3 /opt
3)修改相應的配置文件。
修改/etc/profile,增長以下內容:
export HADOOP_HOME=/opt/hadoop-2.7.3/ export PATH=$PATH:$HADOOP_HOME/bin export PATH=$PATH:$HADOOP_HOME/sbin export HADOOP_MAPRED_HOME=$HADOOP_HOME export HADOOP_COMMON_HOME=$HADOOP_HOME export HADOOP_HDFS_HOME=$HADOOP_HOME export YARN_HOME=$HADOOP_HOME export HADOOP_ROOT_LOGGER=INFO,console export HADOOP_COMMON_LIB_NATIVE_DIR=$HADOOP_HOME/lib/native export HADOOP_OPTS="-Djava.library.path=$HADOOP_HOME/lib"
修改完成後執行:
source /etc/profile
修改$HADOOP_HOME/etc/hadoop/hadoop-env.sh,修改JAVA_HOME 以下:
export JAVA_HOME=/usr/local/jdk1.8.0_121
修改$HADOOP_HOME/etc/hadoop/slaves,將原來的localhost刪除,改爲以下內容:
Slave1
Slave2
修改$HADOOP_HOME/etc/hadoop/core-site.xml
<configuration> <property> <name>fs.defaultFS</name> <value>hdfs://Master:9000</value> </property> <property> <name>io.file.buffer.size</name> <value>131072</value> </property> <property> <name>hadoop.tmp.dir</name> <value>/opt/hadoop-2.7.3/tmp</value> </property> </configuration>
修改$HADOOP_HOME/etc/hadoop/hdfs-site.xml
<configuration> <property> <name>dfs.namenode.secondary.http-address</name> <value>Master:50090</value> </property> <property> <name>dfs.replication</name> <value>2</value> </property> <property> <name>dfs.namenode.name.dir</name> <value>file:/opt/hadoop-2.7.3/hdfs/name</value> </property> <property> <name>dfs.datanode.data.dir</name> <value>file:/opt/hadoop-2.7.3/hdfs/data</value> </property> </configuration>
複製template,生成xml,命令以下:
cp mapred-site.xml.template mapred-site.xml
修改$HADOOP_HOME/etc/hadoop/mapred-site.xml
<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.address</name> <value>Master:19888</value> </property> </configuration>
修改$HADOOP_HOME/etc/hadoop/yarn-site.xml
<configuration> <property> <name>yarn.nodemanager.aux-services</name> <value>mapreduce_shuffle</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>
4)複製Master節點的hadoop文件夾到Slave1和Slave2上。
scp -r /opt/hadoop-2.7.3 root@Slave1:/opt
scp -r /opt/hadoop-2.7.3 root@Slave2:/opt
5)在Slave1和Slave2上分別修改/etc/profile,過程同Master同樣。
6)在Master節點啓動集羣,啓動以前格式化一下namenode:
hadoop namenode -format
啓動:
/opt/hadoop-2.7.3/sbin/start-all.sh
至此hadoop的徹底分佈式環境搭建完畢。
7)查看集羣是否啓動成功:
jps
Master顯示:
SecondaryNameNode
ResourceManager
NameNode
Slave顯示:
NodeManager
DataNode
6.Spark2.1.0徹底分佈式環境搭建
如下操做都在Master節點進行。
1)下載二進制包spark-2.1.0-bin-hadoop2.7.tgz
2)解壓並移動到相應目錄,命令以下:
tar -zxvf spark-2.1.0-bin-hadoop2.7.tgz
mv hadoop-2.7.3 /opt
3)修改相應的配置文件。
修改/etc/profie,增長以下內容:
export SPARK_HOME=/opt/spark-2.1.0-bin-hadoop2.7/
export PATH=$PATH:$SPARK_HOME/bin
複製spark-env.sh.template成spark-env.sh
cp spark-env.sh.template spark-env.sh
修改$SPARK_HOME/conf/spark-env.sh,添加以下內容:
export JAVA_HOME=/usr/local/jdk1.8.0_121 export SCALA_HOME=/usr/share/scala export HADOOP_HOME=/opt/hadoop-2.7.3 export HADOOP_CONF_DIR=/opt/hadoop-2.7.3/etc/hadoop export SPARK_MASTER_IP=114.55.246.88 export SPARK_MASTER_HOST=114.55.246.88 export SPARK_LOCAL_IP=114.55.246.88 export SPARK_WORKER_MEMORY=1g export SPARK_WORKER_CORES=2 export SPARK_HOME=/opt/spark-2.1.0-bin-hadoop2.7 export SPARK_DIST_CLASSPATH=$(/opt/hadoop-2.7.3/bin/hadoop classpath)
複製slaves.template成slaves
cp slaves.template slaves
修改$SPARK_HOME/conf/slaves,添加以下內容:
Master
Slave1
Slave2
4)將配置好的spark文件複製到Slave1和Slave2節點。
scp /opt/spark-2.1.0-bin-hadoop2.7 root@Slave1:/opt
scp /opt/spark-2.1.0-bin-hadoop2.7 root@Slave2:/opt
5)修改Slave1和Slave2配置。
在Slave1和Slave2上分別修改/etc/profile,增長Spark的配置,過程同Master同樣。
在Slave1和Slave2修改$SPARK_HOME/conf/spark-env.sh,將export SPARK_LOCAL_IP=114.55.246.88改爲Slave1和Slave2對應節點的IP。
6)在Master節點啓動集羣。
/opt/spark-2.1.0-bin-hadoop2.7/sbin/start-all.sh
7)查看集羣是否啓動成功:
jps
Master在Hadoop的基礎上新增了:
Master
Slave在Hadoop的基礎上新增了:
Worker