Hbase分布式详细安装步骤
Hbase(版本:0.20.6)安装
注:自0.20.5以后版本集成了zookeeper,可匹配Hadoop0.20.2 准备工作:
二台机器上是这样的:都有一个coole的帐户,主目录是/home/coole 两台机器(内存应在512以上,否则可能会出现计算极度缓慢的情况): 一台机器名:master IP:211.87.239.181
一台机器名:slave IP:211.87.239.182
每台都建coole用户
四、配置Hbase
coole用户登录
1、下载/
下载hbase-0.20.6.tar.gz
2、coole用户解压hbase-0.20.6.tar.gz最终目录结构为/home/coole/hbase-0.20.6 解压命令:$tar zxvf hbase-0.20.6.tar.gz
3、配置/home/coole/hbase-0.20.6/conf下文件hbase-env.sh
用gedit打开hbase-env.sh修改
文件未尾加:
# The java implementation to use. Required.
export JAVA_HOME=/usr/java/jdk1.6.0_20
4、配置/home/coole/hbase-0.20.6/conf下文件hbase-site.xml
<?xml version="1.0"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
<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.master.port</name>
<value>60000</value>
</property>
<property>
<name>hbase.zookeeper.quorum</name>
<value>slave</value>
</property>
</configuration>
hbase.rootdir设置hbase在hdfs上的目录,主机名为hdfs的namenode节点所在的主机 hbase.cluster.distributed设置为true,表明是完全分布式的hbase集群
hbase.master设置hbase的master主机名和端口
hbase.zookeeper.quorum设置zookeeper的主机,官方推荐设置为3,5,7比较好,奇数。
5、配置/home/coole/hbase-0.20.6/conf下文件regionservers
Slave
6、设置环境变量,用gedit打开/etc/profile文件在文件未尾添加:
export HBASE_HOME=/home/coole/ hbase-0.20.6
export PATH=$PATH:$HBASE_HOME/bin
7、 在完成以上修改之后,把master上的hbase-0.20.6原样复制到slave上,保证目录结构一致,可使用如下命令:
scp –r /home/coole/ hbase-0.20.6 coole@slave:/home/coole
8、启动Hbase
start-hbase.sh
stop-hbase.sh
http://10.10.71.1:60010/master.jsp
http://10.10.71.1:60030/regionserver.jsp
http://10.10.71.1:60010/zk.jsp
使用jdk小工具jps,提供的一个显示当前所有java进程pid的命令。jps存放在JAVA_HOME/bin/jps,使用时为了方便请将JAVA_HOME/bin/加入到Path。笔者没有加入path故需到JAVA_HOME下使用此命令。
[coole@master coole]$ cd $JAVA_HOME
[coole@master jdk1.6.0_20]$ bin/jps
[coole@slave jdk1.6.0_20]$ bin/jps
1、安装hbase 0.20.5版本自带了zookeeper-3.2.2,所以不需要单独安装zookeeper。
2、hbase默认通过zookeeper管理,配置项在/jz/hbase-0.20.5/conf/hbase-env.sh文件中: # Tell HBase whether it should manage it's own instance of Zookeeper or not.
# export HBASE_MANAGES_ZK=true如果需要采用自带安装的zookeeper,可以将注释取消,把true修改为false。否则启动hbase的时候将会提示地址被占用。不过不影响hbase正常使用。
3、通过shell控制台想hbase插入中文数据将会报错,这是由于hbase中只是存放字节,采用程序将汉字改为字节录入即可。
4、permission denied的解决方法
如果想让bin下的所有文件都可执行 则 chmod a+x bin/*
第二篇:Hadoop分布式详细安装步骤
Hadoop分布式详细安装步骤
版本:0.20.2
准备工作:
由于Hadoop要求所有主机上hadoop的部署目录结构要相同,并且都有一个相同的用户名的帐户。
二台机器上是这样的:都有一个coole的帐户,主目录是/home/coole
两台机器(内存应在512以上,否则可能会出现计算极度缓慢的情况):
一台机器名:master IP:211.87.239.181
一台机器名:slave IP:211.87.239.182
每台都建coole用户
如果是ubuntu,为了便于用coole帐号修改系统设置和访问系统文件,推荐把coole也设为 sudoers(有 root 权限的用户),具体做法是用已有的 sudoer登录系统,执行
sudo visudo –f /etc/sudoers, 并在此文件中添加以下一行:
mapred ALL=(ALL) ALL
一、更改主机名:
1、修改/etc/sysconfig/network
NETWORKING=yes
HOSTNAME=yourname (在这修改hostname,把yourname换成你想用的名字) NISDOMAIN=eng-
修改后机器211.87.239.181中/etc/sysconfig/network文件内容为:
NETWORKING=yes
HOSTNAME=master
修改后机器211.87.239.182中/etc/sysconfig/network文件内容为:
NETWORKING=yes
HOSTNAME=slave
2、最后在终端下执行:
# hostname ***** (*****为修改后的hostname,即你想用的名字)
例如
#hostname master
特别提示:各处修改的名字要保持一致,否则会出现问题。
3、修改每台机器的/etc/hosts,保证每台机器间都可以通过机器名解析
配置etc/hosts文件,以 root 身份打开/etc/hosts文件。Master/slave做同样修改。内容如下(格式为:IP 主机名)(注意把127.0.0.1用#注释掉,不注释也行):
# Do not remove the following line, or various programs
# that require network functionality will fail.
#127.0.0.1 localhost.localdomain localhost
211.87.239.181 master
211.87.239.182 slave
二、实现无密码登录的SSH
准备工作:
由于 Hadoop 需要通过 ssh 服务在各个节点之间登录并运行服务,因此必须确保安装 Hadoop 的各个节点之间的网络畅通,网络畅通的标准是每台机器的主机名和IP 地址能够被所有机器正确解析(包括它自己) 。一个简单的测试方法是 PING 主机名。 例如:ping slave
如果 ping 不通,则需要更新主机上的主机名文件。具体做法是,以 root 身份打开/etc/hosts 文件(见步骤1.3)
ssh必须安装,且每次系统启动时 sshd 服务也必须自动启动。Ubuntu 用户可以用以下命令自动下载并安装:
$ sudo apt-get install ssh
$ sudo apt-get install rsync
其他Linux版本的用户可以到/portable.html下载openssh并按 照相关说明安装;
1、coole用户登录master机器。
$执行:ssh-keygen -t rsa 一路回车(当提示要为密钥输入 passphrase时回车采用空密码)将在home/coole/.ssh下生成密钥id_rsa和公钥id_rsa.pub
id-rsa.pub可能内容:
ssh-rsa
AAAAB3NzaC1yc2EAAAABIwAAAIEAsCdZkkr4At9szhPIyGcwM/KfgITUZbA+PokP+zHULI+qYRPdjLXuqMEH/LFd9EjjsitBLuWHCVxX9SC+8ToY5/PFUjB1ZgnOopb5SS3QFJ84pgFXP/HR+9jWUl3LTOTGF5uCWLZfusRP8rV3wG88vpltAjBaUKhK+6bB4npjagc= coole@master
2、把公钥id_rsa.pub内容拷贝到authorized下
$cat /home/coole/.ssh/id_rsa.pub>>/home/coole/.ssh/authorized_keys
3、把authorized_keys复制到slave机器的/home/coole/.ssh文件夹下(先建好.ssh文件夹) $scp authorized_keys coole@211.87.239.182:/home/hadoop/.ssh
说明:步骤2、3把公钥拷到所有节点的~/.ssh/authorized_keys这个文件中(包括自己本 身,保证ssh登录自己时也不需要密码),如果该文件已经存在则追加到这个文件中。 authorized_keys可能内容:
ssh-rsa
AAAAB3NzaC1yc2EAAAABIwAAAIEAsCdZkkr4At9szhPIyGcwM/KfgITUZbA+PokP+zHULI+qYRPdjLXuqMEH/LFd9EjjsitBLuWHCVxX9SC+8ToY5/PFUjB1ZgnOopb5SS3QFJ84pgFXP/HR+9jWUl3LTOTGF5uCWLZfusRP8rV3wG88vpltAjBaUKhK+6bB4npjagc= coole@master ssh-rsa
AAAAB3NzaC1yc2EAAAABIwAAAIEA1SU4S5ltdWBySgJMi1sxh1VX1a8KyFvzfxUwgsEX21aOvpO/S2ub8nOuN0he04llO1AbBE494JCR350fXYcq3G58P2JAZR1VwY0bFbnWBkvWeym+WNr+dM948x3h+T3xYZ/YFW+SqB31h4ClRfDMhgo/f0CA8MTOePRCM9witbc= coole@slave
4、设置文件夹权限
$chmod 750 hadoop
$chmod 750 .ssh
$chmod 644 authorized_keys (只有所有者对 authorized_keys 有读写权限,其他人不允许有写权限)
5、验证
如果配置正确,输出如下信息:
[root@master root]# ssh slave
The authenticity of host 'slave (211.87.239.182)' can't be established.
RSA key fingerprint is 01:f1:de:28:87:9f:60:3e:8a:cd:7d:f9:38:63:14:c8.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added 'slave,211.87.239.182' (RSA) to the list of known hosts.
root@slave's password:
Last login: Thu Nov 25 10:36:02 2010
[root@slave root]#
敲入 yes 并回车即可。此后在从 node1 向 node2 发起 ssh 连接时将不再需要输 入任何信息。
补充:当然在slave机器上也可以执行同样的内容,则slave就可以无密码访问msater了。
三、安装JDK
root用户登陆(其它用户登录似乎也行)
1.首先下载最新版jdk1.6, 名称为 jdk-6u2-linux-i586-rpm.bin
2.给所有的用户添加可执行的权限 chmod a+x jdk-6u2-linux-i586-rpm.bin
3./jdk-6u2-linux-i586-rpm.bin会生成文件jdk-6u2-linux-i586.rpm
4、安装程序 rpm -ivh jdk-6u2-linux-i586.rpm
5、设置环境变量,用gedit打开/etc/profile文件在文件未尾添加:
# set java and hadoop environment
export JAVA_HOME=/usr/java/jdk1.6.0_20
export JRE_HOME=/usr/java/jdk1.6.0_20/jre
export CLASSPATH=.:$JAVA_HOME/lib:$JAVA_HOME/jre/lib
export PATH=$JAVA_HOME/lib:$JAVA_HOME/jre/bin:$PATH
export HADOOP_HOME=/home/coole/hadoop-0.20.2
export PATH=$PATH:$HADOOP_HOME/bin
6、验证:#echo $JAVA_HOME
#echo $CLASSPATH
#echo $PATH
四、配置Hadoop
coole用户登录
1、下载/
点页面中的common进入/common/
点Download进入/common/releases.html
再点Download进入/common/releases.html#Download
再点Download a release now进入/dyn/closer.cgi/hadoop/core/ 点/hadoop/core/ 进入/hadoop/core/ 点hadoop-0.20.2/下载hadoop-0.20.2.tar.gz
2、coole用户解压hadoop-0.20.2.tar.gz最终目录结构为/home/coole/hadoop-0.20.2 解压命令:$tar zxvf hadoop-0.13.0.tar.gz
也可以创建一个链接:$ln -s hadoop0.20.2 hadoop
3、配置home/coole/hadoop-0.20.2/conf下文件hadoop-env.sh
用gedit打开hadoop-env.sh修改
# The java implementation to use. Required.
# export JAVA_HOME=/usr/lib/j2sdk1.5-sun
为
# The java implementation to use. Required.
export JAVA_HOME=/usr/java/jdk1.6.0_2
4、配置home/coole/hadoop-0.20.2/conf下文件core-site.xml
<?xml version="1.0"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
<!-- Put site-specific property overrides in this file. -->
<!-- 设置本机的namenode的端口号和临时文件的目录
fs.default.name是NameNode的URI。hdfs://主机名:端口/
根目录 hdfs://master:9000/
-->
<configuration>
<property>
<name>fs.default.name</name>
<value>hdfs://master:9000</value>
</property>
<property>
<name>hadoop.tmp.dir</name>
<value>/home/coole/tmp/</value>
</property>
</configuration>
5、配置home/coole/hadoop-0.20.2/conf下文件hdfs-site.xml
<?xml version="1.0"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
<!-- Put site-specific property overrides in this file. -->
<!-- dfs.name.dir是NameNode持久存储名字空间及事务日志的本地文件系统路径。 当这个值是一个逗号分割的目录列表时,nametable数据将会被复制到所有目录中做冗余备份。 dfs.data.dir是DataNode存放块数据的本地文件系统路径,逗号分割的列表。 当这个值是逗号分割的目录列表时,数据将被存储在所有目录下,通常分布在不同设备上。
dfs.replication是数据需要备份的数量,默认是3,如果此数大于集群的机器数会出错。 -->
<configuration>
<property>
<name>dfs.replication</name>
<value>1</value>
<description>副本个数,不配置默认是3,应小于datanode机器数量</description> </property>
<property>
<name>dfs.name.dir</name>
<value>/home/coole/name/</value>
<description>namenode上存储hdfs名字空间元数据 </description>
</property>
<property>
<name>dfs.data.dir</name>
<value>/home/coole/data/</value>
<description>datanode上数据块的物理存储位置</description>
</property>
</configuration>
6、配置home/coole/hadoop-0.20.2/conf下文件mapred-site.xml
<?xml version="1.0"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
<!-- Put site-specific property overrides in this file. -->
<!-- mapred.job.tracker是JobTracker的主机(或者IP)和端口。主机:端口。 -->
<configuration>
<property>
<name>mapred.job.tracker</name>
<value>hdfs://master:9001/</value>
</property>
</configuration>
7、配置home/coole/hadoop-0.20.2/conf下文件masters,内容为master主机名master
8、配置home/coole/hadoop-0.20.2/conf下文件slaves,内容为slave主机名,本例只有一台。slave
9、 在完成以上修改之后,把master上的Hadoop-0.20.2原样复制到slave上,保证目录结构一致,可使用如下命令:
scp –r /home/coole/hadoop-0.20.2 coole@slave:/home/coole
10、hadoop namenode –format
Hadoop的web方式查看,浏览器内打开:http://msater:50070
Hadoop查看工作情况,浏览器内打开:http://msater:50030
使用jdk小工具jps,提供的一个显示当前所有java进程pid的命令。jps存放在JAVA_HOME/bin/jps,使用时为了方便请将JAVA_HOME/bin/加入到Path。笔者没有加入path故需到JAVA_HOME下使用此命令。
[coole@master coole]$ cd $JAVA_HOME
[coole@master jdk1.6.0_20]$ bin/jps
3285 SecondaryNameNode
3167 NameNode
3415 Jps
3349 JobTracker
[coole@slave jdk1.6.0_20]$ bin/jps
7636 DataNode
7962 Jps 7749 TaskTracker
其它技巧
也可以创建链接$ln -s hadoop0.20.2 hadoop
按照以上步骤完成设置之后,所有的配置文件都在/hadoop/conf/目录中,所有的可执 行程序都在/hadoop/bin 目录中,但是 hadoop 的配置文件和 hadoop 的安装目录是放 在一起的,这样一旦日后升级,所有的配置文件都会被覆盖,因此建议将配置文件 与安装目录分离,一种比较好的方法就是建立一个存放配置文件的目录,例如
/home/coole/HadoopInstall/hadoop-config/ ,然后将 /hadoop/conf/ 目录中的
hadoop_site.xml,masters,slaves,hadoop_env.sh 四个文件拷贝到 hadoop-config/目 录中;
设置环境变量$HADOOP_CONF_DIR 指向存放配置文件的目录,为保证用户每次登 录到系统中都自动设置此环境变量,需要在/home/mapred/.bashrc 和/etc/profile 两个 文件中都添加一行命令:
export HADOOP_CONF_DIR=/home/mapred/hadoopinstall/hadoop_config/
这种配置方法使得 hadoop 的配置文件与安装目录分离,并通过设定一个链接指向当 前使用的 Hadoop 版本,大大降低了人工部署和维护 Hadoop 的复杂度和工作量;
如果要新加入节点的话,还要修改其它所有机器的/ets/hosts和.ssh/authorized_keys,加入对新节点的识别。
追加操作(视情况而定):
对 sshd 服务进行 配 置,去 除 密码验 证 ,方法 是 修改每 台 机器的
/etc/ssh/sshd_config 文件,把对应的项设置成如下所示的形式:
#去除密码认证
PasswordAuthentication no
AuthorizedKeysFile .ssh/authorized_keys 重启 sshd 服务:
sudo /etc/init.d/ssh restart