hadoop1.2.1+zk-3.4.5+hbase-0.94.1集羣安裝過程詳解

hadoop1.2.1+zk-3.4.5+hbase-0.94.1集羣安裝過程詳解

一,環境:

1,主機規劃:

集羣中包括3個節點:hadoop01Master其餘爲Salve,節點之間局域網連接,可以相互ping通。

機器名稱

IP地址

hadoop01

192.168.1.31

hadoop02

192.168.1.32

hadoop03

192.168.1.33

三個節點上均是CentOS6.3 x86_64系統,並且有一個相同的用戶hadoophadoop01做爲master配置NameNodeJobTracker的角色,負責總管分佈式數據和分解任務的執行;另外兩臺配置DataNodeTaskTracker的角色,負責分佈式數據存儲以及任務的執行。安裝目錄統一爲/usr/local

2,軟件版本:

hadoop-1.2.1.tar.gzjdk-7u25-linux-x64.rpm

二,準備工作,三臺機器都需要做 ,將三臺機器selinuxiptables停用。

1,安裝jdk

[root@hadoop01 ~]# rpm -ivh jdk-7u25-linux-x64.rpm

[root@hadoop01 ~]# cd /usr/java/

[root@hadoop01 java]# ls

default  jdk1.7.0_25  latest

[root@hadoop01 java]# ln -s jdk1.7.0_25 jdk

[root@hadoop01 java]# vim /etc/profile

220309861.png

[root@hadoop01 java]# source /etc/profile  讓其java命令立即生效

[root@hadoop01 java]# java   執行java命令,如果能正常執行就表示java安裝完成

2,添加一個hadoop用戶,用來運行hadoop集羣

220338552.png

3,做三臺機器之間做雙機互信,原因master通過遠程啓動datanode進程和tasktracker進程,如果不做雙機互信,會導致每次啓動集羣服務都會需要密碼

[root@hadoop01 ~]# vim /etc/hosts

220402614.png

hosts文件分別複製到另外兩臺。

4,切換到hadoop用戶,對其用做雙機互信,先在三臺機器先執行ssh-keygen生成公鑰與私鑰。

220423279.png

將公鑰複製到別的機器,需要對hadoop01hadoop03,都做相同的動作。

[hadoop@hadoop02 ~]$ ssh-copy-id -i hadoop01

[hadoop@hadoop03 ~]$ ssh-copy-id -i hadoop01

5,同步時間,三臺機器啓用ntpd服務,另外兩臺執行相同的操作

[root@hadoop01 ~]# crontab -e

*/5 * * * * /usr/sbin/ntpdate ntp.api.bz &> /dev/null

三,配置master,也就hadoop01

[root@hadoop01 ~]# tar xf hadoop-1.2.1.tar.gz  -C /usr/local/

[root@hadoop01 ~]# chown -R hadoop:hadoop /usr/local/hadoop-1.2.1

[root@hadoop01 ~]# su - hadoop

[hadoop@hadoop01 ~]$ cd /usr/local/hadoop-1.2.1/

(1)Hadoop的配置文件都存儲在conf下,配置文件解釋

hadoop-env.sh:用於定義hadoop運行環境相關的配置信息,比如配置JAVA_HOME環境變量、爲hadoopJVM指定特定的選項、指定日誌文件所在的目錄路徑以及masterslave文件的位置等;

core-site.xml: 用於定義系統級別的參數,它作用於全部進程及客戶端HDFS URLHadoop的臨時目錄以及用於rack-aware集羣中的配置文件的配置等,此中的參數定義會覆蓋core-default.xml文件中的默認配置;

hdfs-site.xml: HDFS的相關設定,如文件副本的個數、塊大小及是否使用強制權限等,此中的參數定義會覆蓋hdfs-default.xml文件中的默認配置;

mapred-site.xmlmapreduce的相關設定,如reduce任務的默認個數、任務所能夠使用內存的默認上下限等,此中的參數定義會覆蓋mapred-default.xml文件中的默認配置;

masters: hadoopsecondary-masters主機列表,當啓動Hadoop時,其會在當前主機上啓動NameNodeJobTracker,然後通過SSH連接此文件中的主機以作爲備用NameNode;

slavesHadoop集羣的slave(datanode)tasktracker的主機列表master啓動時會通過SSH連接至此列表中的所有主機併爲其啓動DataNodetaskTracker進程;

Hadoop-metrics2.properties:控制metricshadoop上如何發佈屬性

Log4j.properties:系統日誌文件、namenode審計日誌、tarsktracker子進程的任務日誌屬性

(2)修改hadoop-env.sh

[hadoop@hadoop01 hadoop-1.2.1]$ vim conf/hadoop-env.sh

220501797.png

(3)修改core-site.xml

[hadoop@hadoop01 hadoop-1.2.1]$ vim conf/core-site.xml

<configuration>

<property>

       <name>hadoop.tmp.dir</name>

       <value>/data/hadoop/tmp</value>

</property>

<property>

       <name>fs.default.name</name>

       <value>hdfs://hadoop01:9000</value>

</property>

</configuration>


hadoop.tmp.dir屬性用於定義Hadoop的臨時目錄,其默認爲/tmp/hadoop-${username}HDFS進程的許多目錄默認都在此目錄中,/hadoop/tmp目錄,需要注意的是,要保證運行Hadoop進程的用戶對其具有全部訪問權限。

fs.default.name屬性用於定義HDFS的名稱節點和其默認的文件系統,其值是一個URI,即NameNodeRPC服務器監聽的地址(可以是主機名)和端口(默認爲8020)。其默認值爲file:///,即本地文件系統。

(4)修改hdfs-site.xml文件

[hadoop@hadoop01 hadoop-1.2.1]$ vim conf/hdfs-site.xml


<configuration>

       <property>

               <name>dfs.data.dir</name>

                <value>/data/hadoop/data</value>

        </property>

        <property>

               <name>dfs.replication</name>

               <value>2</value>

        </property>

</configuration>


dfs.name.dir屬性定義的HDFS元數據持久存儲路徑,默認爲${hadoop.tmp.dir}/dfs/name

dfs.replication屬性定義保存副本的數量,默認是保存3份,由於這裏只有兩臺slave。所以設置2。

(5)修改mapred-site.xml文件

[hadoop@hadoop01 hadoop-1.2.1]$ vim conf/mapred-site.xml

<configuration>

       <property>

               <name>mapred.job.tracker</name>

               <value>http://hadoop01:9001</value>

        </property>

</configuration>

(6)編輯masters文件

masters用於指定輔助名稱節點(SecondaryNameNode)的主機名或主機地址

[hadoop@hadoop01 hadoop-1.2.1]$ vim conf/masters

hadoop01

(7)編輯slaves文件,這個文件只需在master主機上編輯就行

用於指定各從服務器(TaskTrackerDataNode)的主機名或主機地址

hadoop02

hadoop03

在三臺機器上分別創建兩個目錄:

[root@hadoop01 local]# mkdir -p /hadoop/data

[root@hadoop01 local]# mkdir -p /hadoop/tmp

[root@hadoop01 local]# chown -R hadoop:hadoop /hadoop/

[root@hadoop02 local]# mkdir -p /hadoop/data

[root@hadoop02 local]# mkdir -p /hadoop/tmp

[root@hadoop02 local]# chown -R hadoop:hadoop /hadoop/

[root@hadoop03 local]# mkdir -p /hadoop/data

[root@hadoop03 local]# mkdir -p /hadoop/tmp

[root@hadoop03 local]# chown -R hadoop:hadoop /hadoop/

(8)配置slave:將配置的hadoop整個目錄複製到hadoop02haoop03

[root@hadoop01 ~]# scp -rp /usr/local/hadoop-1.2.1 hadoop02:/usr/local/

[root@hadoop01 ~]# scp -rp /usr/local/hadoop-1.2.1 hadoop03:/usr/local/

修改權限:

[root@hadoop02 ~]# chown  -R hadoop:hadoop /usr/local/hadoop-1.2.1/

[root@hadoop03 ~]# chown  -R hadoop:hadoop /usr/local/hadoop-1.2.1/


四,啓動集羣:

1、格式化名稱節點

與普通文件系統一樣,HDFS文件系統必須要先格式化,創建元數據數據結構以後才能使用。

[hadoop@hadoop01 hadoop-1.2.1]$ bin/hadoop namenode -format

220708790.png

如果格式化出錯,一般會提示錯誤,就像下面,已經在提示哪個文件,第幾行,根據提示檢查即可。

220725712.png

[hadoop@hadoop01 ~]$ bin/start-all.sh

220739648.png

[hadoop@hadoop01 ~]$ jps  查看進程是否起來。secondarynamenodenomenodejobtracker三個進程必須都有,才正常。

8549 SecondaryNameNode

8409 NameNode

8611 JobTracker

8986 Jps

或者這種方式查看集羣是否正常

[hadoop@hadoop01 hadoop-1.2.1]$ bin/hadoop dfsadmin -report

Safe mode is ON

Configured Capacity: 37073182720 (34.53 GB)

Present Capacity: 32421658624 (30.2 GB)

DFS Remaining: 32421576704 (30.19 GB)

DFS Used: 81920 (80 KB)

DFS Used%: 0%

Under replicated blocks: 0

Blocks with corrupt replicas: 0

Missing blocks: 0

-------------------------------------------------

Datanodes available: 2 (2 total, 0 dead)


Name: 192.168.0.33:50010

Decommission Status : Normal

Configured Capacity: 18536591360 (17.26 GB)

DFS Used: 40960 (40 KB)

Non DFS Used: 2325061632 (2.17 GB)

DFS Remaining: 16211488768(15.1 GB)

DFS Used%: 0%

DFS Remaining%: 87.46%

Last contact: Sat Aug 31 22:25:13 CST 2013


Name: 192.168.0.32:50010

Decommission Status : Normal

Configured Capacity: 18536591360 (17.26 GB)

DFS Used: 40960 (40 KB)

Non DFS Used: 2326462464 (2.17 GB)

DFS Remaining: 16210087936(15.1 GB)

DFS Used%: 0%

DFS Remaining%: 87.45%

Last contact: Sat Aug 31 22:25:12 CST 2013

測試集羣:

[hadoop@hadoop01 hadoop-1.2.1]$ bin/hadoop jar hadoop-test-1.2.1.jar  DFSCIOTest -write -nrFiles 10 -filesize 1000

[hadoop@hadoop01 hadoop-1.2.1]$ bin/hadoop jar hadoop-test-1.2.1.jar  DFSCIOTest -read -nrFiles 10 -filesize 1000

hadoop默認監聽的端口:

Hadoop進程監聽的地址和端口

Hadoop啓動時會運行兩個服務器進程,一個爲用於Hadoop各進程之間進行通信的RPC服務器,另一個是提供了便於管理員查看Hadoop集羣各進程相關信息頁面的HTTP服務器。


用於定義各RPC服務器所監聽的地址和端口的屬性有如下幾個:

fs.default.name:定義HDFSNameNode用於提供URI所監聽的地址和端口,默認端口爲8020

dfs.datanode.ipc.addressDataNodeRPC服務器監聽的地址和端口,默認爲0.0.0.0:50020

mapred.job.trackerJobTrackerPRC服務器所監聽的地址和端口,默認端口爲8021

mapred.task.tracker.report.addressTaskTrackerRPC服務器監聽的地址和端口;TaskTracker的子JVM使用此端口與TaskTracker進行通信,它僅需要監聽在本地迴環地址127.0.0.1上,因此可以使用任何端口;只有在當本地沒有迴環接口時才需要修改此屬性的值;

除了RPC服務器之外,DataNode還會運行一個TCP/IP服務器用於數據塊傳輸,其監聽的地址和端口可以通過dfs.datanode.address屬性進行定義,默認爲0.0.0.0:50010


可用於定義各HTTP服務器的屬性有如下幾個:

dfs.http.addressNameNodeHTTP服務器地址和端口,默認爲0.0.0.0:50070

dfs.secondary.http.addressSecondaryNameNodeHTTP服務器地址和端口,默認爲0.0.0.0:50090

mapred.job.tracker.http.addrssJobTrackerHTTP服務器地址和端口,默認爲0.0.0.0:50030

dfs.datanode.http.addressDataNodeHTTP服務器地址和端口,默認爲0.0.0.0:50075

mapred.task.tracker.http.addressTaskTrackerHTTP服務器地址和端口,默認爲0.0.0.0:50060上述的HTTP服務器均可以通過瀏覽器直接訪問以獲取對應進程的相關信息,訪問路徑爲http://Server_IP:Port。如namenode的相關信息:

220758157.png


四,排錯思路

1,是否是hadoop.tmp.dirdfs.data.dir屬性,如果定義在別的目錄需要在集羣中所有節點都創建,並讓hadoop用戶能夠訪問

2,查看進程對應的端口是否有在監聽。在上面配置中將namenode的端口定義9000jobtracker定義成9001

[hadoop@hadoop01 hadoop-1.2.1]$ netstat -tunlp |grep 9000

tcp        0      0 ::ffff:192.168.0.31:9000    :::*                        LISTEN      22709/java          

[hadoop@hadoop01 hadoop-1.2.1]$ netstat -tunlp |grep 9001

tcp        0      0 ::ffff:192.168.0.31:9001    :::*                        LISTEN      22924/java  

3,查看日誌,哪個服務沒起來就查看對應的日誌。

4,查看集羣中所有節點的時間是不是一致。

5iptableselinux是否阻止。

6/etc/hosts是否正確。

五,添加節點,刪除節點

添加節點
1.修改host
 和普通的datanode一樣。添加namenodeip
2.修改namenode的配置文件conf/slaves
 添加新增節點的iphost
3.在新節點的機器上,啓動服務

[hadoop@hadoop04 hadoop]# ./bin/hadoop-daemon.sh start datanode
[hadoop@hadoop04 hadoop]# ./bin/hadoop-daemon.sh start tasktracker  

4.均衡block

[hadoop@hadoop04 hadoop]# ./bin/start-balancer.sh
1)如果不balance,那麼cluster會把新的數據都存放在新的node上,這樣會降低mapred的工作效率
2)設置平衡閾值,默認是10%,值越低各節點越平衡,但消耗時間也更長

[root@slave-004 hadoop]# ./bin/start-balancer.sh -threshold 5

3)設置balance的帶寬,默認只有1M/s

<property>
<name>dfs.balance.bandwidthPerSec</name>
<value>1048576</value>
<description>

Specifies the maximum amount of bandwidth that each datanode  
can utilize for the balancing purpose in term of  
the number of bytes per second.  
</description>
</property>

注意:
1. 必須確保slavefirewall已關閉;
2. 確保新的slaveip已經添加到master及其他slaves/etc/hosts中,反之也要將master及其他slaveip添加到新的slave/etc/hosts


刪除節點

1.集羣配置
  修改conf/hdfs-site.xml文件

<property>
<name>dfs.hosts.exclude</name>
<value>/data/soft/hadoop/conf/excludes</value>
<description>Names a file that contains a list of hosts that are  
not permitted to connect to the namenode.  The full pathname of the  
file must be specified.  If the value is empty, no hosts are  
excluded.</description>
</property>
2確定要下架的機器
dfs.hosts.exclude定義的文件內容爲,每個需要下線的機器,一行一個。這個將阻止他們去連接Namenode。如:

haoop04
3.強制重新加載配置

[root@master hadoop]# ./bin/hadoop dfsadmin  -refreshNodes

它會在後臺進行Block塊的移動
4.關閉節點
等待剛剛的操作結束後,需要下架的機器就可以安全的關閉了。

[root@master hadoop]# ./bin/ hadoop dfsadmin -report  

可以查看到現在集羣上連接的節點

正在執行Decommission,會顯示:
Decommission Status : Decommission in progress
執行完畢後,會顯示:
Decommission Status : Decommissioned
5.再次編輯excludes文件
一旦完成了機器下架,它們就可以從excludes文件移除了
登錄要下架的機器,會發現DataNode進程沒有了,但是TaskTracker依然存在,需要手工處理一下

六,安裝zookeeper:

1zookeeper概述:

ZooKeeper是一個分佈式開源框架,提供了協調分佈式應用的基本服務,它向外部應用暴露一組通用服務——分佈式同步(Distributed Synchronization)、命名服務(Naming Service)、集羣維護(Group Maintenance)等,簡化分佈式應用協調及其管理的難度,提供高性能的分佈式服務。ZooKeeper本身可以以Standalone模式安裝運行,不過它的長處在於通過分佈式ZooKeeper集羣(一個Leader,多個Follower),基於一定的策略來保證ZooKeeper集羣的穩定性和可用性,從而實現分佈式應用的可靠性。

hadoop01zookeeper1hadoop02zookeeper2hadoop03zookeeper3zookeerper

2,下載zookeeper-3.4.4解壓到/usr/local/下,並修改權限

# chown -R hadoop:hadoop /usr/local/zookeeper-3.4.4/

# The number of milliseconds of each tick

tickTime=2000

# The number of ticks that the initial

# synchronization phase can take

initLimit=10

# The number of ticks that can pass between

# sending a request and getting an acknowledgement

syncLimit=5

# the directory where the snapshot is stored.

# do not use /tmp for storage, /tmp here is just

# example sakes.

dataDir=/hadoop/zookeeper

# the port at which the clients will connect

clientPort=2181

server.1=hadoop01:28888:38888

server.2=hadoop02:28888:38888

server.3=hadoop03:28888:38888

#

# Be sure to read the maintenance section of the

# administrator guide before turning on autopurge.

#

# http://zookeeper.apache.org/doc/current/zookeeperAdmin.html#sc_maintenance

#

# The number of snapshots to retain in dataDir

#autopurge.snapRetainCount=3

# Purge task interval in hours

# Set to "0" to disable auto purge feature

#autopurge.purgeInterval=1

註解:

tickTime發送心跳時間間隔,單位毫秒

initlimitsysnclimit,兩者都是以ticktime的總數進行度量(上面的時間爲10*2000=20s)initLimit參數設定了允許所有跟隨者與領導者進行連接並同步的時間,如果在設定的時間內內,半數以上的跟隨者未能完成同步,領導者便會宣佈放棄領導地位,然後進行另外一次領導 者選舉。如果這種情況經常發生,通過查看日誌中的記錄發現,則表明設定的值太小。

syscLimit參數設定了允許一個跟隨者與領導者進行同步的時間。如果在設定的時間內,一個跟隨者未能完成同步,它將會自己重啓,所有關聯到這個跟隨者的客戶端將連接到另外一個跟隨者。

datadir保存的zk中持久化的數據,zk中存在兩種數據,一種用完即消失,一種需要持久存在,zk的日誌也保存在這

[hadoop@hadoop01 ~]$ mkdir /hadoop/zookeeper/

[hadoop@hadoop01 ~]$ echo "1" > /hadoop/zookeerper/myid

zookeeper目錄分別複製到hadoop02hadoop03,並創建/hadoop/zookeeper目錄,並在其目錄下創建其myid

3,在對應的節點上啓動服務

[hadoop@hadoop01 zookeeper-3.4.4]$ sh bin/zkServer.sh start

三個節點啓動完之後,查看

[hadoop@hadoop01 zookeeper-3.4.4]$ jps

1320 NameNode

2064 Jps

1549 JobTracker

1467 SecondaryNameNode

1996 QuorumPeerMain

[hadoop@hadoop01 zookeeper-3.4.4]$ sh bin/zkServer.sh status 查看當前節點是否是leader

[hadoop@hadoop01 zookeeper-3.4.4]$ sh bin/zkServer.sh status

JMX enabled by default

Using config: /usr/local/zookeeper-3.4.4/bin/../conf/zoo.cfg

Mode: follower 表示是跟從

七,安裝hbase

HBase集羣需要依賴於一個Zookeeper ensembleHBase集羣中的所有節點以及要訪問HBase

的客戶端都需要能夠訪問到該Zookeeper  ensembleHBase自帶了Zookeeper,但爲了方便

其他應用程序使用Zookeeper,最好使用單獨安裝的Zookeeper ensemble

此外,Zookeeper ensemble一般配置爲奇數個節點,並且Hadoop集羣、Zookeeper ensemble

HBase集羣是三個互相獨立的集羣,並不需要部署在相同的物理節點上,他們之間是通過網

絡通信的。

一,下載hbase-0.94.1 ,並解壓到/usr/local下,hbase的版本需要與hadoop對應,查看是否對應只需要看hbase-0.94.1/lib/hadoop-core後面的版本號是否與hadoop的版本對應,如果不對應,可以將hadoophadoop-core文件複製過來,但是不能保證不會有問題

[hadoop@master hbase-0.94.12]$ vim conf/hbase-env.sh

export JAVA_HOME=/usr/java/jdk

export HBASE_CLASSPATH=/usr/local/hadoop-1.0.4/conf

export HBASE_MANAGES_ZK=false

export HBASE_HEAPSIZE=2048

tips:

其中,HBASE_CLASSPATH指向存放有Hadoop配置文件的目錄,這樣HBase可以找到HDFS

的配置信息,由於本文HadoopHBase部署在相同的物理節點,所以就指向了Hadoop

裝路徑下的conf目錄。HBASE_HEAPSIZE單位爲MB,可以根據需要和實際剩餘內存設置,

默認爲1000HBASE_MANAGES_ZK=false指示HBase使用已有的Zookeeper而不是自帶的。

[root@hadoop01 ~]# source /etc/profile

hbase-094.1/src/main/resources/hbasse-default.xml可以將這個文件複製到conf目錄下,進行修改

[hadoop@hadoop01 hbase-0.94.1]$ vim conf/hbase-site.xml

<configuration>

 <property>

   <name>hbase.rootdir</name>

   <value>hdfs://hadoop01:9000/hbase</value>

   <description>The directory shared by region servers.</description>

 </property>

 <property>

   <name>hbase.hregion.max.filesize</name>

   <value>1073741824</value>

   <description>

   Maximum HStoreFile size. If any one of a column families' HStoreFiles has

   grown to exceed this value, the hosting HRegion is split in two.

   Default: 256M.

   </description>

 </property>

 <property>

   <name>hbase.hregion.memstore.flush.size</name>

   <value>134217728</value>

   <description>

   Memstore will be flushed to disk if size of the memstore

   exceeds this number of bytes.  Value is checked by a thread that runs

   every hbase.server.thread.wakefrequency.

   </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>

 <property>

     <name>hbase.zookeeper.property.clientPort</name>

     <value>2181</value>

     <description>Property from ZooKeeper's config zoo.cfg.

     The port at which the clients will connect.

     </description>

 </property>

 <property>

   <name>zookeeper.session.timeout</name>

   <value>120000</value>

 </property>

 <property>

   <name>hbase.zookeeper.property.tickTime</name>

   <value>6000</value>

 </property>

   <property>

     <name>hbase.zookeeper.quorum</name>

     <value>hadoop01,hadoop02,hadoop03</value>

     <description>Comma separated list of servers in the ZooKeeper Quorum.

     For example, "host1.mydomain.com,host2.mydomain.com,host3.mydomain.com".

     By default this is set to localhost for local and pseudo-distributed modes

     of operation. For a fully-distributed setup, this should be set to a full

     list of ZooKeeper quorum servers. If HBASE_MANAGES_ZK is set in hbase-env.sh

     this is the list of servers which we will start/stop ZooKeeper on.

     </description>

</property>

<property>

       <name>hbase.tmp.dir</name>

       <value>/hadoop/hbase</value>

   </property>

</configuration>

註釋:

1hbase.rootdirhbase所使用的文件系統爲HDFS,根目錄爲hdfs://node0:9000/hbase,該目錄應該由HBase自動創建,只需要指定到正確的HDFS NameNode上即可。

2hbase.hregion.max.filesize設置HStoreFile的大小,當 大於這個數時,就會split 成兩個文件

3hbase.hregion.memstore.flush.size設置memstore的大小,當大於這個值時,寫入磁盤

4hbase.cluster.distributed指定hbase爲分佈式模式

5hbase.zookeeper.property.clientPort指定zk的連接端口

6zookeeper.session.timeoutRegionServerZookeeper間的連接超時時間。當超時時間到後,ReigonServer會被ZookeeperRS集羣清單中移除,HMaster收到移除通知後,會對這臺server負責的regions重新balance,讓其他存活的RegionServer接管.

7hbase.zookeeper.property.tickTime

8hbase.zookeeper.quorum默認值是 localhost列出zookeeprensemble servers

9hbase.regionserver.handler.count
默認值:10
說明:RegionServer的請求處理IO線程數。
調優:
這個參數的調優與內存息息相關。
較少的IO線程,適用於處理單次請求內存消耗較高的Big PUT場景(大容量單次PUT或設置了較大cachescan,均屬於Big PUT)或ReigonServer的內存比較緊張的場景。
較多的IO線程,適用於單次請求內存消耗低,TPS要求非常高的場景。設置該值的時候,以監控內存爲主要參考。
這裏需要注意的是如果serverregion數量很少,大量的請求都落在一個region上,因快速充滿memstore觸發flush導致的讀寫鎖會影響全局TPS,不是IO線程數越高越好。
壓測時,開啓Enabling RPC-level logging,可以同時監控每次請求的內存消耗和GC的狀況,最後通過多次壓測結果來合理調節IO線程數。
這裏是一個案例?Hadoop and HBase Optimization for Read Intensive Search Applications,作者在SSD的機器上設置IO線程數爲100,僅供參考。

10hbase.tmp.dir指定HBase將元數據存放路徑


[hadoop@hadoop01 hbase-0.94.1]$ vim conf/regionservers  相當於hadoopslave

hadoop02

hadoop03

11,啓動所有hbase進程

[hadoop@master hbase-0.94.12]$ bin/start-hbase.sh

12,停止

[hadoop@master hbase-0.94.12]$ bin/stop-hbase.sh

13,連接hbase創建表

[hadoop@master hbase-0.94.12]$ bin/hbase shell

HBase Shell; enter 'help<RETURN>' for list of supported commands.

Type "exit<RETURN>" to leave the HBase Shell

Version 0.94.12, r1524863, Fri Sep 20 04:44:41 UTC 2013


hbase(main):001:0>

14創建一個名爲 small的表,這個表只有一個 column family cf。可以列出所有的表來檢查創建情況,然後插入些值。

hbase(main):003:0> create 'small', 'cf'
0 row(s) in 1.2200 seconds
hbase(main):003:0> list
small
1 row(s) in 0.0550 seconds
hbase(main):004:0> put 'small', 'row1', 'cf:a', 'value1'
0 row(s) in 0.0560 seconds
hbase(main):005:0> put 'small', 'row2', 'cf:b', 'value2'
0 row(s) in 0.0370 seconds
hbase(main):006:0> put 'small', 'row3', 'cf:c', 'value3'
0 row(s) in 0.0450 seconds

15、檢查插入情況.Scan這個表

hbase(main):005:0> scan 'small'

Get一行,操作如下

hbase(main):008:0> get 'small', 'row1'

disable drop 這張表,可以清除你剛剛的操作

hbase(main):012:0> disable 'small'
0 row(s) in 1.0930 seconds
hbase(main):013:0> drop 'small'
0 row(s) in 0.0770 seconds

16出與導入

[hadoop@master hbase-0.94.12]$ bin/hbase org.apache.hadoop.hbase.mapreduce.Driver export small small

導出的表,在hadoop文件系統的當前用戶目錄下,small文件夾中。例如,導出後在hadoop文件系統中的目錄結構:

[hadoop@master hadoop-1.0.4]$ bin/hadoop dfs -ls

Found 1 items

drwxr-xr-x   - hadoop supergroup          0 2013-10-22 10:44 /user/hadoop/small

[hadoop@master hadoop-1.0.4]$ bin/hadoop dfs -ls ./small

Found 3 items

-rw-r--r--   2 hadoop supergroup          0 2013-10-22 10:44 /user/hadoop/small/_SUCCESS

drwxr-xr-x - hadoop supergroup          0 2013-10-22 10:44 /user/hadoop/small/_logs

-rw-r--r--   2 hadoop supergroup      285 2013-10-22 10:44 /user/hadoop/small/part-m-00000

2.把這個表導入到另外一臺集羣中hbase中時,需要把part-m-00000put另外hadoop中,假設put的路徑也是:

/user/hadoop/small/

而且,這個要導入的hbase要已經建有相同第表格。

那麼從hadoop中導入數據到hbase

#hbase org.apache.hadoop.hbase.mapreduce.Driver import small part-m-00000  

這樣,沒有意外的話就能正常把hbase數據導入到另外一個hbase數據庫。


17.Web UI

用於訪問和監控Hadoop系統運行狀態

 

Daemon

缺省端口

配置參數

HDFS

Namenode

50070

dfs.http.address

Datanodes

50075

dfs.datanode.http.address

Secondarynamenode

50090

dfs.secondary.http.address

Backup/Checkpoint node*

50105

dfs.backup.http.address

MR

Jobracker

50030

mapred.job.tracker.http.address

Tasktrackers

50060

mapred.task.tracker.http.address

HBase

HMaster

60010

hbase.master.info.port

HRegionServer

60030

hbase.regionserver.info.port

220821638.png

220834707.png



本文出自 “smalldeng” 博客,請務必保留此出處http://smalldeng.blog.51cto.com/1038075/1329290

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章