Hadoop+ZooKeeper+HBase集群配置

公司业务需要使用Hadoop,经过4天,安装完成,记录一下

通常,集群里的一台机器被指定为 NameNode,另一台不同的机器被指定为JobTracker,这些机器是masters。余下的机器即作为DataNode也作为TaskTracker,这些机器是slaves。

1 先决条件

确保在你集群中的每个节点上都安装了所有:JDK,ssh

ssh 必须安装并且保证 sshd一直运行,并使用无密码链接的形式,以便用Hadoop 脚本管理端Hadoop守护进程。

2 实验环境搭建 2.1 准备工作

操作系统:Ubuntu13.04
部署:VirtualBox
VirtualBox安装好一台Ubuntu虚拟机后,可以导出或者克隆出另外两台虚拟机。
说明:
保证虚拟机的ip和主机的ip在同一个ip段,这样几个虚拟机和主机之间可以相互通信。
为了保证虚拟机的ip和主机的ip在同一个ip段,虚拟机连接设置为桥连。

准备机器:一台master,两台slave,配置每台机器的/etc/hosts保证各台机器之间通过机器名可以互访,例如:
192.168.10.203 node1(master)
192.168.10.204 node2 (slave1)
192.168.10.205 node3 (slave2)
主机信息以在集群中的角色:

机器名   IP地址   集群中的角色  
node1   192.168.10.203   NameNode、JobTracker  
node2   192.168.10.204   DataNode、TaskTracker  
node3   192.168.10.205   DataNode、TaskTracker  
2.2 创建,组和用户

$ useradd hadoop

$ groupadd -G hadoop hadoop

在所有的机器上都建立相同的组(hadoop)和用户(hadoop)。
(最好不要使用root安装,因为不推荐各个机器之间使用root访问 )

2.3 安装JDK

#安装JDK
在官网下载 jdk-6u45-linux-i586.bin ,下载到/home/hadoop/目录下。
将jdk安装到/usr/local,先把安装文件移动到该目录下,执行后会生成jdk1.6.0_45切换的root用户执行命令:
hadoop@node1:~$ su
密码:
root@node1:/home/hadoop#
root@node1:/home/hadoop# cd /usr/local/
root@node1:/usr/local# mkdir Java
root@node1:/usr/local# cd java
root@node1:/usr/local/java# mv /home/hadoop/jdk-6u45-linux-i586.bin .
root@node1:/usr/local/java# ./jdk-6u45-linux-i586.bin
安装完成后修改名称和权限
root@node1:/usr/local/java# cd ..
root@node1:/usr/local# chown -R hadoop:hadoop java
然后配置JDK环境
root@node1:/usr/local# su hadoop
root@node1:/usr/local# cd
hadoop@node1:~$ vim .bashrc
添加下面的内容
export JAVA_HOME=/usr/local/java/jdk1.6.0_45
export JRE_HOME=/usr/local/java/jdk1.6.0_45/jre
export CLASSPATH=.:$JAVA_HOME/lib:$JRE_HOME/lib:$CLASSPATH
export PATH=$JAVA_HOME/bin:$JRE_HOME/bin:$JAVA_HOME:$PATH
保存后退出,并使修改生效
hadoop@node1:~$ source .bashrc
JDK安装完毕,执行java -verison验证是否成功
hadoop@node1:~$ java -version
java version "1.6.0_45"
Java(TM) SE Runtime Environment (build 1.6.0_45-b06)
Java HotSpot(TM) Client VM (build 20.45-b01, mixed mode, sharing)
安装成功!

2.4 安装ssh和配置

1)安装:sudo apt-get install ssh

这个安装完后,可以直接使用ssh命令 了。
执行$ netstat -nat 查看22端口是否开启了。
测试:ssh localhost。
输入当前用户的密码,回车就ok了。说明安装成功,同时ssh登录需要密码。

(这种默认安装方式完后,默认配置文件是在/etc/ssh/目录下。sshd配置文件是:/etc/ssh/sshd_config):

注意:在所有机子都需要安装ssh。

2)配置

在Hadoop启动以后,Namenode是通过SSH(Secure Shell)来启动和停止各个datanode上的各种守护进程的,这就须要在节点之间执行指令的时候是不须要输入密码的形式,故我们须要配置SSH运用无密码公钥认证的形式。
以本文中的三台机器为例,现在node1是主节点,他须要连接node2和node3。须要确定每台机器上都安装��ssh,并且datanode机器上sshd服务已经启动。

在node1上执行命令

hadoop@node1~]$ssh-keygen -t rsa -P ""

这个命令将为node1上的用户hadoop生成其空密码的密钥对,询问其保存路径时直接回车采用默认路径,直接回车。生成的密钥对id_rsa,id_rsa.pub,默认存储在/home/hadoop/.ssh目录下

然后执行命令

cat id_rsa.pub >> authorized.keys

将生成的authorized_keys文件复制到每台机器的相同位置:/home/hadoop/.ssh/

最后将每天机器上的authorized_keys修改权限如下:

[hadoop@node1 .ssh]$chmod 644 authorized_keys

3) 首先设置namenode的ssh为无需密码的、自动登录。

切换到hadoop用户( 保证用户hadoop可以无需密码登录,因为我们后面安装的hadoop属主是hadoop用户。)

第一次ssh会有提示信息:

The authenticity of host ‘node1 (192.168.10.203)’ can’t be established.
RSA key fingerprint is 03:e0:30:cb:6e:13:a8:70:c9:7e:cf:ff:33:2a:67:30.
Are you sure you want to continue connecting (yes/no)?

输入 yes 来继续。这会把该服务器添加到你的已知主机的列表中,下次就可以直接链接了。

SSH安装和配置完成!

2.5 安装Hadoop

在官网下载hadoop-1.2.0.tar.gz,下载到/home/hadoop/目录下。

#切换为root用户,执行如下命令

root@node1:/home/hadoop# mv hadoop-1.2.0.tar.gz /usr/local

root@node1:/home/hadoop# cd /usr/local

root@node1:/usr/local# tar -zxvf hadoop-1.2.0.tar.gz

root@node1:/usr/local# mv hadoop-1.2.0 hadoop

root@node1:/usr/local# chown -R hadoop:hadoop hadopp

1 ) 安装Hadoop集群通常要将安装软件解压到集群内的所有机器上。并且安装路径要一致,如果我们用HADOOP_HOME指代安装的根路径,通常,集群里的所有机器的HADOOP_HOME路径相同。

2 ) 如果集群内机器的环境完全一样,可以在一台机器上配置好,然后把配置好的软件即hadoop整个文件夹拷贝到其他机器的相同位置即可。
3 ) 可以将Master上的Hadoop通过scp拷贝到每一个Slave相同的目录下,同时根据每一个Slave的Java_HOME 的不同修改其hadoop-env.sh 。
4) 为了方便,使用hadoop命令或者start-all.sh等命令,修改Master上/home/hadoop/.bashrc 新增以下内容:
export HADOOP_HOME=/usr/local/hadoop
export PATH=$PATH:$HADOOP_HOME/bin
修改完毕后,执行source .bashrc 来使其生效。
6)配置conf/hadoop-env.sh文件

配置conf/hadoop-env.sh文件
#添加

export JAVA_HOME=/usr/local/java/jdk1.6.0_45

这里修改为你的jdk的安装位置。

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:http://www.heiqu.com/f9329581fc0540835320a79db3182ddb.html