您的位置:首页 > 运维架构

adoop+Hbase+Zookeeper(独立)环境搭建 (菜鸟也ok)

2015-09-15 17:32 363 查看
Hadoop+Hbase+Zookeeper(独立)环境搭建 (菜鸟也ok)

准备的机器信息:
192.168.247.128 dengnn(master)

192.168.247.129 dengdn1 (slave1)
192.168.247.130 dengdn2
(slave2)
集群搭建 参考资料

cloudera hadoop 搭建
http://heylinux.com/archives/1980.html

http://www.ibm.com/developerworks/cn/data/library/techarticle/dm-1307yangww/

apache hadoop 搭建

/article/7644561.html

http://ju.outofmemory.cn/entry/29825

拓展介绍
http://www.infoq.com/cn/articles/hadoop-intro
/article/2406343.html
/article/7983231.html

jdk安装参考资料
/article/3799996.html

/article/4765438.html

Jdk安装部分指令摘记:
修改/etc/profile文件.用文本编辑器打开/etc/profile。在profile文件末尾加入(root用户登录):
export JAVA_HOME=/usr/java/jdk1.6.0_45

export JRE_HOME=$JAVA_HOME/jre

export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar:$JRE_HOME/lib/rt.jar

export PATH=$PATH:$JAVA_HOME/bin
执行source /etc/profile 来使其生效

NameNode与SecondaryNameNode简介
/article/4064517.html

在每台机器上创建hadoop用户组合hadoop用户

1:创建用户组:groupadd hadoop

2:创建用户:useradd -g hadoop hadoop

3:修改密码:passwd hadoop

安装SSH,一些命令的摘记:
Centos系统安装时默认可以选择安装SSH,ubuntu下可以通过如下命令进行安装(前提是必须联网):
rpm –qa | grep openssh

rpm –qa | grep rsync

service sshd restart 启动服务
测试是否安装成功:ssh localhost
注意:在所有机子都需要安装ssh。

配置Master无密码登录所有Salve。
(说明:hadoop@hadoop~]$ssh-keygen -t rsa
这个命令将为hadoop上的用户hadoop生成其密钥对,询问其保存路径时直接回车采用默认路径,当提示要为生成的密钥输入passphrase的时候,直接回车,也就是将其设定为空密码。生成的密钥对id_rsa,id_rsa.pub,默认存储在/home/hadoop/.ssh目录下然后将id_rsa.pub的内容复制到每个机器(也包括本机)的/home/dbrg/.ssh/authorized_keys文件中,如果机器上已经有authorized_keys这个文件了,就在文件末尾加上id_rsa.pub中的内容,如果没有authorized_keys这个文件,直接复制过去就行.)

在Master节点上执行以下命令:
su hadoop
1、生成其密钥对
ssh-keygen -t rsa
2、接着在Master节点上做如下配置,把id_rsa.pub追加到授权的key里面去。
cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
3、修改文件"authorized_keys"
chmod 600 ~/.ssh/authorized_keys
4、启动服务(需要权限用户)
service
sshd restart
5、把公钥复制所有的Slave机器上:格式 scp
~/.ssh/id_rsa.pub 远程用户名@远程服务器IP:~/
(完整路径显示[hadoop@dengnn .ssh]$ scp authorized_keys dengdn1:/home/hadoop/.ssh/)
scp authorized_keys dengdn1:/home/hadoop/.ssh/

安装hadoop集群环境的,一些命令摘记:su hadoop 用此用户登录
1、建立hadoop目录
mkdir hadoop
2、解压安装文档
tar -zxvf hadoop-1.0.3.tar.gz
3、修改Master上/etc/profile 新增以下内容:
export HADOOP_HOME=/home/hadoop/hadoop/hadoop-1.0.3
export PATH=$PATH:$HADOOP_HOME/bin
执行source /etc/profile 来使其生效
4、配置conf/hadoop-env.sh文件
#添加 命令
export JAVA_HOME=/usr/java/jdk1.6.0_45
这里修改为你的jdk的安装位置。
(若命令没有添加成功,可以用vi命令手动添加)

5、配置core-site.xml文件
在解压的src 目录找到 core-default.xml 文件,将其复制到 conf 目录,改名称为 : core-site.xml 。然后修改core-site.xml里面的部分配置为
#修改
[align=left][/align]
[align=left] fs.default.name[/align]
[align=left] hdfs://dengnn:9000[/align]
The name of the default file system. A
URI whose
scheme and authority determine the FileSystem
implementation. The
uri's scheme determines the config property
(fs.SCHEME.impl) naming
the FileSystem implementation class. The
uri's authority is used to
[align=left] determine the host, port, etc. for a filesystem.[/align]
[align=left][/align]

[align=left][/align]
[align=left] hadoop.tmp.dir[/align]
[align=left] /home/hadoop/hadoop/tmp[/align]
[align=left] A base for other temporary directories.[/align]
[align=left][/align]

注解:
1)fs.default.name是NameNode的URI。hdfs://主机名:端口/

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

6、配置mapred-site.xml文件
在解压的src 目录找到 mapred-default.xml 文件,将其复制到 conf 目录,改名称为 : mapred-site.xml 。然后修改mapred-site.xml 里面的部分配置为
#修改
[align=left][/align]
[align=left] mapred.job.tracker[/align]
[align=left] dengnn:9001[/align]
The host and port that the MapReduce job tracker
runs
at. If "local",
then jobs are run in-process as a single map
[align=left] and reduce task.[/align]
[align=left] [/align]
[align=left][/align]

注解:
1)mapred.job.tracker是JobTracker的主机(或者IP)和端口。主机:端口。

7、配置hdfs-default.xml 文件
在解压的 src 目录找到hdfs-default.xml 文件,将其复制到 conf 目录,改名称为 : hdfs--site.xml。然后修改hdfs
-site.xml 里面的部分配置为
[align=left]#修改[/align]

[align=left][/align]
[align=left] dfs.replication[/align]
[align=left] 3[/align]
[align=left] Default block replication.[/align]
The actual number of replications can be specified
when the file is created.
The default is used if replication is not specified
in create time.
[align=left] [/align]
[align=left][/align]

注解:
1) dfs.name.dir是NameNode持久存储名字空间及事务日志的本地文件系统路径。 当这个值是一个逗号分割的目录列表时,nametable数据将会被复制到所有目录中做冗余备份。

2) dfs.data.dir是DataNode存放块数据的本地文件系统路径,逗号分割的列表。 当这个值是逗号分割的目录列表时,数据将被存储在所有目录下,通常分布在不同设备上。

3)dfs.replication是数据需要备份的数量,默认是3,如果此数大于集群的机器数会出错。

注意:此处的name1、name2、data1、data2目录不能预先创建,hadoop格式化时会自动创建,如果预先创建反而会有问题。

8、配置masters和slaves主从结点
配置conf/masters和conf/slaves来设置主从结点,注意最好使用主机名,并且保证机器之间通过主机名可以互相访问,每个主机名一行。
[align=left]修改conf 目录里面的 masters 文件,内容为:[/align]
命令 vi masters

输入:

dengnn
保存退出命令 :wq
命令 vi slaves
dengdn1
dengdn2
保存退出

9、配置结束,把配置好的hadoop文件夹拷贝到其他集群的机器中,并且保证上面的配置对于其他机器而言正确,例如:如果其他机器的Java安装路径不一样,要修改conf/hadoop-env.sh
拷贝的命令:
scp -r /home/hadoop/hadoop/hadoop-1.0.3 hadoop@dengdn1: /home/hadoop/hadoop
(如果不行就直接用其他方式复制)

10、关闭所有机器防火墙
chkconfig iptables off

service iptables stop

11、启动hadoop集群
登录NameNode,进入bin目录执行命令:
1、先格式化一个新的分布式文件系统
bin/hadoop namenode -format
2、启动(同时启动HDFS和Map/Reduce)
bin/start-all.sh
3、启动(单独启动HDFS)
bin/start-dfs.sh
4、启动(单独启动Map/Reduce)
bin/start-mapred.sh

(给文件夹赋权限)
chmod -R 755 hadoop-1.0.3
可以查看:
NameNode浏览web地址http://192.168.247.128:50070
MapReduce浏览web地址http://192.168.247.128:50030

安装zookeeper 一些摘要记录:su hadoop
1、解压安装文档
tar -zxvf zookeeper-3.4.3.tar.gz
2、修改zookeeper配置文件zoo.cfg
进入到conf目录,将zoo_sample.cfg拷贝一份命名为zoo.cfg(Zookeeper 在启动时会找这个文件作为默认配置文件),打开该文件进行修改为以下格式(注意权限问题,如果最后配置有问题请检查过程中权限是否正确)。
#修改
[align=left]dataDir=/home/hadoop/hadoop/zookeeper/data[/align]
server.0=192.168.247.128:2888:3888
server.1=192.168.247.129:2888:3888
server.2=192.168.247.130:2888:3888
(备注:其中,2888端口号是zookeeper服务之间通信的端口,而3888是zookeeper与其他应用程序通信的端口。而zookeeper是在hosts中已映射了本机的ip。
initLimit:这个配置项是用来配置 Zookeeper 接受客户端(这里所说的客户端不是用户连接 Zookeeper服务器的客户端,而是 Zookeeper 服务器集群中连接到 Leader 的 Follower 服务器)初始化连接时最长能忍受多少个心跳时间间隔数。当已经超过 10 个心跳的时间(也就是 tickTime)长度后 Zookeeper 服务器还没有收到客户端的返回信息,那么表明这个客户端连接失败。总的时间长度就是 5*2000=10
秒。
syncLimit:这个配置项标识 Leader 与 Follower 之间发送消息,请求和应答时间长度,最长不能超过多少个 tickTime 的时间长度,总的时间长度就是 2*2000=4 秒。
server.A=B:C:D:其中 A 是一个数字,表示这个是第几号服务器;B 是这个服务器的 ip 地址;C 表示的是这个服务器与集群中的 Leader 服务器交换信息的端口;D 表示的是万一集群中的 Leader 服务器挂了,需要一个端口来重新进行选举,选出一个新的 Leader,而这个端口就是用来执行选举时服务器相互通信的端口。如果是伪集群的配置方式,由于 B 都是一样,所以不同的 Zookeeper 实例通信端口号不能一样,所以要给它们分配不同的端口号。)

3、新建目录、新建并编辑myid文件
创建dataDir参数指定的目录(这里指的是“/home/hadoop/hadoop/zookeeper/data”),并在目录下创建文件,命名为“myid”
mkdir /home/hadoop/hadoop/zookeeper
mkdir /home/hadoop/hadoop/zookeeper/data
touch myid
4、编辑myid文件
注意:编辑“myid”文件,并在对应的IP的机器上输入对应的编号。如在192.168.247.128上,
“myid”文件内容就是0,在192.168.247.129上,内容就是1
5、同步安装
将解压修改后的zookeeper-3.4.3文件夹分别拷贝到Master、Slave1、Slave2的相同zookeeper安装路径下。
注意:myid文件的内容不是一样的,各服务器中分别是对应zoo.cfg中的设置。相应的目录以及文件的创建(需要每台机器创建)

6、启动zookeeper

Zookeeper的启动与hadoop不一样,需要每个节点都执行,分别进入3个节点的zookeeper-3.4.3目录,启动zookeeper:
bin/zkServer.sh start
注意:此时如果报错先不理会,继续在另两台服务器中执行相同操作。

若文件权限问题,则(给文件夹赋权限)
chmod -R 755 zookeeper-3.4.3
7、检查zookeeper是否配置成功
待3台服务器均启动后,如果过程正确的话zookeeper应该已经自动选好leader,进入每台服务器的zookeeper-3.4.3目录,执行以下操作查看zookeeper启动状态:
bin/zkServer.sh status
如果出现以下代码表示安装成功了。

[java] view plaincopy
JMX enabled by default
Using config: /home/hadoop/zookeeper-3.4.3/bin/../conf/zoo.cfg
Mode: follower        //或者有且只有一个leader


ps: 启动客户端脚本:zookeeper-3.4.3/bin/zkCli.sh -server zookeeper:2181

另外参考:
http://www.blogjava.net/BucketLi/archive/2010/12/21/341268.html

安装Hbase 环境的,一些命令摘记:su hadoop 用此用户登录
1、解压安装文档
tar -zxvf hbase-0.92.1.tar.gz
2、修改conf目录下的3个文件(hbase-env.sh ,hbase-site.xml,regionservers 文件)
2.1 修改hbase-env.sh文件
#添加
export JAVA_HOME=/usr/java/jdk1.6.0_45
export HBASE_MANAGES_ZK=false
1) 需要注意的地方是 ZooKeeper的配置。这与 hbase-env.sh 文件相关,文件中 HBASE_MANAGES_ZK 环境变量用来设置是使用hbase默认自带的 Zookeeper还是使用独立的ZooKeeper。HBASE_MANAGES_ZK=false 时使用独立的,为true时使用默认自带的。
2.2修改hbase-site.xml文件
#修改

hbase.rootdir
hdfs://dengnn:9000/hbase

hbase.cluster.distributed
true

hbase.zookeeper.property.clientPort
2181

hbase.zookeeper.quorum
dengnn,dengdn1,dengdn2


下面的暂时没有配置,在安装zookeeper时在做修改

hbase.zookeeper.property.dataDir
/home/hadoop/temp/zookeeper


1)hbase.cluster.distributed指定了Hbase的运行模式。false是单机模式,true是分布式模式。

2)hbase.rootdir目录是region server的共享目录,用来持久化Hbase。注意:注意主机名和端口号要与hadoop的dfs name的对应
3)hbase.zookeeper.quorum是Zookeeper集群的地址列表,用逗号分割。
4)运行一个zookeeper也是可以的,但是在生产环境中,最好部署3,5,7个节点。
部署的越多,可靠性就越高,当然只能部署奇数个,偶数个是不可以的。

需要给每个zookeeper 1G左右的内存,如果可能的话,最好有独立的磁盘确保zookeeper是高性能的。

如果你的集群负载很重,不要把Zookeeper和RegionServer运行在同一台机器上面,就像DataNodes和TaskTrackers一样。

2.3修改regionservers文件
#添加
dengdn1
dengdn2
注意:设置regionservers的服务器,和Hadoop的slaves一样即可

3、同步安装
将解压修改后的hbase-0.92.1 文件夹分别拷贝到Master、Slave1、Slave2的相同hbase安装路径下。
注意:文件权限问题。
给文件夹赋权限:chmod -R 755 hbase-0.92.1
4、启动Hbase
bin/start-hbase.sh
测试看成功与否
可以查看http://192.168.247.128:60010/
也可以用bin/hbase shell 界面查看。

ps: 若出现重启Hbase后,已有的数据没有了。可以从下面修改着手处理
修改hbase-default.xml文件

注意只修改hbase.rootdir这项,文件位置:/root/hbase/src/main/resources目录下

hbase.rootdir

hdfs://dengnn:9000/hbase

注意事项:如果你的版本和我不一样,hbase启动后查看表失败,可以将hadoop的jar拷贝至hbase的lib目录下,这一步很关键!我这个版本不需要拷贝!

另外参考资料
http://blog.chinaunix.net/uid-23916356-id-3255678.html
/article/4569913.html

集群web访问地址:
namenode http://192.168.247.128:50070
mapreduce http://192.168.247.128:50030
hbase master http://192.168.247.128:60010
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: