1、hadoop+hbase+zookeeper安装说明一、 环境1主机规化集群中包括3个节点:hadoop01为Master,其余为Salve,节点之间局域网连接,可以相互ping通。机器名称地址hadoop0110.10.151.100hadoop0210.10.151.101hadoop0310.10.151.1022 软件版本hadoop-1.2.1.tar.gz zookeeper-3.4.6.tar.gz hbase-0.98.10.1-hadoop1-bin.tar.gz二、 准备工作,三台机器都需要做 ,将三台机器selinux,iptables停用1停用selinux vi /e
2、tc/selinux/config 将SELINUX=disabled2 安装JDK 使用已有的/usr/inp/java vi /etc/profile 在最后添加 JAVA_HOME=/usr/inp/javaPATH=$PATH:$JAVA_HOME/binexport JAVA_HOME PATHroothadoop01 java# source /etc/profile让其java命令立即生效 roothadoop01 java# java 执行java命令,如果能正常执行就表示java安装完成3 添加一个hadoop用户,用来运行hadoop集群 useradd hadoop ec
3、ho hadoop |passwd -stdin hadoop4 做三台机器之间做双机互信,原因master通过远程启动datanode进程和tasktracker进程,如果不做双机互信,会导致每次启动集群服务都会需要密码 vi /etc/hosts将hosts文件分别复制到另外两台。修改这个文件etc/sysconfig/network这个文件里的主机名.NETWORKING=yesHOSTNAME=hadoop01三台机子分别改主机名5 切换到hadoop用户,对其用做双机互信,先在三台机器先执行ssh-keygen生成公钥与私钥。将公钥复制到别的机器,需要对hadoop01,hadoop
4、03,都做相同的动作。hadoophadoop01 $ ssh-keygen-trsa(这个命令将为hadoop上的用户hadoop生成其密钥对,询问其保存路径时直接回车采用默认路径,当提示要为生成的密钥输入passphrase的时候,直接回车,也就是将其设定为空密码。生成的密钥对id_rsa,id_rsa.pub,默认存储在/home/hadoop/.ssh目录下然后将id_rsa.pub的内容复制到每个机器(也包括本机)的/home/dbrg/.ssh/authorized_keys文件中,如果机器上已经有authorized_keys这个文件了,就在文件末尾加上id_rsa.pub中的内
5、容,如果没有authorized_keys这个文件,直接复制过去就行)hadoophadoop01 $cat /.ssh/id_rsa.pub /.ssh/authorized_keyshadoophadoop01 $ ssh-copy-id -i hadoop02hadoophadoop01 $ ssh-copy-id -i hadoop03hadoophadoop02 $ ssh-copy-id -i hadoop01hadoophadoop03$ ssh-copy-id -i hadoop01切换到root用户,重启sshd服务service sshd restart6 同步时间,三台机
6、器启用ntpd服务,另外两台执行相同的操作vi /etc/resolv.confnameserver 202.106.0.20nameserver 203.196.0.100roothadoop01 # crontab -e*/5 * * * * /usr/sbin/ntpdate ntp.api.bz & /dev/null7 Linux 打开文件数1024限制的原理以及解决办法1、/etc/pam.d/login 添加session required /lib/security/pam_limits.so注意看这个文件的注释2. /etc/security/limits.conf 添加ww
7、w nofile 1006154www 是一个用户,如果是想所有用户生效的话换成 * ,设置的数值与硬件配置有关,别设置太大了。-3. 修改 /etc/rc.local 添加echo 8061540 /proc/sys/fs/file-max做完3个步骤,就可以了。三、安装hadooproothadoop01 # tar xf hadoop-1.2.1.tar.gz -C /usr/local/roothadoop01# chown -R hadoop:hadoop/usr/local/hadoop-1.2.1roothadoop01#su hadoophadoophadoop01 $ cd
8、/usr/local/hadoop-1.2.1/(1)Hadoop的配置文件都存储在conf下,配置文件解释hadoop-env.sh:用于定义hadoop运行环境相关的配置信息,比如配置JAVA_HOME环境变量、为hadoop的JVM指定特定的选项、指定日志文件所在的目录路径以及master和slave文件的位置等;core-site.xml:用于定义系统级别的参数,它作用于全部进程及客户端,如HDFS URL、Hadoop的临时目录以及用于rack-aware集群中的配置文件的配置等,此中的参数定义会覆盖core-default.xml文件中的默认配置;hdfs-site.xml:HDF
9、S的相关设定,如文件副本的个数、块大小及是否使用强制权限等,此中的参数定义会覆盖hdfs-default.xml文件中的默认配置;mapred-site.xml:mapreduce的相关设定,如reduce任务的默认个数、任务所能够使用内存的默认上下限等,此中的参数定义会覆盖mapred-default.xml文件中的默认配置;masters:hadoop的secondary-masters主机列表,当启动Hadoop时,其会在当前主机上启动NameNode和JobTracker,然后通过SSH连接此文件中的主机以作为备用NameNode;slaves:Hadoop集群的slave(datan
10、ode)和tasktracker的主机列表,master启动时会通过SSH连接至此列表中的所有主机并为其启动DataNode和taskTracker进程;Hadoop-metrics2.properties:控制metrics在hadoop上如何发布属性Log4j.properties:系统日志文件、namenode审计日志、tarsktracker子进程的任务日志属性(2)修改hadoop-env.shhadoophadoop01 hadoop-1.2.1$ vi conf/hadoop-env.sh(3)修改core-site.xmlhadoophadoop01 hadoop-1.2.1$
11、 vi conf/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服务器监听的地址(可以是主机名)和端口(默
12、认为8020)。其默认值为file:/,即本地文件系统。(4)修改hdfs-site.xml文件hadoophadoop01 hadoop-1.2.1$ vi conf/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/df
13、s/namedfs.replication属性定义保存副本的数量,默认是保存3份,由于这里只有两台slave。所以设置2。(5)修改mapred-site.xml文件hadoophadoop01 hadoop-1.2.1$vi conf/mapred-site.xml mapred.job.tracker http:/hadoop01:9001 (6)编辑masters文件masters用于指定,辅助名称节点(SecondaryNameNode)的主机名或主机地址hadoophadoop01 hadoop-1.2.1$vi conf/mastershadoop01(7)编辑slaves文件,这
14、个文件只需在master主机上编辑就行用于指定各从服务器(TaskTracker或DataNode)的主机名或主机地址hadoop02hadoop03在三台机器上分别创建两个目录:roothadoop01 local# mkdir -p /data/hadoop/dataroothadoop01 local# mkdir -p /data/hadoop/tmproothadoop01 local# chown -R hadoop:hadoop /data/hadoop/roothadoop02local# mkdir -p /data/hadoop/dataroothadoop02local#
15、 mkdir -p /data/hadoop/tmproothadoop02local# chown -R hadoop:hadoop /data/hadoop/roothadoop03local# mkdir -p /data/hadoop/dataroothadoop03local# mkdir -p /data/hadoop/tmproothadoop03local# chown -R hadoop:hadoop /data/hadoop/(8)配置slave:将配置的hadoop整个目录复制到hadoop02,haoop03roothadoop01 # scp -rp /usr/loc
16、al/hadoop-1.2.1 hadoop02:/usr/local/roothadoop01 # scp -rp /usr/local/hadoop-1.2.1 hadoop03:/usr/local/修改权限:roothadoop02 # chown -R hadoop:hadoop /usr/local/hadoop-1.2.1/roothadoop03# chown -R hadoop:hadoop /usr/local/hadoop-1.2.1/四、启动集群1格式化名称节点与普通文件系统一样,HDFS文件系统必须要先格式化,创建元数据数据结构以后才能使用。hadoophadoop0
17、1 hadoop-1.2.1$ bin/hadoop namenode -format如果格式化出错,一般会提示错误,就像下面,已经在提示哪个文件,第几行,根据提示检查即可。hadoophadoop01 $bin/start-all.shhadoophadoop01 $ jps查看进程是否起来。secondarynamenode,namenode,jobtracker三个进程必须都有,才正常。或者这种方式查看集群是否正常hadoophadoop01 hadoop-1.2.1$ bin/hadoop dfsadmin report测试集群:hadoophadoop01hadoop-1.2.1$
18、bin/hadoop jar hadoop-test-1.2.1.jar DFSCIOTest -write-nrFiles 10 -filesize 1000hadoophadoop01hadoop-1.2.1$bin/hadoopjarhadoop-test-1.2.1.jar DFSCIOTest -read -nrFiles 10 -filesize 1000hadoop默认监听的端口:Hadoop进程监听的地址和端口Hadoop启动时会运行两个服务器进程,一个为用于Hadoop各进程之间进行通信的RPC服务器,另一个是提供了便于管理员查看Hadoop集群各进程相关信息页面的HTTP服
19、务器。用于定义各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使用此端口与Task
20、Tracker进行通信,它仅需要监听在本地回环地址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服务器
21、地址和端口,默认为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。如nam
22、enode的相关信息:2 排错思路1,是否是hadoop.tmp.dir,dfs.data.dir属性,如果定义在别的目录需要在集群中所有节点都创建,并让hadoop用户能够访问2,查看进程对应的端口是否有在监听。在上面配置中将namenode的端口定义9000,jobtracker定义成9001hadoophadoop01 hadoop-1.2.1$ netstat -tunlp |grep 9000tcp 0 0 :ffff:192.168.0.31:9000 :* LISTEN 22709/java hadoophadoop01 hadoop-1.2.1$ netstat -tunlp
23、|grep 9001tcp 0 0 :ffff:192.168.0.31:9001 :* LISTEN 22924/java 3,查看日志,哪个服务没起来就查看对应的日志。4,查看集群中所有节点的时间是不是一致。5,iptable与selinux是否阻止。6,/etc/hosts是否正确。五、添加节点,删除节点添加节点1.修改host和普通的datanode一样。添加namenode的ip2.修改namenode的配置文件conf/slaves添加新增节点的ip或host3.在新节点的机器上,启动服务hadoophadoop04hadoop# ./bin/hadoop-daemon.sh st
24、art datanodehadoophadoop04 hadoop# ./bin/hadoop-daemon.sh start tasktracker 4.均衡blockhadoophadoop04 hadoop# ./bin/start-balancer.sh1)如果不balance,那么cluster会把新的数据都存放在新的node上,这样会降低mapred的工作效率2)设置平衡阈值,默认是10%,值越低各节点越平衡,但消耗时间也更长rootslave-004 hadoop# ./bin/start-balancer.sh -threshold 53)设置balance的带宽,默认只有1M
25、/sdfs.balance.bandwidthPerSec1048576Specifies the maximum amount of bandwidth that each datanode can utilize for the balancing purpose in term of the number of bytes per second. 注意:1.必须确保slave的firewall已关闭;2.确保新的slave的ip已经添加到master及其他slaves的/etc/hosts中,反之也要将master及其他slave的ip添加到新的slave的/etc/hosts中删除节点
26、1.集群配置 修改conf/hdfs-site.xml文件dfs.hosts.exclude/data/soft/hadoop/conf/excludesNames a file that contains a list of hosts that are not permitted to connect to the namenode. The full pathname of the file must be specified. If the value is empty, no hosts are excluded.2确定要下架的机器dfs.hosts.exclude定义的文件内容为,
27、每个需要下线的机器,一行一个。这个将阻止他们去连接Namenode。如:haoop043.强制重新加载配置rootmaster hadoop# ./bin/hadoop dfsadmin -refreshNodes它会在后台进行Block块的移动4.关闭节点等待刚刚的操作结束后,需要下架的机器就可以安全的关闭了。rootmaster hadoop# ./bin/ hadoop dfsadmin -report 可以查看到现在集群上连接的节点正在执行Decommission,会显示:Decommission Status : Decommission in progress执行完毕后,会显示:Decommission Status : Decommissioned5.再次编辑excludes文件一旦完成了机器下架,它们就可以从excludes文件移除了登录要下架的机器,会发现DataNode进程没有了,但是TaskTracker依然存在,需要手工处理一下六、安装zookeeper1 zookeeper概述:ZooKeeper是一个分布式开源框架,提供了协调分布式应用的基本服务,它向外部应用暴露一组通用服务分布式同步(Distributed Synchron
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1