准备的机器信息:
192.168.247.128 dengnn(master)
192.168.247.129 dengdn1 (slave1)
192.168.247.129
192.168.247.130
dengdn2 (slave2)
集群搭建 参考资料
apache hadoop 搭建
拓展介绍
jdk安装参考资料
Jdk安装部分指令摘记:
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
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简介
在每台机器上创建hadoop用户组合hadoop用户
1:创建用户组:groupadd hadoop
2:创建用户:useradd -g hadoop hadoop
3:修改密码:passwd hadoop
1:创建用户组:groupadd hadoop
2:创建用户:useradd -g hadoop hadoop
3:修改密码:passwd hadoop
安装SSH,一些命令的摘记:
Centos系统安装时默认可以选择安装SSH,ubuntu下可以通过如下命令进行安装(前提是必须联网):
rpm –qa | grep openssh
rpm –qa | grep rsync
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、生成其密钥对
2、接着在Master节点上做如下配置,把id_rsa.pub追加到授权的key里面去。
3、修改文件"authorized_keys"
4、启动服务(需要权限用户)
5、把公钥复制所有的Slave机器上:格式
scp ~/.ssh/id_rsa.pub
远程用户名
@
远程服务器
IP:~/
安装hadoop集群环境的,一些命令摘记:su hadoop 用此用户登录
1、建立hadoop目录
mkdir hadoop
2、解压安装文档
tar -zxvf hadoop-1.0.3.tar.gz
3、修改Master上/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
里面的部分配置为
#修改
注解:
1)fs.default.name是NameNode的URI。hdfs://主机名:端口/
2)hadoop.tmp.dir :Hadoop的默认临时路径,这个最好配置,如果在新增节点或者其他情况下莫名其妙的DataNode启动不了,就删除此文件中的tmp目录即可。不过如果删除了NameNode机器的此目录,那么就需要重新执行NameNode格式化的命令。
2)hadoop.tmp.dir :Hadoop的默认临时路径,这个最好配置,如果在新增节点或者其他情况下莫名其妙的DataNode启动不了,就删除此文件中的tmp目录即可。不过如果删除了NameNode机器的此目录,那么就需要重新执行NameNode格式化的命令。
6、配置mapred-site.xml文件
在解压的
src
目录找到
mapred-default.xml
文件,将其复制到
conf
目录,改名称为
:
mapred-site.xml
。然后修改
mapred-site.xml
里面的部分配置为
#修改
注解:
1)mapred.job.tracker是JobTracker的主机(或者IP)和端口。主机:端口。
7、配置
hdfs-default.xml
文件
在解压的
src
目录找到
hdfs-default.xml
文件,将其复制到
conf
目录,改名称为
:
hdfs--site.xml
。然后修改
hdfs -site.xml
里面的部分配置为
#修改
注解:
1)
dfs.name.dir是NameNode持久存储名字空间及事务日志的本地文件系统路径。 当这个值是一个逗号分割的目录列表时,nametable数据将会被复制到所有目录中做冗余备份。
2)
dfs.data.dir是DataNode存放块数据的本地文件系统路径,逗号分割的列表。 当这个值是逗号分割的目录列表时,数据将被存储在所有目录下,通常分布在不同设备上。
3)dfs.replication是数据需要备份的数量,默认是3,如果此数大于集群的机器数会出错。
注意:此处的name1、name2、data1、data2目录不能预先创建,hadoop格式化时会自动创建,如果预先创建反而会有问题。
2)
3)dfs.replication是数据需要备份的数量,默认是3,如果此数大于集群的机器数会出错。
注意:此处的name1、name2、data1、data2目录不能预先创建,hadoop格式化时会自动创建,如果预先创建反而会有问题。
8、配置masters和slaves主从结点
配置conf/masters和conf/slaves来设置主从结点,注意最好使用主机名,并且保证机器之间通过主机名可以互相访问,每个主机名一行。
修改
conf
目录里面的
masters
文件,内容为:
命令 vi masters
输入:
dengnn
输入:
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:
6、启动zookeeper
Zookeeper的启动与hadoop不一样,需要每个节点都执行,分别进入3个节点的zookeeper-3.4.3目录,启动zookeeper:
bin/zkServer.sh start
注意:此时如果报错先不理会,继续在另两台服务器中执行相同操作。
若文件权限问题,则(给文件夹赋权限)
需要给每个zookeeper 1G左右的内存,如果可能的话,最好有独立的磁盘确保zookeeper是高性能的。
如果你的集群负载很重,不要把Zookeeper和RegionServer运行在同一台机器上面,就像DataNodes和TaskTrackers一样。
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
另外参考:
安装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的对应
2)hbase.rootdir目录是region server的共享目录,用来持久化Hbase。注意:注意主机名和端口号要与hadoop的dfs
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目录下,这一步很关键!我这个版本不需要拷贝!
注意只修改hbase.rootdir这项,文件位置:/root/hbase/src/main/resources目录下
注意事项:如果你的版本和我不一样,hbase启动后查看表失败,可以将hadoop的jar拷贝至hbase的lib目录下,这一步很关键!我这个版本不需要拷贝!
另外参考资料
集群web访问地址:
namenode
http://192.168.247.128:50070
mapreduce
http://192.168.247.128:50030
hbase master
http://192.168.247.128:60010