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

说明该表已经被我删除。

至此,所有工作圆满结束。

 

原文地址:https://www.cnblogs.com/sixiweb/p/2919305.html