搭建大資料處理叢集(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