centos 6 安裝Hadoop和Hbase


本文以三台機器組成的一個Hadoop集群的安裝與配置為例。

三台機器的信息如下:

hostname 角色          IP

dc01         mast   192.168.68.57

dc02         slave   192.168.68.58

dc03         slave   192.168.68.59

用戶名均為root。

1.安裝JDK1.6並配置好java環境,參考:

CentOS6 安裝Tomcat7   中的安裝jdk部分

2.配置centos的SSH無密碼登錄:

ssh-keygen -t dsa -P "" -f ~/.ssh/id_dsa

cat ~/.ssh/id_dsa.pub  >> ~/.ssh/authorized_keys

測試是否配置成功:

ssh localhost

第一次運行會提示你是否連接,輸入yes回車即可。

 

修改機器名(以dc01為例,其他兩台機器方法相同):

vi /etc/sysconfig/network-scripts/ifcfg-eth0 

增加一行:

HOSTNAME=dc01

保存

vi /etc/sysconfig/network

HOSTNAME修改為dc01

保存

vi /etc/hosts

增加以下信息:

192.168.68.57 dc01
192.168.68.58 dc02
192.168.68.59 dc03

保存

至此,hostname修改完畢。重啟機器使得hostname生效。

配置dc01無密碼登錄dc02、dc03:

在dc01中

scp ./.ssh/authorized_keys dc02:~/.ssh/

scp ./.ssh/authorized_keys dc03:~/.ssh/

測試無密碼登錄配置是否成功:

ssh dc02

ssh dc03

下載hadoop,這里使用的是hadoop-1.0.3

tar -xzvf hadoop-1.0.3.tar.gz

mv hadoop-1.0.3 /usr/local/hadoop

 

3. 配置Hadoop:

關閉防火牆:

service iptables stop(重啟失效)
chkconfig iptables off(重啟生效)

配置NTP服務:

修改ntp.conf配置文件
# Please consider joining the pool (http://www.pool.ntp.org/join.html).
server 1.cn.pool.ntp.org
server 1.asia.pool.ntp.org
server 0.asia.pool.ntp.org
用本機器與互聯網時鍾同步,即作為集群中其他機器的ntp服務器
同理,在其他機器中修改ntp.conf配置文件
server ntpserver

配置hadoop:

echo $JAVA_HOME

把JAVA_HOME 的值拷貝一下,

修改hadoop-env.sh

vim /usr/local/hadoop/conf/hadoop-env.sh

找到:

# The java implementation to use. Required.
# export JAVA_HOME=/usr/lib/j2sdk1.5-sun

在下面添加一行:

export JAVA_HOME=/usr/java/jdk1.6.0_37


#將hbase中的jar包加入到hadoop的classpath中去:

#設置hbase的安裝目錄:

export HBASE_HOME=/usr/local/hbase

# Extra Java CLASSPATH elements. Optional.
export HADOOP_CLASSPATH=$HADOOP_CLASSPATH:$HBASE_HOME/hbase-0.94.1.jar:$HBASE_HOME/hbase-0.94.1-test.jar:$HBASE_HOME/conf:${HBASE_HOME}/lib/zookeeper-3.4.3.jar:${HBASE_HOME}/lib/protobuf-java-2.4.0a.jar:${HBASE_HOME}/lib/*

 

保存

修改core-site.xml 

vim /usr/local/hadoop/conf/core-site.xml

將文件改為如下:

<?xml version="1.0"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>

<!-- Put site-specific property overrides in this file. -->

<configuration>
  <property>
    <name>fs.default.name</name>
    <value>hdfs://dc01:9000</value>
  </property>
</configuration>

保存

修改mapred-site.xml 

vim /usr/local/hadoop/conf/mapred-site.xml  

<?xml version="1.0"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>

<!-- Put site-specific property overrides in this file. -->

<configuration>
  <property>
    <name>mapred.job.tracker</name>
    <value>dc01:9001</value>
  </property>
</configuration>

保存

修改masters

vim /usr/local/hadoop/conf/masters

改為:

dc01

保存

修改slaves

vim /usr/local/hadoop/conf/slaves

改為:

dc02

dc03

保存

修改HDFS 

vim  /usr/local/hadoop/conf/hdfs-site.xml

<?xml version="1.0"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>

<!-- Put site-specific property overrides in this file. -->

<configuration>
<property>
<name>dfs.name.dir</name>
<value>/opt/hdfs/name</value>
<final>true</final>
</property>
<property>
<name>dfs.data.dir</name>
<value>/opt/hdfs/data</value>
<final>true</final>
</property>

<property>

<name>dfs.permissions</name>
<value>false</value>
</property>

</configuration>

創建HDFS的存儲目錄:

分別到三台機器上創建以下目錄:

第一台:

mkdir /opt/hdfs/

mkdir /opt/hdfs/name/

mkdir /opt/hdfs/data/

第二台:

ssh dc02

mkdir /opt/hdfs/

mkdir /opt/hdfs/name/

mkdir /opt/hdfs/data/

 

第三台:

ssh dc03

mkdir /opt/hdfs/

mkdir /opt/hdfs/name/

mkdir /opt/hdfs/data/

 

至此,dc01已經配置完畢,將dc01的hadoop的文件拷貝到其他兩台機器:

scp -r /usr/local/hadoop dc02:/usr/local/

scp -r /usr/local/hadoop dc03:/usr/local/

 至此整個Hadoop集群配置完畢,下面來啟動Hadoop。

4. 啟動Hadoop:

將hadoop的bin目錄添加至當前用戶的.bash_profile中:

cd ~

vim .bash

找到PATH一行,在改行后面加入:

:/usr/local/hadoop/bin/:/usr/local/hbase/bin/

保存並使其立即生效:

source .bash_profile 

這樣以后可以在任何目錄中運行hadoop命令

cd /usr/local/hadoop/bin/

./hadoop namenode -format

./start-all.sh 

關閉系統防火牆(最好直接停止防火牆服務,或者可以增加允許通過的端口,具體端口我還沒來得及查找)

service iptables stop

添加防火牆規則,允許通過網頁查看hadoop集群的狀態.

 vi /etc/sysconfig/iptables

增加下面兩行:

-A INPUT -m state --state NEW -m tcp -p tcp --dport 50030 -j ACCEPT
-A INPUT -m state --state NEW -m tcp -p tcp --dport 50070 -j ACCEPT

保存。

重啟iptables服務:

service iptables restart

 

通過瀏覽器輸入下面地址查看集群的狀態:

http://192.168.68.57:50070

通過瀏覽器輸入下面地址查看Map/Reduce狀態:

http://192.168.68.57:50030

我的打開后是正在初始化,一直是這樣,不知道是什么原因(已解決,關掉防火牆即可)。

成功后:

 

 

5. 安裝Hbase:

下載Hbase,本文使用的Hbase版本為:hbase-0.94.1.tar.gz

將文件上傳至服務器dc01,解壓縮:

tar -xzvf hbase-0.94.1.tar.gz

cp -r  hbase-0.94.1 /usr/local/

改名字:

mv  /usr/local/hbase-0.94.1 /usr/local/hbase

修改hbase配置:

cd   /usr/local/hbase/conf

 

vim hbase-env.sh

將內容修改為下面的配置:

找到 #export JAVA_HOME=

修改為: export JAVA_HOME=/usr/java/jdk1.6.0_37

確保 export HBASE_MANAGES_ZK=true

保存

 

vim hbase-site.xml

將內容修改為以下部分:

 

<?xml version="1.0"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
<!--
/**
* Copyright 2010 The Apache Software Foundation
*
* Licensed to the Apache Software Foundation (ASF) under one
* or more contributor license agreements. See the NOTICE file
* distributed with this work for additional information
* regarding copyright ownership. The ASF licenses this file
* to you under the Apache License, Version 2.0 (the
* "License"); you may not use this file except in compliance
* with the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-->
<configuration>
<property>
<name>hbase.rootdir</name>
<value>hdfs://dc01:9000/hbase</value>
</property>
<property>
<name>hbase.cluster.distributed</name>
<value>true</value>
</property>

<property>
<name>hbase.master</name>
<value>dc01:60000</value>
</property>
<property>
<name>hbase.zookeeper.quorum</name>
<value>dc01,dc02,dc03</value>
</property>
<property>
<name>hbase.zookeeper.property.dataDir</name>
<value>/usr/local/hbase/zookeeper</value>
</property>
</configuration>

 保存

vim  regionservers

將內容修改為:

dc02
dc03

保存

至此,Hbase配置完畢.

將Hbase拷貝到其他機器:

scp -r /usr/local/hbase dc02:/usr/local

scp -r /usr/local/hbase dc03:/usr/local

到現在,hbase安裝完畢。

啟動hbase:

start-hbase.sh

等腳本執行完畢后,到各個機器上查看下hbase安裝是否成功:

master:

運行:jps


25483 Jps
25275 HMaster
9804 NameNode
10039 JobTracker
25222 HQuorumPeer
9966 SecondaryNameNode

說明hadoop和hbase運行均正常,

dc02:

運行jps:


19232 Jps
4135 DataNode
19107 HRegionServer
19033 HQuorumPeer
4229 TaskTracker

說明一切正常。

dc03:

運行jps:

jps
3557 DataNode
18484 HQuorumPeer
18720 Jps
18565 HRegionServer
3651 TaskTracker

一切正常。

在dc01上運行:hbase shell查看hbase是否正常:

hbase shell
HBase Shell; enter 'help<RETURN>' for list of supported commands.
Type "exit<RETURN>" to leave the HBase Shell
Version 0.94.1, r1365210, Tue Jul 24 18:40:10 UTC 2012

hbase(main):001:0>

說明進入了hbase的shell環境,現在用list命令來看一下hbase中有哪些表:

hbase(main):001:0> list
TABLE
0 row(s) in 0.9550 seconds

hbase(main):002:0>

說明hbase運行是正常的。

至此,可以說明hbase安裝並啟動成功了。

下面為hbase的一些基本操作,可以忽略。

 

Hbase基本操作:

接下來創建一張表:

hbase(main):002:0> create 'user_info','name'
0 row(s) in 1.2780 seconds

hbase(main):003:0>

創建成功,查看一下表是否存在:

hbase(main):003:0> list
TABLE
user_info
1 row(s) in 0.0500 seconds

hbase(main):004:0>

表果然存在。

現在往表中插入一條數據:

put 'user_info','1','name:','Tom'

插入完畢。

現在查詢是否表中存在數據:

輸入:scan 'user_info'

顯示:

ROW COLUMN+CELL
1 column=name:, timestamp=1376370874591, value=Tom

刪除表:

刪除hbase表時,需要先disable '表名稱',然后在drop '表名稱':

輸入:disable 'user_info'
顯示:0 row(s) in 2.1390 seconds

drop 'user_info'
0 row(s) in 1.4880 seconds

查詢該表是否還存在(用list)命令:

輸入:list

顯示:
TABLE
0 row(s) in 0.0320 seconds

說明該表已經被我刪除。

至此,所有工作圓滿結束。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM