一、簡介
HDFS採用master/slave架構,一個HDFS集羣是由一個Namenode和一定數目的Datanodes組成。Namenode是一箇中心服務器,負責管理文件系統的名字空間(namespace)以及客戶端對文件的訪問。集羣中的Datanode一般是一個節點一個,負責管理它所在節點上的存儲。HDFS暴露了文件系統的名字空間,用戶能夠以文件的形式在上面存儲數據。從內部看,一個文件其實被分成一個或多個數據塊,這些塊存儲在一組Datanode上。Namenode執行文件系統的名字空間操作,比如打開、關閉、重命名文件或目錄。它也負責確定數據塊到具體Datanode節點的映射。Datanode負責處理文件系統客戶端的讀寫請求。在Namenode的統一調度下進行數據塊的創建、刪除和複製。
HBase採用Master/Slave架構搭建集羣,它隸屬於Hadoop生態系統,由一下類型節點組成:HMaster節點、HRegionServer節點。一個HMaster和一定數目的HRegionServer組成
YARN總體上採用master/slave架構,其中Master被稱爲ResourceManager,Slave被稱爲NodeManager,ResourceManager負責對各個NodeManager上的資源進行統一管理和調度。當用戶提交一個應用程序時,需要提供一個用以跟蹤和管理這個程序的ApplicationMaster,它負責向ResourceManager申請資源,並要求NodeManger啓動可以佔用一定資源的Container。由於不同的ApplicationMaster被分佈到不同的節點上,並通過一定的隔離機制進行了資源隔離,因此它們之間不會相互影響。
二、Linux環境配置
1、集羣的說明
集羣中包括3個節點:1個Master,2個Slave(本來是要使用3臺,我這邊只有兩個虛擬機 (Salve1和Master就放在一起))
Master 192.168.2.200
Salve1 192.168.2.200
Salve2 192.168.2.201
2、修改hosts
1)可以修改當前機器名稱
192.168.2.200(Master)
192.168.2.201(Salve2)
# vi /etc/sysconfig/network
#service network restart 重啓網絡
2)、必須配置hosts文件(Master與Salve2都是一樣)
#vi /etc/hosts
3、配置JDK1.7
不懂怎麼在Linux上配置JDK,可以查看Linux下配置JAVA環境
4、主機之間SSH無密碼驗證(這個比較重要)
Master作爲客戶端,要實現無密碼公鑰認證,連接到服務器Salve上時,需要在Master上生成一個密鑰對,包括一個公鑰和一個私鑰,而後將公鑰複製到所有的Salve上。當Master通過SSH鏈接到Salve上時,Salve會生成一個隨機數並用Master的公鑰對隨機數進行加密,併發送給Master。Master收到加密數之後再用私鑰解密,並將解密數回傳給Salve,Salve確認解密數無誤之後就允許Master進行連接了。這就是一個公鑰認證過程,期間不需要手工輸入密碼,重要的過程是將Master上產生的公鑰複製到Salve上。
1)查看一下SSH是否有安裝
# ssh -version
2)基於空口令創建一個新的SSH密鑰,啓用無密碼登錄
第一步:拷貝文件id_rsa.pub到192.168.2.200(Master)的root目錄下面
#ssh-keygen -t dsa -P '' -f ~/.ssh/id_dsa
第二步:把id_rsa.pub追加到授權的key裏面去。
[root@Master /]# cat ~/.ssh/id_dsa.pub >> ~/.ssh/authorized_keys
第三步:修改文件"authorized_keys"
#chmod 600 ~/.ssh/authorized_keys
第四步:啓動服務(需要權限用戶)
#service sshd restart
第五步:把公鑰複製所有的Slave機器上
#scp -r ~/.ssh/authorized_keys [email protected]:~/.ssh/
第六步:測試一下是否需要密碼登陸
#ssh Salve2
5、關閉集羣中所有機器的防火牆
在啓動前關閉集羣中所有機器的防火牆,不然會出現datanode開後又自動關閉。
#service iptables stop
6、下載Hadoop 、hbase、Zookeeper 安裝包
1)、下載Hadoop 2.5.2
https://dist.apache.org/repos/dist/release/hadoop/common/
2)、下載hbase1.0.3
http://mirrors.hust.edu.cn/apache/hbase/
3)、下載Zookeeper 3.4.6
http://mirrors.hust.edu.cn/apache/zookeeper/
並把下載好的安裝包上傳到Linux的/usr/local/hadoop
三、Zookeeper 集羣配置
1、tar -zxvf zookeeper-3.4.6.tar.gz
2、配置zoo.cfg
#cd /usr/local/hadoop/zookeeper-3.4.6/conf/
#cp zoo_sample.cfg zoo.cfg
第一步: #vi zoo.cfg
dataDir=/usr/local/hadoop/zookeeper-3.4.6/zkData
server.1=Salve1:2888:3888
server.2=Salve2:2888:3888
第二步:創建myid(Master 對myid寫入編號1 、Salve2對myid寫入編號2 )
#mkdir /usr/local/hadoop/zookeeper-3.4.6/zkData
#touch /usr/local/hadoop/zookeeper-3.4.6/zkData/myid
//Master 對myid寫入編號1
#echo 1 > /usr/local/hadoop/zookeeper-3.4.6/zkData/myid
第三步:將配置好的zookeeper拷貝到其他節點對應的相同的目錄
#scp -r /usr/local/hadoop/zookeeper-3.4.6/ Salve2:/usr/local/hadoop/zookeeper-3.4.6/
第四步:Salve2 對myid寫入編號2
#echo 2 > /usr/local/hadoop/zookeeper-3.4.6/zkData/myid
在部署zookeeper的節點上的/usr/local/hadoop/zookeeper-3.4.6/zkData/的目錄下新建一個myid文件裏寫上zoo.cfg文件對應的server號碼,Salve1寫1,Salve2寫2 。
四、hadoop 集羣配置
1、tar -zxvf hadoop-2.5.2.tar.gz
2、修改Master、Salve2 /etc/profile 默認設置hadoop path
#vi /etc/profile
//在末尾添加
# set hadoop path
export HADOOP_HOME=/usr/local/hadoop/hadoop-2.5.2
export PATH=$PATH :$HADOOP_HOME/bin
重啓"/etc/profile"
# source /etc/profile
3、hadoop配置
1) 配置 hadoop-env.sh文件 java環境
export JAVA_HOME=/usr/java/jdk1.7.0_80
2) 配置core-site.xml文件
<configuration>
<property>
<name>hadoop.tmp.dir</name>
<value>/usr/local/hadoop/tmp</value>
</property>
<property>
<name>fs.defaultFS</name>
<value>hdfs://Master:9000</value>
</property>
</configuration>
3) 配置mapred-site.xml文件
<configuration>
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
<property>
<name>mapreduce.jobhistory.adress</name>
<value>Master:10020</value>
</property>
<property> <name>mapreduce.jobhistory.webapp.adress</name>
<value>Master:19888</value>
</property>
</configuration>
4)配置hdfs-site.xml文件
<configuration>
<property>
<name>dfs.namenode.name.dir</name>
<value>file:/data/hdfs/namenode</value>
</property>
<property>
<name>dfs.datanode.data.dir</name>
<value>file:/data/hdfs/datanode</value>
</property>
<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.replication</name>
<value>2</value>
</property>
<property>
<name>dfs.webhdfs.enabled</name>
<value>true</value>
</property>
</configuration>
這裏的dfs.replication用來設置每份數據塊的副本數目,默認是3,因爲我們是在單機上配置的分佈模式,因此設爲2。dfs.name.dir和dfs.data.dir非常重要,用來設置存放hdfs中namenode和datanode數據的本地存放位置。這裏如果設置不好,後續會出現多個錯誤。當然你也可以不設置採用默認的/tmp下的目錄,但是同樣重啓會丟失數據。
5)配置yarn-site.xml文件
<configuration>
<property>
<name>yarn.resourcemanager.scheduler.address</name>
<value>Master:8030</value>
</property>
<property>
<name>yarn.resourcemanager.address</name>
<value>Master:8032</value>
</property>
<property>
<name>yarn.resourcemanager.webapp.address</name>
<value>Master:8088</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.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>
</configuration>
7)配置slaves文件
Salve1
Salve2
然後拷貝一份到Salve2
五、hbase集羣配置
1、tar -zxvf hbase-1.0.3-bin.tar.gz
2、修改Master、Salve2 /etc/profile 默認設置hbase path
#vi /etc/profile
//在末尾添加
# set hbase path
export HBASE_HOME=/usr/local/hadoop/hbase-1.0.3
export PATH= $PATH:$HBASE_HOME/bin
重啓 /etc/profile
# source /etc/profile
3、hbase配置
#cd hbase-1.0.3/conf/
1)配置hbase-env.sh
export JAVA_HOME=/usr/java/jdk1.7.0_80
export HBASE_MANAGES_ZK=false
HBASE_MANAGES_ZK=false,表示啓動的是獨立的zookeeper。而配置成true則是hbase自帶的zookeeper。
2)配置hbase-site.xml
# vi hbase-site.xml
<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.property.dataDir</name>
<value>/usr/local/hadoop/zookeeper-3.4.6/zkData</value>
</property>
<property>
<name>hbase.zookeeper.quorum</name>
<value>Master,Salve2</value>
</property>
</configuration>
說明:
hbase.cluster.distributed指定了Hbase的運行模式。false是單機模式,true是分佈式模式。
hbase.zookeeper.quorum是Zookeeper集羣的地址列表,用逗號分割。
3)配置 regionservers
Salve1
Salve2
同樣把hbase拷貝一份到Salve2
六、Hadoop 、hbase、Zookeeper集羣啓動
1、啓動 ZooKeeper 集羣 (分別在Master、Salve2上啓動zk)
ZooKeeper 安裝在Master、Savle2機子上,在Master、Savle2機子上執行啓動命令。
# cd /usr/local/hadoop/zookeeper-3.4.6/
第一步:在Master、Savle2啓動ZooKeeper
#./bin/zkServer.sh start
第二步:可以查看ZooKeeper 狀態
啓動完成後可以看zookeeper是leader、follower
#./bin/zkServer.sh status
如果./bin/zkServer.sh status爲失敗,
可以通過命令查看錯誤的信息:#tailf zookeeper.out
2、 啓動 hadoop 集羣 (Master)
第一步:第一次,格式化namenode
#hadoop namenode -format
第二步:啓動所有服務
#./sbin/start-all.sh
3、 啓動 hbase集羣 (Master)
#./bin/start-hbase.sh
4、jps查看進程
5、hbase shell
6、其他說明
1)、有的在Master上啓動namenode,Master2上在啓動另外namenode。
#hadoop-daemon.sh start namenode(啓動namenode)
#hadoop-daemons.sh start datanode(啓動datanode)
#hadoop-daemon.sh start journalnode(在節點上都啓動)
journalnode
https://my.oschina.net/u/189445/blog/661561
2)、啓動備份hbase的 HMaster
#hbase-daemon.sh start master
大數據剛入門不久,有什麼不對的地方,可以指出來,相互學習,相互成長。