1. 程式人生 > >搭建大資料處理叢集(Hadoop,Spark,Hbase)

搭建大資料處理叢集(Hadoop,Spark,Hbase)

搭建Hadoop叢集

配置每臺機器的 /etc/hosts保證每臺機器之間可以互訪。
120.94.158.190 master
120.94.158.191 secondMaster

1、建立hadoop使用者
先建立hadoop組
sudo addgroup hadoop
然後再建一個hadoop使用者加入到hadoop組,(前一個為組,後一個為使用者)
sudo adduser -ingroup hadoop hadoop
然後輸入密碼,接下來一路ENTER
完成建立
配置使用者的環境變數
找到使用者目錄,
cd /home/hadoop
在此目錄下有一個 .bashrc 檔案 ,在檔案末尾後加入

JAVA_HOME=/usr/lib/jvm/java-8-openjdk-amd64 
PATH=$JAVA_HOME/bin:$PATH 
CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar 
export JAVA_HOME 
export PATH 
export CLASSPATH

完成配置

2、建立使用者目錄
cd /home
sudo mkdir hadoop
更改使用者所有者和使用者所屬組
sudo chown hadoop hadoop
sudo chgrp hadoop hadoop

3、配置ssh為無密碼登入

   cd /home/hadoop
   ssh-keygen -t rsa

一路回車,產生一個隱藏資料夾.ssh

cd .ssh

通過ls 可以檢視生成的檔案

 cp id_rsa.pub authorized_keys

現在測試一下
ssh localhost
或ssh master
第一次的時候會出現一些資訊,我們輸入yes來繼續,這會把該伺服器加到你的已知主機的列表中。

4、複製authorized_keys到其它節點上。
為了保證master節點可以無需密碼自動登入其它節點,先在其它節點上執行
sudo hadoop
cd /home/hadoop
ssh-keygen -t rsa
一路回車。
然後回到master,複製authorized_keys到其它節點

scp authorized_keys secondMaster:/home/hadoop/.ssh/

這裡會提示要輸入密碼,輸入hadoop賬號密碼就可以了。
改動你的 authorized_keys檔案的許可許可權

chmod 644 authorized_keys

測試 ssh secondMaster
第一次需要輸入密碼,之後就不需要了。

5、叢集配置
hadoop-env.sh,
yarn-env.sh
export JAVA_HOME=/usr/lib/jvm/java-8-openjdk-amd64

core-site.xml

<configuration>
  <property>
    <name>fs.defaultFS</name>
    <value>hdfs://master:9000</value>
  </property>
</configuration>

hdfs-site.xml

<configuration>
  <property>
    <name>dfs.namenode.secondary.http-address</name>
    <value>master:9001</value>
  </property>
  <property>
    <name>dfs.namenode.name.dir</name>
    <value>file:/home/hadoop/name</value>
  </property>
  <property>
    <name>dfs.datanode.data.dir</name>
    <value>file:/home/hadoop/data</value>
  </property>
  <property>
    <name>dfs.replication</name>
    <value>2</value>
  </property>
  <property>
    <name>dfs.webhdfs.enabled</name>
    <value>true</value>
  </property>

</configuration>

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.webapp.address</name>
    <value>master:19888</value>
  </property>
</configuration>

yarn-site.xml

<configuration>
  <property>
    <name>yarn.nodemanager.aux-services</name>
    <value>mapreduce_shuffle</value>
  </property>
  <property>
    <name>yarn.nodemanager.aux-services.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>

配置 slaves檔案
secondMaster

切換到hadoop使用者

su hadoop

建立目錄

   mkdir tmp
   mkdir name
   mkdir data

把hadoop複製到其它節點上去。

   scp -r ./hadoop secondMaster:/home/hadoop

格式化分散式檔案系統

   cd hadoop
   ./bin/hdfs namenode -format

啟動hadoop

./sbin/start-dfs.sh

此時,master主機上面執行的程序有:namenode,secondarynamenode
在node1 node2 node3主機上面執行的程序有:datanode

 ./sbin/start-yarn.sh

此時,master主機上面執行的程序有:namenode,secondarynamenode,resourcemanager
在node1 node2 node3主機上面執行的程序有:datanode,nodemanager

配置Spark叢集

1、編輯配置檔案spark-env.sh,在此指令碼最後一行加入以下行

export SPARK_DIST_CLASSPATH=$(/home/hadoop/hadoop-2.6.1/bin/hadoop classpath)

其中,/home/hadoop/hadoop-2.6.1是Hadoop安裝目錄

2、接下來編輯conf/slaves檔案,
直接在加入一行

secondMaster

然後把配置好的整個Spark複製到其他節點,如secondMaster

scp -r spark-1.6.0-bin-hadoop2.4/ secondMaster:/home/hadoop/

配置Hbase叢集

1、配置hbase-site.xml

<configuration>
  <property>
    <name>hbase.zookeeper.quorum</name>
    <value>master,secondMaster</value>
    <description>The directory shared by RegionServers.
    </description>
  </property>
  <property>
    <name>hbase.zookeeper.property.dataDir</name>
    <value>/home/hadoop/zookeeper</value>
    <description>Property from ZooKeeper config zoo.cfg.
    The directory where the snapshot is stored.
    </description>
  </property>
  <property>
    <name>hbase.rootdir</name>
    <value>hdfs://master:9000/hbase</value>
    <description>The directory shared by RegionServers.
    </description>
  </property>
  <property>
    <name>hbase.cluster.distributed</name>
    <value>true</value>
    <description>The mode the cluster will be in. Possible values are
      false: standalone and pseudo-distributed setups with managed ZooKeeper
      true: fully-distributed with unmanaged ZooKeeper Quorum (see hbase-env.sh)
    </description>
  </property>
</configuration>

2、配置hbase-env.sh中的JAVA_HOME和HBASE_HEAPSIZE
先找到各自的位置,然後新增在下面即可

# export JAVA_HOME=/usr/java/jdk1.6.0/
export JAVA_HOME=/usr/lib/jvm/java-8-openjdk-amd64

# export HBASE_HEAPSIZE=1G
export HBASE_HEAPSIZE=4G

3、配置regionservers檔案
新增相應的regionservers,在這裡,新增如下

secondMaster

4、建立zookeeper目錄

su hadoop
cd 
mkdir zookeeper