HBase-0.94.4+CentOS6.X 集群配置

24 Jan 2013

平台环境

  • CentOS 6.X
  • Hadoop-1.0.4 集群平台
  • 三台机器
    • 192.168.1.111 node111 (NameNode, SecondaryNameNode, DataNode)
    • 192.168.1.112 node112 (DataNode)
    • 192.168.1.113 node113 (DataNode)

Step1 规划集群 hosts

在 /etc/hosts 中加入:

192.168.1.111 node111
192.168.1.112 node112
192.168.1.113 node113

以上操作需要在每台机器上执行

Step2 安装 HBase (master)

HBase 使用最新稳定版 0.94.4

# 官网 http://hbase.apache.org/ 下载 HBase 项目
$ wget http://apache.dataguru.cn/hbase/stable/hbase-0.94.4.tar.gz
# 自定义解压在 /home/hadoop/cluster/ 下
$ tar -xzvf hbase-0.94.4.tar.gz -C ~/cluster/
$ cd ~/cluster/hbase-0.94.4

在 ~/.bashrc 中加入环境变量:

export JAVA_HOME=/home/hadoop/jdk1.7.0_07
export HADOOP_HOME=/home/hadoop/cluster/hadoop-1.0.4
export HBASE_HOME=/home/hadoop/cluster/hbase-0.94.4
export PATH=$PATH:$JAVA_HOME/bin:$HADOOP_HOME/bin:$HBASE_HOME/bin

Step3 配置集群

Step3-1 环境配置

在 $HBASE_HOME/conf/hbase-env.sh 中定义了 HBase 启动时需要的环境变量设置,需要配置 JAVA_HOME(JDK的路径)变量和 HBASE_CLASSPATH 变量:

1 # The java implementation to use.  Required.
2 export JAVA_HOME=/home/hadoop/jdk1.7.0_07
3 # Extra Java CLASSPATH elements.  Optional.
4 # 此处添加 Hadoop 的 conf 目录
5 export HBASE_CLASSPATH=/home/hadoop/cluster/hadoop-1.0.4/conf

设置允许 HBase 管理 Zookeeper:

# Tell HBase whether it should manage it's own instance of Zookeeper or not.
export HBASE_MANAGES_ZK=true

Step3-2 HBase 核心配置

HBase 包括一个默认配置文件($HBASE_HOME/src 目录下的 main/resources/hbase-default.xml),先好好看看并理解默认配置文件中的那些属性。虽然默认配置文件能让 HBase 核心程序顺利启动,但对于开发人员来说一般需要自己来设置一些常规配置以满足开发和业务的需求,所以我们需要对默认配置文件的值进行覆盖,具体方法如下:

Step3-2-1 hbase-site.xml 配置

$HBASE_HOME/conf/hbase-site.xml 是 Hadoop 的核心配置文件,对应并覆盖 hbase-default.xml 中的配置项。我们一般在这个文件中增加如下配置:

<configuration>  
	<property>   
		<!-- hbase 的根目录 -->  
		<name>hbase.rootdir</name>   
		<value>hdfs://node111:9000/hbase</value>
	</property> 
	<property>   
		<!-- 标记 hbase 是分布式的 -->  
		<name>hbase.cluster.distributed</name>   
		<value>true</value>
	</property>
	<property>   
		<!-- hbase 的 tmp 目录 -->  
		<name>hbase.tmp.dir</name>   
		<value>/home/hadoop/cluster/data/hbase-tmp</value>
	</property>
	<property>     
		<name>hbase.master</name>   
		<value>node111:60000</value>
	</property>
	<property>   
		<!-- zookeeper 运行的机器,要为奇数个,使得投票更公平 -->  
		<name>hbase.zookeeper.quorum</name>   
		<value>node111,node112,node113</value>
	</property>
	<property>   
		<!-- zookeeper 的数据目录,前提需要设置 hbase 的 tmp 目录 -->  
		<name>hbase.zookeeper.property.dataDir</name>   
		<value>${hbase.tmp.dir}/zookeeper</value>
	</property>
</configuration> 

Step3-3 主从配置

修改 $HBASE_HOME/conf/regionservers 文件,把 DataNode 添加进去

node112
node113

如果你对以上介绍的配置项做了正确的配置,那么你的 HBase 集群只差启动了,当然,在 $HBASE_HOME/conf 目录下还包括其它的一些配置文件,但那些都不是必须设置的,如果有兴趣你可以自己去了解了解。

值得注意的是 HBase 集群的所有机器的配置应该保持一致,一般我们在配置完 master 后,使用 scp 将配置文件同步到集群的其它服务器上。

Step4 启动 HBase

经过以上两个步骤,HBase 的安装和配置已经OK了,那么下面我们就来启动 HBase 集群:

$ start-hbase.sh

Step5 jps验证

在 master 节点:

$ jps
# 23481 HMaster
# 22925 TaskTracker
# 22496 DataNode
# 22345 NameNode
# 23322 HQuorumPeer
# 22660 SecondaryNameNode
# 26026 Jps
# 22772 JobTracker

在 slave 节点:

$ jps
# 12817 TaskTracker
# 12920 HQuorumPeer
# 15599 Jps
# 13098 HRegionServer
# 12694 DataNode

能看到如上信息,则证明 HBase 集群已经配置成功了,哦耶~

如果出现错误或 HBase 集群未正常启动,可以查看 $HBASE_HOME/logs/ 下的日志文件。

>>Hbase-0.94.4 on Hadoop-1.0.4-1安装向导


yum 常用参数备忘录

23 Jan 2013

yum 是一个用于管理 rpm 包的后台程序,用 python 写成,可以非常方便的解决 rpm 的依赖关系。在建立好 yum 服务器后,yum 客户端可以通过 http、ftp 方式获得软件包,并使用方便的命令直接管理、更新所有的 rpm 包,甚至包括 kernel 的更新。现在把常用的 yum 命令参数整理如下:

列举包文件

列出资源库中所有可以安装或更新的 rpm 包

1 $ sudo yum list

列出资源库中特定的可以安装或更新以及已经安装的 rpm 包

1 # 列出名为 perl 的包
2 $ sudo yum list perl
3 # 列出 perl 开头的包
4 $ sudo yum list perl*

列出资源库中所有可以更新的 rpm 包

1 $ sudo yum list updates

列出已经安装的所有的 rpm 包

1 $ sudo yum list installed

列出已经安装的但是不包含在资源库中的 rpm 包

1 $ sudo yum list extras

注: extras 是 repos.d 中定义的资源列表名称

列举资源信息

列出资源库中所有可以安装或更新的 rpm 包的信息

1 $ sudo yum info

列出资源库中特定的可以安装或更新以及已经安装的 rpm 包的信息

1 # 列出 perl 包信息
2 $ sudo yum info perl
3 # 列出 perl 开头的所有包的信息
4 $ sudo yum info perl*

列出资源库中所有可以更新的 rpm 包的信息

1 $ sudo yum info updates

列出已经安装的所有的 rpm 包的信息

1 $ sudo yum info installed

列出已经安装的但是不包含在资源库中的 rpm 包的信息

1 $ sudo yum info extras

搜索

搜索匹配特定字符的 rpm 包

1 # 在包名称、包描述等中搜索
2 $ sudo yum search perl

搜索有包含特定文件名的 rpm 包

1 $ sudo yum provides realplay

管理包

安装 rpm 包

1 # 安装 perl 包
2 $ sudo yum install perl
3 # 安装perl 开头的包
4 $ sudo yum install perl*

删除 rpm 包,包括与该包有倚赖性的包

1 # 会删除 perl-* 所有包
2 $ sudo yum remove perl*

软件组管理

 1 # 安装指定的组
 2 $ sudo yum groupinstall "Chinese Support"
 3 # 安装了的组成员软件包更新
 4 $ sudo yum groupupdate "Chinese Support"
 5 # 安装了的组和可以安装的组一览显示
 6 $ sudo yum grouplist "Chinese Support"
 7 # 删除指定的组
 8 $ sudo yum groupremove "Chinese Support"
 9 # 指定组所包含的软件包显示
10 $ sudo yum groupinfo "Chinese Support"

更新

检查可更新的 rpm 包

1 $ sudo yum check-update

更新所有的 rpm 包

1 $ sudo yum update

更新指定的 rpm 包,如更新 kernel 和 kernel source

1 $ sudo yum update kernel kernel-source

大规模的版本升级,与 yum update 不同的是,连旧的淘汰的包也升级

1 $ sudo yum upgrade

清空缓存

清除暂存中 rpm 包文件

1 $ sudo yum clean packages

清除暂存中 rpm 头文件

1 $ sudo yum clean headers

清除暂存中旧的 rpm 头文件

1 $ sudo yum clean oldheaders

清除暂存中旧的 rpm 头文件和包文件

1 $ sudo yum clean all

>> yum命令常用参数详解


Vim 实用技巧积累

23 Jan 2013

初级个性化配置

1. vim 是什么?

vim 是 Vi IMproved,是编辑器 Vi 的一个加强版,一个极其强大并符合 IT 工程师(程序员、运维)习惯的编辑器。

2. 配置文件在哪?

Windows 系统的配置文件是 vim 安装目录下的 vimrc 文件。

Linux 系统,RHEL 和 CentOS 的配置文件是 /etc/vimrc,Debian 和 Ubuntu 的配置文件是 /usr/share/vim/vimrc。

Mac OS X 的配置文件是 /usr/share/vim/vimrc。

3. vimRC 中的 RC 是什么意思?

一般在运行某个软件、环境或工具之初,要初始执行的一些命令,称为 Run Commands,即 RC。根据 Wikipedia.org 的记载,RC 缩写的用法源自 MIT 的相容分时操作系统 (Compatible Time-Sharing System,CTSS)1。所以以后如果你看到了 SystemRC 或者 ScreenRC,也就知其缘由了。

4. 三种基本模式

在《大家来学vim》中提到 vim 有6+5种模式,但除了细分程度不同外,实际上常用的只有3种模式: Normal ModeInsert ModeCommand-line Mode

  • 从 Normal Mode 进入 Insert Mode,可以按 i、I、a、A、o、O、r、R 即可。其中 i 和 I 表示插入(Insert),r 和 R 表示替换(replace)。
  • 从 Insert Mode 进入 Normal Mode,只需要按 ESC 键即可。
  • 从 Normal Mode 进入 Command-line Mode,可以按 :、/、?。其中 : 表示输入 vim 命令,/ 表示后面输入要向下搜索的字符串, ? 表示后面输入要向上搜索字符串。
  • 从 Command-line Mode进入 Normal Mode,只需要按 ESC 键即可了。

你可以把 Normal Mode 理解为常态,进入其他任何一种模式,需要某种特殊方式,而从其他特殊模式回到 Normal Mode,就按 ESC 键即可。

5. vim 中那些最最常用的配置

当你尝试去 Google 一些其他人的 vimrc 配置时,你一定会找到一篇叫做《The ultimate vim configuration》的文章,不过它的作者,Amix 后来在他的博客上提到2,这份在 Google 搜索 vimrc 会排在前十的 vim 配置文件,如今已经过时了,所以他提供了一些更新信息。

  1. 颜色设置
    • syntax on 开启代码高亮
    • syntax off 关闭代码高亮
    • syntax enable 开启代码高亮
  2. 搜索设置
    • set hlsearch 开启搜索高亮
    • set nohlsearch 关闭搜索高亮
    • set incsearch 输入搜索字符串的同时进行搜索
    • set ignorecase 搜索时忽略大小写
  3. 用户界面
    • set showmode 开启模式显示
    • set ruler 开启光标位置提示
    • set number 显示行号
    • set nonu 不显示行号
    • set cursorline 强调光标所在行
    • set cmdheight=1 命令部分高度为1
  4. 编辑辅助配置
    • set autoindent 自动缩进
    • set noautoindent 不自动缩进
    • set smartindent 智能缩进
    • set autoread 当文件在外部被改变时,vim自动更新载入
    • set showmatch 显示匹配的括号

1 Run Commands

2 The Ultimate vim Configuration(vimRC)


CentOS+SVN 服务器搭建

23 Jan 2013

平台环境

  • CentOS 6.X (同样适用其他 Linux 发行版本)
  • 服务器节点 192.168.1.101

SVN 简介&工作原理

subversion(简称svn)是近几年崛起的版本管理软件,是 cvs 的接班人,目前绝大多数开源软件都使用 svn 作为代码版本管理软件。Subversion 支持 linux 和 windows,但较多安装在 linux 下。

svn 服务器有两种运行方式: 独立服务器和借助于 apache。 svn:// 或 http://

svn 客户端 tortoisesvn

svn 的基本工作原理: 在一台服务器上建立一个源代码库,库里可以存放许多不同项目的源程序。有源代码库管理员统一管理这些源程序。每个用户在使用源代码库之前,首先要把源代码库里的项目文件下载到本地,然后开发人员可以在本地修改,之后用 svn 命令进行提交,由源代码库统一管理修改。

版本控制解决了:

  • 代码管理混乱
  • 解决代码冲突困难
  • 在代码整合期间引发 bug
  • 无法对代码的拥有者进行权限控制
  • 项目不同版本的发布困难

SVN 工作原理示意图:

subversion目录说明:

  • dav 目录: 是提供 apache 与 mod_dav_svn 使用的目录,让他们存储内部数据
  • db 目录: 是所有版本控制的数据存放文件
  • hooks 目录: 放置 hook 脚本文件的目录
  • locks 目录: 用来放置 subversion 建库锁定数据的目录,用来追踪存取文件库的客户端
  • format 文件: 是一个文本文件,里面只放了一个整数。表示当前文件库配置的版本号
  • conf 目录: 是这个仓库的配置文件(仓库的用户访问账号、权限等)

SVN Server 详细配置

系统环境: CentOS 6.3 最小化安装(关闭 iptables 和 selinux) + ssh + yum

Step1 安装必须软件包

$ yum install subversion mysql-server httpd mod_dav_svn mod_perl sendmail wget gcc-c++ make unzip perl* ntsysv vim-enhanced
  • subversion (SVN 服务器)
  • mysql-server (用于 codestriker)
  • httpd mod_dav_svn mod_perl (用于支持 WEB 方式管理 SVN 服务器)
  • sendmail (用于配置用户提交代码后发邮件提醒)
  • wget gcc-c++ make unzip perl* (必备软件包)
  • ntsysv vim-enhanced (可选)

Step2 SVN Server 配置

Step2-1 新建用于存储 SVN 文件的目录

$ mkdir /home/hadoop/svn

Step2-2 新建一个版本仓库

$ svnadmin create /home/hadoop/svn/project

Step2-3 初始化版本仓库中的目录

# 建立临时目录
$ mkdir project project/server project/client project/test
$ svn import project/ file:///home/hadoop/svn/project -m “初始化SVN目录”
# 删除临时建立的目录
$ rm -rf project

Step2-4 添加用户

添加 SVN 用户非常简单,只需在 /home/hadoop/svn/project/conf/passwd 文件添加一个形如 “username = password” 的条目就可以了。

[users]
# harry = harryssecret
# sally = sallyssecret
pm = pm_pw
server_group = server_pw
client_group = client_pw
test_group = test_pw

Step2-5 修改用户访问策略

/home/hadoop/svn/project/conf/authz 记录用户的访问策略

[groups]
project_p = pm
project_s = server1,server2,server3
project_c = client1,client2,client3
project_t = test1,test1,test1

[project:/]
@project_p = rw
* =

[project:/server]
@project_p = rw
@project_s = rw
* =

[project:/client]
@project_p = rw
@project_c = rw
* =

[project:/doc]
@project_p = rw
@project_s = r
@project_c = r
@project_t = r
* =

以上信息表示,只有 project_p 用户组有根目录的读写权。r 表示对该目录有读权限,w 表示对该目录有写权限,rw 表示对该目录有读写权限。最后一行的 * = 表示,除了上面设置了权限的用户组之外,其他任何人都被禁止访问本目录。这个很重要,一定要加上!

Step2-6 修改 svnserve.conf 文件,使用户和策略配置生效

[general]
# 定义非授权用户的访问权限,有三种方式: none(限制访问), read(只读), write(读写),默认为 read 
anon-access = none
# 定义授权用户的访问权限,有三种方式: none(限制访问), read(只读), write(读写),默认为 write
auth-access = write
# 定义保存用户名和密码的文件名称,这里为 passwd,和该文件位于同一目录
password-db = /home/hadoop/svn/project/conf/passwd
# 定义保存授权信息的文件名称,这里为 authz,和该文件位于同一目录
authz-db = /home/hadoop/svn/project/conf/authz
# 定义客户端连接是的“认证命名空间”, SVN 会在认证提示里显示,并且作为凭证缓存的关键字
realm = My First Repository

Step2-7 启动服务器

$ svnserve -d -r /home/hadoop/svn
# -d表示以 daemon 方式(后台运行)运行
# -r 指定根目录

如果修改了 svn 配置,需要重启 svn 服务,步骤如下:

# svn 服务端口号: 3690
$ ps -aux|grep svnserve
$ kill -9 ID号
$ svnserve -d -r /home/hadoop/svn

Step2-8 测试服务器

$ mkdir test
$ cd test
$ svn co svn://192.168.1.101/project
Authentication realm: <svn://192.168.1.101:3690>
Password for 'root':
Authentication realm: <svn://192.168.1.101:3690>
Username: server_group
Password for 'server_group':
svn: Authorization failed ( server_group没用根目录的访问权 )

$ svn co svn://192.168.1.101/project
Authentication realm: <svn://192.168.1.101:3690>
Password for ‘root’:
Authentication realm: <svn://192.168.1.101:3690>
Username: pm
Password for ‘pm’:
A    project/test
A    project/server
A    project/client
Checked out revision 1.  ( 测试提取成功 )

$ cd project/server
$ vim main.c
$ svn add main.c
$ svn commit main.c -m “test”
Adding    main.c
Transmitting file data .
Committed revision 2.  ( 测试提交成功 )

Step2-9 删除一个版本仓库

svn delete 只会删除版本库中的文件,svnadmin 也没有提供删除版本库的子命令。只能在 SVN 服务器端强制删除文件:

# $REPOS_PATH 是创建版本仓库时使用的地址 svnadmin create $REPOS_PATH
$ rm -rf $REPOS_PATH

Hadoop-1.0.4+CentOS6.X 集群配置

22 Jan 2013

平台环境

  • CentOS 6.X
  • ssh
  • rsyn
  • JDK7
  • 三台机器
    • 192.168.1.111 node111
    • 192.168.1.112 node112
    • 192.168.1.113 node113

Step1 规划集群 hosts

在 /etc/hosts 中加入:

192.168.1.111 node111
192.168.1.112 node112
192.168.1.113 node113

以上操作需要在每台机器上执行

Step2 安装 Hadoop (master)

Hadoop 使用最新稳定版 1.0.4

# 官网 http://hadoop.apache.org/ 下载 Hadoop 项目
$ wget http://www.apache.org/dist/hadoop/core/hadoop-1.0.4/hadoop-1.0.4.tar.gz
# 自定义解压在 /home/hadoop/cluster/ 下
$ mkdir ~/cluster
$ tar -xzvf hadoop-0.20.2.tar.gz -C ~/cluster/
$ cd ~/cluster/hadoop-1.0.4

在 /etc/profile 中加入环境变量:

export JAVA_HOME=/home/hadoop/jdk1.7.0_07
export HADOOP_HOME=/home/hadoop/cluster/hadoop-1.0.4
export PATH=$PATH:$JAVA_HOME/bin:$HADOOP_HOME/bin

source /etc/profile 使其生效^

Step3 配置集群

根据 Hadoop 文档的描述 “The Hadoop daemons are NameNode/DataNode and JobTracker/TaskTracker.” 可以看出 Hadoop 核心守护程序就是由 NameNode/DataNode 和 JobTracker/TaskTracker 这几个角色构成。
Hadoop的DFS 需要确立 NameNode 与 DataNode 角色,一般 NameNode 会部署到一台单独的服务器上而不与 DataNode 共同同一机器。另外 Map/Reduce 服务也需要确立 JobTracker 和 TaskTracker 的角色,一般 JobTracker 与 NameNode 共用一台机器作为 master,而 TaskTracker 与 DataNode 同属于 slave。

这里使用 node111 作为 NameNode 与 JobTracker ,其它两台机器作为 DataNode 和 TaskTracker

Step3-1 环境配置

在 $HADOOP_HOME/conf/hadoop-env.sh 中定义了 Hadoop 启动时需要的环境变量设置,需要配置 JAVA_HOME(JDK的路径)变量:

# The java implementation to use.  Required.
export JAVA_HOME=/home/hadoop/jdk1.7.0_07

Step3-2 Hadoop 核心配置

Hadoop 包括一组默认配置文件($HADOOP_HOME/src 目录下的 core/core-default.xml, hdfs/hdfs-default.xml 和 mapred/mapred-default.xml),先好好看看并理解默认配置文件中的那些属性。虽然默认配置文件能让 Hadoop 核心程序顺利启动,但对于开发人员来说一般需要自己来设置一些常规配置以满足开发和业务的需求,所以我们需要对默认配置文件的值进行覆盖,具体方法如下:

Step3-2-1 core-site.xml 配置

$HADOOP_HOME/conf/core-site.xml 是 Hadoop 的核心配置文件,对应并覆盖 core-default.xml 中的配置项。我们一般在这个文件中增加如下配置:

<configuration>  
	<property>   
		<!-- 用于dfs命令模块中指定默认的文件系统协议 -->  
		<name>fs.default.name</name>   
		<value>hdfs://node111:9000</value>
	</property> 
</configuration> 

Step3-2-2 hdfs-site.xml 配置

$HADOOP_HOME/conf/hdfs-site.xml 是 HDFS 的配置文件,对应并覆盖 hdfs-default.xml 中的配置项。我们一般在这个文件中增加如下配置:

<configuration>
	<property>    
		<name>dfs.replication</name>   
		<value>2</value> 
	</property>
	<property>
		<name>hadoop.tmp.dir</name>
		<value>/home/hadoop/cluster/data</value>
	</property>
	<property>
		<!--设置 data 节点文件位置 -->  
		<name>dfs.data.dir</name>
		<value>${hadoop.tmp.dir}/dfs/data</value>
	</property>
</configuration> 

Step3-2-3 mapred-site.xml 配置

$HADOOP_HOME/conf/mapred-site.xml 是 Map/Reduce 的配置文件,对应并覆盖 mapred-default.xml 中的配置项。我们一般在这个文件中增加如下配置:

<configuration>
	<property>  
		<!-- 用来作 JobTracker 的节点的(一般与 NameNode 保持一致) -->    
		<name>mapred.job.tracker</name>   
		<value>node111:9001</value> 
	</property>
</configuration> 

Step3-3 主从配置

在 $HADOOP_HOME/conf 目录中存在 masters 和 slaves 这两个文件,用来做 Hadoop 的主从配置。上面已经提到了 Hadoop 主要由 NameNode/DataNode 和 JobTracker/TaskTracker 构成,在主从配置里我们一般将 NameNode 和 JobTracker 列为主机,其它的共为从机,于是对于此处的配置应该是:

Step3-3-1 masters 配置

在 masters 中加入:

node111

Step3-3-2 slaves 配置

在 slaves 中加入:

node111
node112
node113

如果你对以上介绍的配置项做了正确的配置,那么你的 Hadoop 集群只差启动了,当然,在 $HADOOP_HOME/conf 目录下还包括其它的一些配置文件,但那些都不是必须设置的,如果有兴趣你可以自己去了解了解。

值得注意的是 Hadoop 集群的所有机器的配置应该保持一致,一般我们在配置完 master 后,使用 scp 将配置文件同步到集群的其它服务器上。

Step4 启动 Hadoop

经过以上两个步骤,Hadoop 的安装和配置已经OK了,那么下面我们就来启动 Hadoop 集群。启动前我们需要做一些准备,因为集群的启动是从 NameNode 开始的,于是 DataNode 的运行需要 NameNode 的远程调用,Hadoop 使用 ssh 命令远程运行 DataNode 节点,这就是为什么 Hadoop 需要 ssh 的支持。我们可以想象一下,如果集群里有100台机器,那么我们就需要输入100遍主机的访问密码,但如果配置 ssh 使用无密码公钥认证的方式,就解决了此问题。

简单的说,在 node111 上需要生成一个密钥对,即一个私钥和一个公钥。将公钥拷贝到 node112 和 node113 上,如此一来,当 node111 向 node112 发起 ssh 连接的时候,node112 上就会生成一个随机数并用 node111 的公钥对这个随机数进行加密,并且发送给 node111,node111 收到这个加密的数以后用私钥进行解密,并将解密后的数返回 node112,node112 确认解密的数无误后就允许 node111 进行连接了。这就完成了一次公钥认证过程。

公钥生成的步骤如下:

$ ssh-keygen -t rsa
# 以下是生成一个为 id_rsa/id_rsa.pub 的无密码的公/私钥对(一路回车)
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:
# 会在 ~/.ssh 中生成两个文件:id_rsa, id_rsa.pub

然后将 id_rsa.pub 的内容复制到每个机器(也包括本机)的 ~/.ssh/authorized_keys 文件中。如果 authorized_keys 不存在,则使用 touch ~/.ssh/authorized_keys 生成一个;如果该文件已经存在,则追加内容进去就OK了,这里推荐使用如下命令:

$ cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
# 因为 ssh 服务对文件的权限有着非常严格的限制(authorized_keys 只能拥有指定用户的写权限)于是需要进行如下处理
$ chmod 644 ~/.ssh/authorized_keys

经过以上步骤,我们的无密码访问就配置好了,接下来就可以正常启动 Hadoop 集群:

# 启动服务之前,我们需要做一件事情,非常重要,那就是格式化命名空间
$ hadoop namenode -format
# 启动 dfs 和 map/reduce 服务
$ start-all.sh

Step5 jps验证

在 master 节点:

$ jps
# 3000 DataNode
# 3238 JobTracker
# 3665 Jps
# 3378 TaskTracker
# 2844 NameNode
# 3136 SecondaryNameNode

在 slave 节点:

$ jps
# 32724 TaskTracker
# 9800 Jps
# 32590 DataNode

能看到如上信息,则证明 Hadoop 集群已经配置成功了,哦耶~

可以通过访问 http://192.168.1.111:50070 来查看 hdfs 的状态,访问 http://192.168.1.111:50030 来查看 map/reduce 的状态。

如果出现错误或 Hadoop 集群未正常启动,可以查看 $HADOOP_HOME/logs/ 下的日志文件。

>>Hadoop集群安装
>>基于CentOS 6.3 64bit操作系统的Hadoop 1.0.4 集群部署

Problem1 Warning: $HADOOP_HOME is deprecated. (1.x 版本以后出现的)

安装完成之后执行 start-all.sh 脚本,总会提示一个警告: Warning: $HADOOP_HOME is deprecated.

经查原因是 Hadoop 在 bin/hadoop-config.sh 中对 HADOOP_HOME 进行了判断:

if [ "$HADOOP_HOME_WARN_SUPPRESS" = "" ] && [ "$HADOOP_HOME" != "" ]; then
  echo "Warning: \$HADOOP_HOME is deprecated." 1>&2
  echo 1>&2
fi

解决方案: 在 ~/.bash_profile 中添加一个全局环境变量

export HADOOP_HOME_WARN_SUPPRESS=1

<< Previous Page Next Page >>
Fork me on GitHub