hadoop+hbase+zookeeper安装说明.docx
《hadoop+hbase+zookeeper安装说明.docx》由会员分享,可在线阅读,更多相关《hadoop+hbase+zookeeper安装说明.docx(30页珍藏版)》请在冰豆网上搜索。
hadoop+hbase+zookeeper安装说明
一、环境
1主机规化
集群中包括3个节点:
hadoop01为Master,其余为Salve,节点之间局域网连接,可以相互ping通。
机器名称
地址
hadoop01
10.10.151.100
hadoop02
10.10.151.101
hadoop03
10.10.151.102
2软件版本
hadoop-1.2.1.tar.gzzookeeper-3.4.6.tar.gzhbase-0.98.10.1-hadoop1-bin.tar.gz
二、准备工作,三台机器都需要做,将三台机器selinux,iptables停用
1停用selinux
vi/etc/selinux/config
将SELINUX=disabled
2安装JDK
使用已有的/usr/inp/java
vi/etc/profile
在最后添加
JAVA_HOME=/usr/inp/java
PATH=$PATH:
$JAVA_HOME/bin
exportJAVA_HOMEPATH
[root@hadoop01java]#source/etc/profile 让其java命令立即生效
[root@hadoop01java]#java 执行java命令,如果能正常执行就表示java安装完成
3添加一个hadoop用户,用来运行hadoop集群
useraddhadoop
echo"hadoop"|passwd--stdinhadoop
4做三台机器之间做双机互信,原因master通过远程启动datanode进程和tasktracker进程,如果不做双机互信,会导致每次启动集群服务都会需要密码
vi/etc/hosts
将hosts文件分别复制到另外两台。
修改这个文件etc/sysconfig/network这个文件里的主机名.
NETWORKING=yes
HOSTNAME=hadoop01
三台机子分别改主机名
5切换到hadoop用户,对其用做双机互信,先在三台机器先执行ssh-keygen生成公钥与私钥。
将公钥复制到别的机器,需要对hadoop01,hadoop03,都做相同的动作。
[hadoop@hadoop01~]$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这个文件,直接复制过去就行)
[hadoop@hadoop01~]$ cat~/.ssh/id_rsa.pub>>~/.ssh/authorized_keys
[hadoop@hadoop01~]$ssh-copy-id-ihadoop02
[hadoop@hadoop01~]$ssh-copy-id-ihadoop03
[hadoop@hadoop02~]$ssh-copy-id-ihadoop01
[hadoop@hadoop03 ~]$ssh-copy-id-ihadoop01
切换到root用户,重启sshd服务
servicesshdrestart
6同步时间,三台机器启用ntpd服务,另外两台执行相同的操作
vi/etc/resolv.conf
nameserver202.106.0.20
nameserver203.196.0.100
[root@hadoop01~]#crontab-e
*/5****/usr/sbin/ntpdatentp.api.bz&>/dev/null
7Linux打开文件数1024限制的原理以及解决办法
1、/etc/pam.d/login添加
sessionrequired /lib/security/pam_limits.so
注意看这个文件的注释
2./etc/security/limits.conf添加
www – nofile 1006154
www是一个用户,如果是想所有用户生效的话换成*,设置的数值与硬件配置有关,别设置太大了。
-----------------------------------------------------------------------------
3.修改/etc/rc.local 添加
echo8061540>/proc/sys/fs/file-max
做完3个步骤,就可以了。
三、安装hadoop
[root@hadoop01~]#tarxfhadoop-1.2.1.tar.gz -C/usr/local/
[root@hadoop01 ~]#chown-Rhadoop:
hadoop /usr/local/hadoop-1.2.1
[root@hadoop01 ~]# suhadoop
[hadoop@hadoop01~]$cd/usr/local/hadoop-1.2.1/
(1)Hadoop的配置文件都存储在conf下,配置文件解释
hadoop-env.sh:
用于定义hadoop运行环境相关的配置信息,比如配置JAVA_HOME环境变量、为hadoop的JVM指定特定的选项、指定日志文件所在的目录路径以及master和slave文件的位置等;
core-site.xml:
用于定义系统级别的参数,它作用于全部进程及客户端,如HDFSURL、Hadoop的临时目录以及用于rack-aware集群中的配置文件的配置等,此中的参数定义会覆盖core-default.xml文件中的默认配置;
hdfs-site.xml:
HDFS的相关设定,如文件副本的个数、块大小及是否使用强制权限等,此中的参数定义会覆盖hdfs-default.xml文件中的默认配置;
mapred-site.xml:
mapreduce的相关设定,如reduce任务的默认个数、任务所能够使用内存的默认上下限等,此中的参数定义会覆盖mapred-default.xml文件中的默认配置;
masters:
hadoop的secondary-masters主机列表,当启动Hadoop时,其会在当前主机上启动NameNode和JobTracker,然后通过SSH连接此文件中的主机以作为备用NameNode;
slaves:
Hadoop集群的slave(datanode)和tasktracker的主机列表,master启动时会通过SSH连接至此列表中的所有主机并为其启动DataNode和taskTracker进程;
Hadoop-metrics2.properties:
控制metrics在hadoop上如何发布属性
Log4j.properties:
系统日志文件、namenode审计日志、tarsktracker子进程的任务日志属性
(2)修改hadoop-env.sh
[hadoop@hadoop01hadoop-1.2.1]$viconf/hadoop-env.sh
(3)修改core-site.xml
[hadoop@hadoop01hadoop-1.2.1]$viconf/core-site.xml
hadoop.tmp.dir
/data/hadoop/tmp
fs.default.name
hdfs:
//hadoop01:
9000
hadoop.tmp.dir属性用于定义Hadoop的临时目录,其默认为/tmp/hadoop-${username}。
HDFS进程的许多目录默认都在此目录中,/hadoop/tmp目录,需要注意的是,要保证运行Hadoop进程的用户对其具有全部访问权限。
fs.default.name属性用于定义HDFS的名称节点和其默认的文件系统,其值是一个URI,即NameNode的RPC服务器监听的地址(可以是主机名)和端口(默认为8020)。
其默认值为file:
///,即本地文件系统。
(4)修改hdfs-site.xml文件
[hadoop@hadoop01hadoop-1.2.1]$viconf/hdfs-site.xml
dfs.data.dir
/data/hadoop/data
dfs.replication
2
dfs.datanode.max.xcievers
4096
dfs.datanode.socket.write.timeout
6000000
dfs.socket.timeout
6000000
dfs.name.dir属性定义的HDFS元数据持久存储路径,默认为${hadoop.tmp.dir}/dfs/name
dfs.replication属性定义保存副本的数量,默认是保存3份,由于这里只有两台slave。
所以设置2。
(5)修改mapred-site.xml文件
[hadoop@hadoop01hadoop-1.2.1]$ viconf/mapred-site.xml
mapred.job.tracker
http:
//hadoop01:
9001
(6)编辑masters文件
masters用于指定,辅助名称节点(SecondaryNameNode)的主机名或主机地址
[hadoop@hadoop01hadoop-1.2.1]$ viconf/masters
hadoop01
(7)编辑slaves文件,这个文件只需在master主机上编辑就行
用于指定各从服务器(TaskTracker或DataNode)的主机名或主机地址
hadoop02
hadoop03
在三台机器上分别创建两个目录:
[root@hadoop01local]#mkdir-p/data/hadoop/data
[root@hadoop01local]#mkdir-p/data/hadoop/tmp
[root@hadoop01local]#chown-Rhadoop:
hadoop/data/hadoop/
[root@hadoop02 local]#mkdir-p/data/hadoop/data
[root@hadoop02 local]#mkdir-p/data/hadoop/tmp
[root@hadoop02 local]#chown-Rhadoop:
hadoop/data/hadoop/
[root@hadoop03 local]#mkdir-p/data/hadoop/data
[root@hadoop03 local]#mkdir-p/data/hadoop/tmp
[root@hadoop03 local]#chown-Rhadoop:
hadoop/data/hadoop/
(8)配置slave:
将配置的hadoop整个目录复制到hadoop02,haoop03
[root@hadoop01~]#scp-rp/usr/local/hadoop-1.2.1hadoop02:
/usr/local/
[root@hadoop01~]#scp-rp/usr/local/hadoop-1.2.1hadoop03:
/usr/local/
修改权限:
[root@hadoop02~]#chown -Rhadoop:
hadoop/usr/local/hadoop-1.2.1/
[root@hadoop03 ~]#chown -Rhadoop:
hadoop/usr/local/hadoop-1.2.1/
四、启动集群
1格式化名称节点
与普通文件系统一样,HDFS文件系统必须要先格式化,创建元数据数据结构以后才能使用。
[hadoop@hadoop01hadoop-1.2.1]$bin/hadoopnamenode-format
如果格式化出错,一般会提示错误,就像下面,已经在提示哪个文件,第几行,根据提示检查即可。
[hadoop@hadoop01~]$ bin/start-all.sh
[hadoop@hadoop01~]$jps 查看进程是否起来。
secondarynamenode,namenode,jobtracker三个进程必须都有,才正常。
或者这种方式查看集群是否正常
[hadoop@hadoop01hadoop-1.2.1]$bin/hadoopdfsadmin–report
测试集群:
[hadoop@hadoop01 hadoop-1.2.1]$bin/hadoopjarhadoop-test-1.2.1.jar DFSCIOTest-write -nrFiles10-filesize1000
[hadoop@hadoop01 hadoop-1.2.1]$ bin/hadoop jar hadoop-test-1.2.1.jar DFSCIOTest-read-nrFiles10-filesize1000
hadoop默认监听的端口:
Hadoop进程监听的地址和端口
Hadoop启动时会运行两个服务器进程,一个为用于Hadoop各进程之间进行通信的RPC服务器,另一个是提供了便于管理员查看Hadoop集群各进程相关信息页面的HTTP服务器。
用于定义各RPC服务器所监听的地址和端口的属性有如下几个:
fs.default.name:
定义HDFS的NameNode用于提供URI所监听的地址和端口,默认端口为8020;
dfs.datanode.ipc.address:
DataNode上RPC服务器监听的地址和端口,默认为0.0.0.0:
50020;
mapred.job.tracker:
JobTracker的PRC服务器所监听的地址和端口,默认端口为8021;
mapred.task.tracker.report.address:
TaskTracker的RPC服务器监听的地址和端口;TaskTracker的子JVM使用此端口与TaskTracker进行通信,它仅需要监听在本地回环地址127.0.0.1上,因此可以使用任何端口;只有在当本地没有回环接口时才需要修改此属性的值;
除了RPC服务器之外,DataNode还会运行一个TCP/IP服务器用于数据块传输,其监听的地址和端口可以通过dfs.datanode.address属性进行定义,默认为0.0.0.0:
50010。
可用于定义各HTTP服务器的属性有如下几个:
dfs.http.address:
NameNode的HTTP服务器地址和端口,默认为0.0.0.0:
50070;
dfs.secondary.http.address:
SecondaryNameNode的HTTP服务器地址和端口,默认为0.0.0.0:
50090;
mapred.job.tracker.http.addrss:
JobTracker的HTTP服务器地址和端口,默认为0.0.0.0:
50030;
dfs.datanode.http.address:
DataNode的HTTP服务器地址和端口,默认为0.0.0.0:
50075;
mapred.task.tracker.http.address:
TaskTracker的HTTP服务器地址和端口,默认为0.0.0.0:
50060;上述的HTTP服务器均可以通过浏览器直接访问以获取对应进程的相关信息,访问路径为http:
//Server_IP:
Port。
如namenode的相关信息:
2排错思路
1,是否是hadoop.tmp.dir,dfs.data.dir属性,如果定义在别的目录需要在集群中所有节点都创建,并让hadoop用户能够访问
2,查看进程对应的端口是否有在监听。
在上面配置中将namenode的端口定义9000,jobtracker定义成9001
[hadoop@hadoop01hadoop-1.2.1]$netstat-tunlp|grep9000
tcp 0 0:
:
ffff:
192.168.0.31:
9000 :
:
:
* LISTEN 22709/java
[hadoop@hadoop01hadoop-1.2.1]$netstat-tunlp|grep9001
tcp 0 0:
:
ffff:
192.168.0.31:
9001 :
:
:
* LISTEN 22924/java
3,查看日志,哪个服务没起来就查看对应的日志。
4,查看集群中所有节点的时间是不是一致。
5,iptable与selinux是否阻止。
6,/etc/hosts是否正确。
五、添加节点,删除节点
添加节点
1.修改host
和普通的datanode一样。
添加namenode的ip
2.修改namenode的配置文件conf/slaves
添加新增节点的ip或host
3.在新节点的机器上,启动服务
[hadoop@hadoop04 hadoop]#./bin/hadoop-daemon.shstartdatanode
[hadoop@hadoop04hadoop]#./bin/hadoop-daemon.shstarttasktracker
4.均衡block
[hadoop@hadoop04hadoop]#./bin/start-balancer.sh
1)如果不balance,那么cluster会把新的数据都存放在新的node上,这样会降低mapred的工作效率
2)设置平衡阈值,默认是10%,值越低各节点越平衡,但消耗时间也更长
[root@slave-004hadoop]#./bin/start-balancer.sh-threshold5
3)设置balance的带宽,默认只有1M/s
dfs.balance.bandwidthPerSec
1048576
Specifiesthemaximumamountofbandwidththateachdatanode
canutilizeforthebalancingpurposeintermof
thenumberofbytespersecond.
注意:
1. 必须确保slave的firewall已关闭;
2. 确保新的slave的ip已经添加到master及其他slaves的/etc/hosts中,反之也要将master及其他slave的ip添加到新的slave的/etc/hosts中
删除节点
1.集群配置
修改conf/hdfs-site.xml文件
dfs.hosts.exclude
/data/soft/hadoop/conf/excludes
Namesafilethatcontainsalistofhoststhatare
notpermittedtoconnecttothenamenode. Thefullpathnameofthe
filemustbespecified. Ifthevalueisempty,nohostsare
excluded.
2确定要下架的机器
dfs.hosts.exclude定义的文件内容为,每个需要下线的机器,一行一个。
这个将阻止他们去连接Namenode。
如:
haoop04
3.强制重新加载配置
[root@masterhadoop]#./bin/hadoopdfsadmin -refreshNodes
它会在后台进行Block块的移动
4.关闭节点
等待刚刚的操作结束后,需要下架的机器就可以安全的关闭了。
[root@masterhadoop]#./bin/hadoopdfsadmin-report
可以查看到现在集群上连接的节点
正在执行Decommission,会显示:
DecommissionStatus:
Decommissioninprogress
执行完毕后,会显示:
DecommissionStatus:
Decommissioned
5.再次编辑excludes文件
一旦完成了机器下架,它们就可以从excludes文件移除了
登录要下架的机器,会发现DataNode进程没有了,但是TaskTracker依然存在,需要手工处理一下
六、安装zookeeper
1zookeeper概述:
ZooKeeper是一个分布式开源框架,提供了协调分布式应用的基本服务,它向外部应用暴露一组通用服务——分布式同步(DistributedSynchron