`
dalan_123
  • 浏览: 87058 次
  • 性别: Icon_minigender_1
  • 来自: 郑州
社区版块
存档分类
最新评论

Hadoop+Hbase+Zookeeper(独立)环境搭建 ---(转)

阅读更多

准备的机器信息:
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 搭建

http://blog.csdn.net/hguisu/article/details/7237395

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

拓展介绍
http://www.infoq.com/cn/articles/hadoop-intro
http://blog.csdn.net/shatelang/article/details/7605939
http://blog.csdn.net/cuirong1986/article/details/7311734


jdk安装参考资料
http://melin.iteye.com/blog/1848637

http://www.cnblogs.com/gaizai/archive/2012/06/12/2545886.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简介
http://a280606790.iteye.com/blog/870123

在每台机器上创建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里面的部分配置为
#修改
  fs.default.name
  hdfs://dengnn:9000
  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
  determine the host, port, etc. for a filesystem.
  hadoop.tmp.dir
  /home/hadoop/hadoop/tmp
  A base for other temporary directories.
注解:
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 里面的部分配置为
#修改
  mapred.job.tracker
  dengnn:9001
  The host and port that the MapReduce job tracker runs
  at.  If "local", then jobs are run in-process as a single map
  and reduce task.


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

7、配置hdfs-default.xml 文件
在解压的 src 目录找到hdfs-default.xml 文件,将其复制到 conf 目录,改名称为 : hdfs--site.xml。然后修改hdfs -site.xml 里面的部分配置为
#修改
  dfs.replication
  3
  Default block replication.
  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.

注解:
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来设置主从结点,注意最好使用主机名,并且保证机器之间通过主机名可以互相访问,每个主机名一行。
修改conf  目录里面的 masters 文件,内容为:
命令 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 在启动时会找这个文件作为默认配置文件),打开该文件进行修改为以下格式(注意权限问题,如果最后配置有问题请检查过程中权限是否正确)。
#修改
dataDir=/home/hadoop/hadoop/zookeeper/data
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
http://linuxjcq.blog.51cto.com/3042600/760634


集群web访问地址:
namenode http://192.168.247.128:50070
mapreduce http://192.168.247.128:50030
hbase master http://192.168.247.128:60010

 

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics