`
lwx522
  • 浏览: 35037 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

hadoop+hbase+zookeeper安装与配置

 
阅读更多

Hadoop1.0.3环境搭建

环境:操作系统Centos 6.3 64-bit  -- 采用的是最小安装

VMWare虚拟机4个,计划部署分配如下:

192.168.181.121 nameNode

192.168.181.122 dataNode

192.168.181.123 dataNode

192.168.181.124 dataNode

dataNode机器,都需要安装jdkssh,同时要将nameNode上安装的hadoop分发到各节点机器,位置、环境变量等尽量保持与nameNode一致。

1、安装基础工具

yum -y install wget

yum -y install make

yum -y install openssh*

2、安装JDK

将下载源码包jdk1.6.0_34.tar.gz

放到目录:/opt/java/ 下(这里位置目录可以自己定义,JDK环境变量需要对应)

直接解压:

# cd /opt/java/

tar zxvf jdk1.6.0_34.tar.gz

3、安装hadoop-1.0.3.tar.gz

将下载包解压到 /opt/hadoop/ 目录

# cd /opt/hadoop

tar xzvf hadoop-1.0.3.tar.gz

# ln -s hadoop-1. 0.3 hadoop

由于上述目录中hadoop的配置文件和hadoop的安装目录是放在一起的,以后升级hadoop版本的时候所有的配置文件都会被覆盖,因此将配置文件与安装目录分离,一种比较好的方法就是建立一个存放配置文件的目录,/opt/hadoop/hadoop-config/,然后将 /opt/hadoop/hadoop/conf/ 目录中的core-site.xmlhdfs-site.xmlmapred-site.xmlhadoop-env.shmastersslaves,这6个文件拷贝到 /hadoop/hadoop-config/ 目录中,并指定环境变量 $HADOOP_CONF_DIR指向该目录。环境变量在 /root/.bashrc 中设定。

# mkdir /opt/hadoop/hadoop-config 

# cp /opt/hadoop/hadoop/conf/*  /opt/hadoop/hadoop-config/

这里选择复制所有的配置文件

4、配置环境变量(集群节点都要配置环境变量)

vi /etc/profile

在文件中末尾加入以下内容:

JAVA_HOME=/opt/java/jdk1.6.0_34

HADOOP_HOME=/opt/hadoop/hadoop

HBASE_HOME=/opt/hbase/hbase

PATH=$JAVA_HOME/bin:$HADOOP_HOME/bin:$HBASE_HOME/bin:$PATH

export JAVA_HOME HADOOP_HOME HBASE_HOME PATH

让环境变量生效

source /etc/profile

# vi /root/.bashrc

增加

export HADOOP_CONF_DIR=/opt/hadoop/hadoop-config

export HBASE_CONF_DIR=/opt /hbase/hbase-config

source /root/.bashrc

5、多节点集群配置

5.1、设置 /opt/hadoop/hadoop-config/masters文件内容

     指定masterNode,可以用IP,也可以用机器名,masters文件配置将决定哪台机器是secondaryNameNode,准确的说这个文件名起的不对,它应该叫secondaries

vi /opt/hadoop/hadoop-config/masters

192.168.181.121    # secondaryNameNode

     其中192.168.181.121这个节点既是dataNode,同时也是secondaryNameNode

之前用的是默认的localhost,结果验证访问:http://192.168.181.121:50070/ 时报http-404错误,估计是域名解析的问题,网上推荐mastersslaves文件里使用机器名,这里用IP

5.2、设置 /opt/hadoop/hadoop-config/slaves文件内容,指定slavesNodes

vi /opt/hadoop/hadoop-config/slaves

192.168.181.122    # dataNode

192.168.181.123    # dataNode

192.168.181.124    # dataNode

指定哪些机器为从节点,用于存储数据块。

5.3、配置文件:/opt/hadoop/hadoop-config/hdfs-site.xml

<?xml version="1.0"?>

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

<configuration>

<property>

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

<value>/opt/hadoop/HadoopRun/name1,/opt/hadoop/HadoopRun/name2</value>

</property>

<property>

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

<value>/opt/hadoop/HadoopRun/data1,/opt/hadoop/HadoopRun/data2</value>

</property>

<property>

<name>dfs.replication</name>

<value>3</value>

</property>

</configuration>

配置文件参数说明:

dfs.name.dirNameNode上的本地文件路径,用于持久存储命名空间和日志信息文件等内容。该参数可以有多个值,值之间用逗号分割,表示文件映射关系信息将会被复制到每个目录中做冗余备份。

dfs.data.dirDataNode上的本地文件路径,用于存放文件数据块。该参数可以有多个值,值之间用逗号分割,表示文件数据块将会被复制到每个目录中做冗余备份,通常配置为不同的设备

dfs.replication:表示文件数据块要冗余备份的数量,默认值为3

注意:这里的name1name2data1data2文件夹不能预先创建,hadoop格式化时会自动创建,如果预先创建反而会有问题。

5.4、配置文件:/opt/hadoop/hadoop-config/mapred-site.xml

<?xml version="1.0"?>

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

<configuration>

        <property>

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

                <value>192.168.181.121:9001</value>

        </property>

        <property>

                <name>mapred.local.dir</name>

                <value>/HadoopRun/var</value>

        </property>

</configuration>

配置文件参数说明:

mapred.job.trackerJobTracker(任务分配管理)的主机(或者IP)和端口

mapred.local.dir:本地文件路径,用逗号分割的路径列表,是Map/Reduce临时数据存放的地方。

5.5、配置文件:/opt/hadoop/hadoop-config/core-site.xml

<?xml version="1.0"?>

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

<configuration>

<property>

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

<value>hdfs://192.168.181.121:9000</value>

        <description>NameNodeURI路径格式: hdfs://主机名:端口/</description>

</property>

<property>

<name>fs.checkpoint.period</name>

<value>3600</value>

        <description>进行checkpoint的周期时间间隔单位</description>

</property>

<property>

<name>fs.checkpoint.size</name>

<value>67108864</value>

<description>

            日志文件达到这个上限值时,将进行一次强制checkpoint操作,单位:byte

</description>

</property>

<property>

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

<value>/HadoopRun/tmp</value>

<description>

Hadoop的默认临时路径,这个最好配置,如果在新增节点或者其他情况下莫名其妙的DataNode启动不了,就删除此文件中的tmp目录即可。不过如果删除了NameNode机器的此目录,那么就需要重新执行NameNode格式化的命令。/hadoopRun/tmp这里给的路径不需要创建会自动生成。

</description>

</property>

</configuration>

5.6、修改/opt/hadoop/hadoop-config/hadoop-env.sh配置

vi /opt/hadoop/hadoop-config/hadoop-env.sh

找到JAVA_HOME设置:

# The java implementation to use.  Required.

export JAVA_HOME=/opt/java/jdk1.7.0_04

export HADOOP_PID_DIR=/opt/hadoop/hadoop/pids

# 切忌不要创建:/opt/hadoop/hadoop/pids

在文件末尾加以下内容:

取消环境变量 $HADOOP_HOME过时的警告

export HADOOP_HOME_WARN_SUPPRESS=1

6、使用ssh公钥密钥自动登陆linux服务器

实现原理

使用一种被称为"公私钥"认证的方式来进行ssh登录. "公私钥"认证方式简单的解释是

首先在客户端上创建一对公私钥 (公钥文件:~/.ssh/id_rsa.pub; 私钥文件:~/.ssh/id_rsa

然后把公钥放到服务器上(~/.ssh/authorized_keys自己保留好私钥

ssh登录时,ssh程序会发送私钥去和服务器上的公钥做匹配.如果匹配成功就可以登录了,这里nameNode服务器需要ssh无密码访问所有dataNode服务器。

6.1、在metaServer机器上生成公钥密钥对

问题:初次生成密钥时出错

# ssh-keygen

Generating public/private rsa key pair.

Enter file in which to save the key (/root/.ssh/id_rsa):

Enter passphrase (empty for no passphrase):

Enter same passphrase again:

open /root/.ssh/id_rsa failed: Permission denied.

Saving the key failed: /root/.ssh/id_rsa.

SELINUX=enforcing问题导致密钥创建失败

vi /etc/selinux/config

SELINUX=enforcing

改成

SELINUX=disabled

保存重启机器后,再生成。

# ssh-keygen -t rsa

Generating public/private rsa key pair.

Enter file in which to save the key (/root/.ssh/id_rsa):

Enter passphrase (empty for no passphrase):

Enter same passphrase again:

Your identification has been saved in /root/.ssh/id_rsa.

Your public key has been saved in /root/.ssh/id_rsa.pub.

The key fingerprint is:

98:3c:31:5c:23:21:73:a0:a0:1f:c6:d3:c3:dc:58:32 root@gifer

The key's randomart image is:

+--[ RSA 2048]----+

|.   E.=.o        |

|.o = @ o .       |

|. * * =          |

| o o o =         |

|  .   = S        |

|       .         |

|                 |

|                 |

|                 |

+-----------------+

成功后,目录下会多出两个文件:

私钥文件:id_raa

公钥文件:id_rsa.pub

6.2、将公钥文件id_rsa.pub内容放到authorized_keys

将生成的公钥文件默认在 /root/.ssh/ 目录下:

# cat id_rsa.pub >> authorized_keys

将内容追加到authorized_keys文件中,如果文件authorized_keys不存在,会自动创建。

同时,将id_rsa.pub文件内容,分发一份到其它dataNode机器

# ssh-copy-id -i id_rsa.pub  root@192.168.181.122

也可以使用scp命令进行复制

# scp authorized_keys  root@192.168.181.122:/root/.ssh/

6.3、设置权限

.ssh 文件夹权限:700

authorized_keys文件权限:600

6.5、验证ssh登录是否成功

# ssh root@192.168.181.122

Last login: Mon May 21 18:24:21 2012 from 192.168.181.121

表示成功

root@192.168.181.122's password: // 如果还提示要输入密码,说明配置不成功,这个很可能是权限的问题

7、启动hadoop前,检查配置

7.1、将部署进行分发

使用scp命令,将弄好的hadoop-1.0.3文件夹复制一份,分发到各dataNode节点相同目录下:

# ssh root@192.168.181.122 mkdir /opt/hadoop

# scp -r /opt/hadoop/*  192.168.181.122:/opt/hadoop/

  scp 参数 -r 表示,如果目标目录已经存在文件,就覆盖它。否则会报错:not a regular file

如果配置做了修改,需要对更改的配置文件重新发布到各节点即可:

# scp -r /opt/hadoop/hadoop-config/ 192.168.181.122:/opt/hadoop/hadoop-config/

7.2、防火墙设置

a. 图安全 —— 开端口(所有节点机器,包括namenode):

iptables -I INPUT -p tcp --dport 9000  -j ACCEPT

iptables -I INPUT -p tcp --dport 9001  -j ACCEPT

iptables -I INPUT -p tcp --dport 37974 -j ACCEPT

iptables -I INPUT -p tcp --dport 38840 -j ACCEPT

iptables -I INPUT -p tcp --dport 49785 -j ACCEPT

iptables -I INPUT -p tcp --dport 50030 -j ACCEPT

iptables -I INPUT -p tcp --dport 50070 -j ACCEPT

iptables -I INPUT -p tcp --dport 50090 -j ACCEPT

service iptables save

b. 局域网设置

# iptables -I INPUT -s 192.168.0.0/255.255.255.0 -j ACCPET

iptables -I INPUT 9 -s 192.168.0.0/255.255.255.0 -j ACCEPT

service iptables save

c. 查看防火墙信息

service iptables status

d. 图省事 —— 关防火墙

service iptables stop

8、安装启动hadoop系统

8.1、格式化一个新的分布式文件系统

[root@masterNode /]# cd /opt/hadoop/hadoop

[root@masterNode hadoop-1.0.3]# bin/hadoop namenode -format

12/05/23 13:36:17 INFO namenode.NameNode: STARTUP_MSG:

/************************************************************

STARTUP_MSG: Starting NameNode

STARTUP_MSG:   host = localhost/127.0.0.1

STARTUP_MSG:   args = [-format]

STARTUP_MSG:   version = 1.0.3

STARTUP_MSG:   build = https://svn.apache.org/repos/asf/hadoop/common/branches/branch-1.0 -r 1335192; compiled by 'hortonfo' on Tue May  8 20:31:25 UTC 2012

************************************************************/

Re-format filesystem in /hadoop_home/name1 ? (Y or N) y

Format aborted in /hadoop_home/name1

12/05/23 13:36:29 INFO namenode.NameNode: SHUTDOWN_MSG:

/************************************************************

SHUTDOWN_MSG: Shutting down NameNode at localhost/127.0.0.1

************************************************************/

看到以上输出表示格式化失败!格式化失败的原因是:在目录 /hadoop_home/ 下预先创建了文件夹:name1,所以出错了。删除预先创建的文件夹,重新格式化。格式化时会自动生成文件夹。

[root@masterNode hadoop-1.0.3]# bin/hadoop namenode -format

12/05/24 03:21:29 INFO namenode.NameNode: STARTUP_MSG:

/************************************************************

STARTUP_MSG: Starting NameNode

STARTUP_MSG:   host = localhost/127.0.0.1

STARTUP_MSG:   args = [-format]

STARTUP_MSG:   version = 1.0.3

STARTUP_MSG:   build = https://svn.apache.org/repos/asf/hadoop/common/branches/branch-1.0 -r 1335192; compiled by 'hortonfo' on Tue May  8 20:31:25 UTC 2012

************************************************************/

12/05/24 03:21:29 INFO util.GSet: VM type       = 64-bit

12/05/24 03:21:29 INFO util.GSet: 2% max memory = 19.33375 MB

12/05/24 03:21:29 INFO util.GSet: capacity      = 2^21 = 2097152 entries

12/05/24 03:21:29 INFO util.GSet: recommended=2097152, actual=2097152

12/05/24 03:21:29 INFO namenode.FSNamesystem: fsOwner=root

12/05/24 03:21:29 INFO namenode.FSNamesystem: supergroup=supergroup

12/05/24 03:21:29 INFO namenode.FSNamesystem: isPermissionEnabled=true

12/05/24 03:21:29 INFO namenode.FSNamesystem: dfs.block.invalidate.limit=100

12/05/24 03:21:29 INFO namenode.FSNamesystem: isAccessTokenEnabled=false accessKeyUpdateInterval=0 min(s), accessTokenLifetime=0 min(s)

12/05/24 03:21:29 INFO namenode.NameNode: Caching file names occuring more than 10 times

12/05/24 03:21:30 INFO common.Storage: Image file of size 110 saved in 0 seconds.

12/05/24 03:21:30 INFO common.Storage: Storage directory /hadoop_home/name1 has been successfully formatted.

12/05/24 03:21:30 INFO common.Storage: Image file of size 110 saved in 0 seconds.

12/05/24 03:21:30 INFO common.Storage: Storage directory /hadoop_home/name2 has been successfully formatted.

12/05/24 03:21:30 INFO namenode.NameNode: SHUTDOWN_MSG:

/************************************************************

SHUTDOWN_MSG: Shutting down NameNode at localhost/127.0.0.1

************************************************************/

格式化分布式文件系统成功。

8.2、启动hadoop服务

a. 启动hdfs守护进程

[root@masterNode hadoop-1.0.3]#  bin/start-dfs.sh

starting namenode, logging to /hadoop-1.0.3/libexec/../logs/hadoop-root-namenode-masterNode.out

192.168.181.222: starting datanode, logging to /hadoop-1.0.3/libexec/../logs/hadoop-root-datanode-node3.out

192.168.181.223: starting datanode, logging to /hadoop-1.0.3/libexec/../logs/hadoop-root-datanode-node1.out

192.168.181.224: starting datanode, logging to /hadoop-1.0.3/libexec/../logs/hadoop-root-datanode-node2.out

192.168.181.221: starting secondarynamenode, logging to /hadoop-1.0.3/libexec/../logs/hadoop-root-secondarynamenode-masterNode.out

b. 启动mapreduce守护进程

[root@masterNode hadoop-1.0.3]#  bin/start-mapred.sh

starting jobtracker, logging to /hadoop-1.0.3/libexec/../logs/hadoop-root-jobtracker-masterNode.out

192.168.181.222: starting tasktracker, logging to /hadoop-1.0.3/libexec/../logs/hadoop-root-tasktracker-node2.out

192.168.181.223: starting tasktracker, logging to /hadoop-1.0.3/libexec/../logs/hadoop-root-tasktracker-node1.out

192.168.181.224: starting tasktracker, logging to /hadoop-1.0.3/libexec/../logs/hadoop-root-tasktracker-node3.out

注:对于命令bin/start-all.sh(启动所有守护进程)在hadoop-1.0.3版本中已不推荐使用了。

8.3、验证安装是否成功

使用jps命令查看启动的守护进程有哪些:

[root@masterNode hadoop-1.0.3]# jps

12275 NameNode

12445 SecondaryNameNode

12626 Jps

12529 JobTracker

[root@node3 ~]# jps

6621 DataNode

6723 TaskTracker

6819 Jps

另外可通过浏览器访问:

NameNode     http://192.168.181.121:50070/

JobTracker     http://192.168.181.121:50030/

TaskTracker    http://192.168.181.122:50060/

8.4、关闭hadoop服务

关闭hdfs守护进程

[root@masterNode hadoop-1.0.3]#  bin/stop-dfs.sh

stopping namenode

192.168.181.122: stopping datanode

192.168.181.123: stopping datanode

192.168.181.124: stopping datanode

192.168.181.121: stopping secondarynamenode

关闭mapreduce守护进程

[root@masterNode hadoop-1.0.3]#  bin/stop-mapred.sh

stopping jobtracker

192.168.181.122: stopping tasktracker

192.168.181.123: stopping tasktracker

192.168.181.124: stopping tasktracker

注:对于命令bin/stop-all.sh(关闭所有守护进程)在hadoop-1.0.3版本中已不推荐使用了。

8.5、简单测试 

# cd /opt/hadoop/hadoop/bin

# ./hadoop dfs -mkdir testdir

# ./hadoop dfs -put /root/install.log  testdir/install.log-dfs

 /root/install.log 存储到hdfs中的testdir中,重命名为install.log-dfs

# ./hadoop dfs -ls

# ./hadoop dfs -ls testdir

8.6、安装过程遇到的问题:

1、想在分布式文件系统中创建一个目录input,结果报错:

[root@masterNode hadoop-1.0.3]# bin/hadoop fs -mkdir input

mkdir: org.apache.hadoop.hdfs.server.namenode.SafeModeException: Cannot create directory /user/root/input. Name node is in safe mode.

解决办法:关闭安全模式

[root@masterNode hadoop-1.0.3]# bin/hadoop dfsadmin -safemode leave

Safe mode is OFF

===========================================================

1、 hbase安装部署

# cd /opt/hbase

# tar -zxvf hbase-0.94.1.tar.gz

# ln -s hbase-0.94.1 hbase

# mkdir hbase-config

# cp /opt/hbase/hbase/conf/*  /opt/hbase/hbase-config/

2、配置文件修改

# mkdir /opt/hbase/hbase/tmp

# vim /opt/hbase/hbase-config/hbase-env.sh

增加

export JAVA_HOME=/opt/java/jdk1.6.0_34

export HBASE_MANAGES_ZK=true

export HBASE_PID_DIR=/opt/hbase/hbase/tmp

# vim hbase-site.xml

<?xml version="1.0"?> 

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

<configuration>

<property>

<name>hbase.rootdir</name>

<value>hdfs://192.168.181.121:9000/hbase</value> // 注意主机名和端口号要与hadoopdfs name的对应

</property>

<property>

<name>hbase.cluster.distributed</name>

<value>true</value>

</property>

<property>

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

<value>192.168.181.121</value>

</property>

<property>

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

<value>60000</value>

</property>

<property>

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

<value>2222</value>

</property>

</configuration>

配置hbase服务器名称

# vi regionservers 

192.168.181.122

192.168.181.123

192.168.181.124

2、 复制hbase文件

master(192.168.181.121) 

# ssh root@192.168.181.122 mkdir /opt/hbase/

# ssh root@192.168.181.123 mkdir /opt/hbase/

# ssh root@192.168.181.124 mkdir /opt/hbase/

# scp -r /opt/hbase/*  root@192.168.181.122:/opt/hbase/

# scp -r /opt/hbase/*  root@192.168.181.123:/opt/hbase/

# scp -r /opt/hbase/*  root@192.168.181.124:/opt/hbase/

192.168.181.122192.168.181.123192.168.181.124分别重做软链接

# rm rf /opt/hbase/hbase

# ln -s /opt/hbase/hbase-0.94.1  /opt/hbase/hbase

3、 测试 

master(192.168.181.121)上启动

# cd /opt/hbase/hbase/

# bin/start-hbase.sh

# hbase shell

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

Version: 0.20.6, r965666, Mon Jul 19 16:54:48 PDT 2010

hbase(main):001:0> create 'test','data'

0 row(s) in 1.1920 seconds 

hbase(main):002:0> list

test

1 row(s) in 0.0200 seconds

hbase(main):003:0> quit

 

 

<!--EndFragment-->
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics