1-0 三台PC集群的搭建(noHA)
2014-04-09 12:56
260 查看
1.部署
搭建方案(no_HA):project | hadoop | hadoop | Hbase | zookeeper |
主机 | ||||
master1 | Namenode | datanode(NM) | HMaster HRegionServer | zk |
slave1 | SNM,JHS | datanode(NM) | HMaster HRegionServer | zk |
slave2 | RM | datanode(NM) | HRegionServer | zk |
2.LINUX基础环境搭建
(1) JDK
安装JDK(jdk-7u40-linux-i586.tar.gz);(此步骤所有机子都要做)部署目录 /opt/ jdk1.7.0_45
配置环境变量
(1) vi/etc/profile.d/java.sh (编辑文件)
(2) 添加
#set java environment
export JAVA_HOME=/opt/jdk1.7.0_45
export PATH=$JAVA_HOME/bin:$JAVA_HOME/jre:$PATH
export CLASSPATH=$JAVA_HOME/lib:$JAVA_HOME/lib/tools.jar
(3) 验证是否安装成功:java –version
(2) hosts
修改hosts(此步骤所有机子都要做)
vi /etc/hosts
修改为:ip自定义
192.168.1.101 master1
192.168.1.102 slave1
192.168.1.103 slave2
(3) hostname
修改hostname(此步骤所有机子都要做)vi/etc/sysconfig/network
修改为:
NETWORKING=yes
HOSTNAME=master1(slave1,slave2)
(4) ssh
配置ssh访问(看说明)1)在(master1)当前用户(hadoop)主目录下执行
(1)$ ssh-keygen-t rsa
(2)cat.ssh/id_rsa.pub >> .ssh/authorized_keys
(3)chmod700 .ssh
(4)chmod644 .ssh/authorized_keys
2)master1到slave1,slave2机器的SSH无密码登录
接下来把authorized_keys复制到的slave1,slave2上。
scp~/.ssh/authorized_keys 远程用户名@远程服务器IP:~/
现在是master1可以无密码访问slave1,slave2.
要想实现任意两台机器互访,就在每台机器上都生成id_rsa和id_rsa.pub,然后把每台机器的公钥都添加进authorized_keys,然后把authorized_keys分发到所有机器上。
(5) 防火墙和selinux
关闭机器的防火墙和selinux(此步骤所有机子都要做)关闭防火墙:
#/etc/init.d/iptables stop #关闭防火墙。
#chkconfig iptables off #关闭开机启动。
关闭selinux:
vi/etc/selinux/config,
把SELINUX=enforcing改成SELINUX=disable;需要重启机器
(6) 时间一致
授时服务(此步骤所有机子都要做)配置时间同步
crontab-e
/usr/sbin/ntpdatecn.pool.ntp.org
手动同步时间
/usr/sbin/ntpdatecn.pool.ntp.org
(7)用户和本地目录
创建用户账号和Hadoop部署目录和数据目录(此步骤所有机子都要做)#创建hadoop 用户
/usr/sbin/groupaddhadoop
#分配hadoop 到 hadoop组中
/usr/sbin/useraddhadoop -g hadoop
#创建hadoop,hbase,zookeepr部署目录
opt/hadoop-2.2.0
opt/hbase-0.96.0-hadoop2
opt/zookeeper-3.4.5
#修改目录结构权限为为hadoop
#本地文件系统涉及到的目录
mkdir -p /data/tmp_hadoop /data/hdfs/dn
/data/hdfs/nn
/data/log/hadoop-hdfs /data/log/hadoop-yarn /data/log/hadoop-mapred
/data/yarn/local /data/yarn/logs
mkdir -p
/data/zookeeper/data/data/zookeeper/datalog
/data/tmp_hbase
/data/hbase
/data/journal
3.zookeeper集群安装
(1)部署
部署3个节点的 ZooKeeper,分别部署在master1、slave1、slave2三台机器上。ZooKeeper 部署的节点数为奇数个。每个 ZooKeeper节点:
部署目录:/opt/zookeeper-3.4.5
创建目录
mkdir –p/data/zookeeper/data
mkdir –p/data/zookeeper/datalog
(2)环境变量
vi/etc/profile.d/zookeeper.sh添加
#set zookeeper environment
export ZOOKEEPER_HOME=/opt/zookeeper-3.4.5
export PATH=$PATH:$ZOOKEEPER_HOME/bin
export ZOO_LOG_DIR=/data/zookeeper/datalog
(3)zoo.cfg
#编辑zookeeper-3.4.5 /conf/zoo.cfgtickTime=2000
initLimit=10
syncLimit=5
dataDir= /data/zookeeper/data
dataLogDir=/data/zookeeper/datalog
clientPort=2181
server.1=master1:2888:3888
server.2=slave1:2888:3888
server.3=slave2:2888:3888
(4)同步zookeeper集群
(5) myid
在各个zookeepr节点上修改myid在dataDir目录中创建名为 “myid” 的文件,在 server.1 的myid 文件中写入”1”这个数字,在 server.2 的myid 文件写入”2”, server.3 写”3”。
比如:在master3上
echo 1 > /data/zookeeper/data/myid
(6)启动
zookeeper(所有zookeeper服务器都要运行)zkServer.sh start
jps: QuorumPeerMain
4.HADOOP 集群
(1)部署
部署目录:/opt/hadoop-2.2.0创建目录
master1,slave1(NN,SNN)
mkdir –p /data/hdfs/nn
所有hadoop节点:
mkdir–p /data/tmp_hadoop /data/hdfs/dn /data/log/hadoop-hdfs /data/log/hadoop-yarn /data/log/hadoop-mapred /data/yarn/local /data/yarn/logs
(2)环境变量
vi/etc/profile.d/hadoop.sh添加
#set hadoop environment
export HADOOP_HOME=/opt/hadoop-2.2.0
export PATH=$PATH:$HADOOP_HOME/bin
export PATH=$PATH:$HADOOP_HOME/sbin
(3)配置文件修改
1) 配置masters,(这里指定Secondarynamenode)slave1
2) 配置slaves
#标识集群的datanode
master1
lave1
slave2
3) 配置hadoop-env.sh
export JAVA_HOME=/opt/jdk1.7.0_45
export HADOOP_LOG_DIR=/data/log/hadoop-hdfs
export YARN_LOG_DIR=/data/log/hadoop-yarn
export HADOOP_MAPRED_LOG_DIR=/data/log/hadoop-mapred
4) 配置yarn-env.sh
export JAVA_HOME=/opt/jdk1.7.0_45
5) 编辑core-site.xml
<property>
<name>hadoop.tmp.dir</name>
<value>/data/tmp_hadoop</value>
<description>Abasefor other temporary directories.</description>
</property>
<property>
<name>fs.defaultFS</name>
<value>hdfs://master1:9000</value>
</property>
<property>
<name>fs.trash.interval</name>
<value>1440</value>
<!--24h,0代表关闭-->
</property>
<property>
<name>fs.trash.checkpoint.interval</name>
<value>1440</value>
<!--一般小于等于fs.trash.interval-->
</property>
<!-- i/o properties -->
<property>
<name>io.file.buffer.size</name>
<value>131072</value>
<!--读写序列化文件缓冲区大小-->
</property>
<!-- Local file system -->
<property>
<name>dfs.blocksize</name>
<value>67108864</value>
<!--268435456256M-->
</property>
6) 编辑hdfs-site.xml
<!--需要配置本地目录的地方-->
<property>
<name>dfs.namenode.name.dir</name>
<value>/data/hdfs/nn</value>
<!--file://${hadoop.tmp.dir}/dfs/name-->
<!--命名空间和事务处理日志-->
</property>
<property>
<name>dfs.datanode.data.dir</name>
<value>/data/hdfs/dn</value>
<!--file://${hadoop.tmp.dir}/dfs/data-->
<!--DataNode本地文件存储的路径-->
</property>
<!--security -->
<property>
<name>dfs.permissions.superusergroup</name>
<value>hadoop</value>
</property>
<!--Secondary Namenode-->
<property>
<name>dfs.namenode.secondary.http-address</name>
<value>master2:9001</value>
</property>
<property>
<name>dfs.namenode.handler.count</name>
<value>100</value>
<!--namenode服务线程数-->
</property>
<property>
<name>dfs.replication</name>
<value>3</value>
<!--冗余备份数目,一般为3-->
</property>
7) 编辑mapred-site.xml
<!-- MapReduce -->
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
<!--运行框架设置为 HadoopYARN-->
</property>
<property>
<name>mapreduce.map.memory.mb</name>
<value>1536</value>
<!--Maps最大资源-->
</property>
<property>
<name>mapreduce.map.java.opts</name>
<value>-Xmx1024M</value>
<!--MapsChild JVM的heap-size堆大小-->
</property>
<property>
<name>mapreduce.reduce.memory.mb</name>
<value>3072</value>
<!--Reduces最大资源-->
</property>
<property>
<name>mapreduce.reduce.java.opts</name>
<value>-Xmx2560M</value>
<!--ReducesChild JVM的heap-size堆大小-->
</property>
<property>
<name>mapreduce.task.io.sort.mb</name>
<value>512</value>
<!--sort整理数据最大使用内存设置-->
</property>
<property>
<name>mapreduce.task.io.sort.factor</name>
<value>100</value>
<!--整理数据时一次合并的流数量-->
</property>
<property>
<name>mapreduce.reduce.shuffle.parallelcopies</name>
<value>50</value>
<!--Reduce运行的最大并行复制数量,用来获取大量maps的输出-->
</property>
<!--JobHistoryServer,另一部分配置在yarn-site.xml-->
<property>
<name>mapreduce.jobhistory.address</name>
<value>slave1:10020</value>
</property>
<property>
<name>mapreduce.jobhistory.webapp.address</name>
<value>slave1:19888</value>
<!--MRJobHistory服务的web界面-->
</property>
<property>
<name>mapreduce.jobhistory.intermediate-done-dir</name>
<value>/mr-history/tmp</value>
<!--MRjobs写入history files的目录-->
</property>
<property>
<name>mapreduce.jobhistory.done-dir</name>
<value>/mr-history/done</value>
<!--JHS管理的history files目录-->
</property>
<property>
<name>mapreduce.shuffle.port</name>
<value>13562</value>
</property>
8) 编辑yarn-site.xml
<!--For ResourceManager-->
<property>
<name>yarn.nodemanager.local-dirs</name>
<value>/data/yarn/local</value>
<!--${hadoop.tmp.dir}/nm-local-dir-->
<!--中间数据写入的路径-->
</property>
<property>
<name>yarn.nodemanager.log-dirs</name>
<value>/data/yarn/logs</value>
<!--${yarn.log.dir}/userlogs-->
<!--Whereto store container logs-->
</property>
<property>
<name>yarn.nodemanager.remote-app-log-dir</name>
<value>/tmp/logs</value>
<!--开启日志聚合后,应用程序的日志将被移到该HDFS目录下-->
</property>
<property>
<name>yarn.nodemanager.remote-app-log-dir-suffix</name>
<value>logs</value>
<!--(远程日志目录被创建)${yarn.nodemanager.remote-app-log-dir}/${user}/${thisParam}-->
</property>
<property>
<name>dfs.datanode.max.xcievers</name>
<value>4096</value>
<!--Datanode 有一个同时处理文件的上限, Hbase中要求修改的-->
</property>
<property>
<name>yarn.log-aggregation-enable</name>
<value>true</value>
<!--是否启用日志聚合-->
</property>
<!-- ResourceManager Configs -->
<property>
<name>yarn.resourcemanager.webapp.address</name>
<value>slave2:8088</value>
<!--RMweb-->
</property>
<property>
<name>yarn.resourcemanager.admin.address</name>
<value>slave2:8033</value>
<!--RM admin interface.-->
</property>
<property>
<name>yarn.resourcemanager.address</name>
<value>slave2:8032</value>
<!--RM设置客户端提交job-->
</property>
<property>
<name>yarn.resourcemanager.scheduler.address</name>
<value>slave2:8030</value>
<!--schedulerinterface -->
</property>
<property>
<name>yarn.resourcemanager.resource-tracker.address</name>
<value>slave2:8031</value>
</property>
<property>
<name>yarn.resourcemanager.scheduler.class</name>
<value>org.apache.hadoop.yarn.server.resourcemanager.scheduler.capacity.CapacityScheduler</value>
<!--resource scheduler class-->
</property>
<property>
<name>yarn.scheduler.minimum-allocation-mb</name>
<value>512</value>
<!--RM分配给每个container的最小内存-->
</property>
<property>
<name>yarn.scheduler.maximum-allocation-mb</name>
<value>4096</value>
<!--RM分配给每个container的最大内存-->
</property>
<!--NodeManager-->
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
<property>
<name>yarn.nodemanager.aux-services.mapreduce.shuffle.class</name>
<value>org.apache.hadoop.mapred.ShuffleHandler</value>
</property>
<property>
<name>yarn.nodemanager.resource.memory-mb</name>
<value>8192</value>
<!--定义NM上可以分配给container的物理内存总量-->
</property>
<property>
<name>yarn.nodemanager.vmem-pmem-ratio</name>
<value>2.1</value>
<!--最大虚拟内存比例for each container,-->
</property>
<property>
<name>yarn.nodemanager.log.retain-seconds</name>
<value>10800</value>
<!--日志在NM本地保存的默认时间,日志聚合关闭时有效-->
</property>
<!--JobHistoryServer-->
<property>
<name>yarn.log-aggregation.retain-seconds</name>
<value>-1</value>
<!--设置聚合日志保留时间-->
</property>
<property>
<name>yarn.log-aggregation.retain-check-interval-seconds</name>
<value>-1</value>
<!--参照聚合日志保留时间-->
</property>
(4)同步hadoop节点
(5) 启动
master1(第一次需要格式化namenode)hadoop namenode -format
启动(namenode,secondarynamenode,datanode)
start-dfs.sh
slave2,启动yarn(RM,NM)
start-yarn.sh
slave1,启动JHS
mr-jobhistory-daemon.sh start historyserver
访问:http://master1:50070
http://slave2:8088
http://slave1:19888
5.Hbase集群安装
(1)部署
前提:Hadoop集群,zookeeper集群已搭建好。部署目录:/opt/hbase-0.96.0-hadoop2
Hbase节点上创建目录:
mkdir –p/data/hbase/logs
mkdir –p/data/hbase/tmp_hbase
(2)环境变量
vi/etc/profile.d/java.sh (编辑文件)#set HBase environment
export HBASE_HOME=/opt/hbase-0.96.0-hadoop2
export PATH=$PATH:$HBASE_HOME/bin
export HBASE_HEAPSIZE=4096
(3)修改最大文件句柄限制
HBase是数据库,会在同一时间使用很多的文件句柄。大多数linux系统使用的默认值1024是不能满足的,(ubuntu为例)
gedit /etc/security/limits.conf
hadoop -nofile 32768
hadoop soft/hard nproc 32000
gedit /etc/pam.d/ common-session
session required pam_limits.so
(4)替换包
在分布式模式下,Hadoop版本必须和HBase下的版本一致。用你运行的分布式Hadoop版本jar文件替换HBaselib目录下的Hadoop jar文件,以避免版本不匹配问题。确认替换了集群中所有HBase下的jar文件。Hadoop版本不匹配问题有不同表现,但看起来都像挂掉了。(habse-0.96.0+hadoop-2.2.0,其中替换17个jar包)(5) 配置文件
1)修改/conf/regionservers文件,增加regionservermaster1
slave1
slave2
2)修改 /conf/hbase-env.sh
export JAVA_HOME=/opt/jdk1.7.0_45
export HBASE_CLASSPATH=/opt/hadoop-2.2.0/etc/hadoop
export HBASE_MANAGES_ZK=false
export HBASE_LOG_DIR=/data/hbase/logs
3)修改/conf/hbase-site.xml文件
<property>
<name>hbase.master</name>
<value>master1:60000</value>
</property>
<!--region server的共享目录,用来持久化Hbase-->
<property>
<name>hbase.rootdir</name>
<value>hdfs://master1:9000/hbase</value>
</property>
<property>
<name>hbase.cluster.distributed</name>
<value>true</value>
</property>
<property>
<name>hbase.zookeeper.property.clientPort</name>
<value>2181</value>
</property>
<property>
<name>hbase.zookeeper.quorum</name>
<value>master1,slave1,slave2</value>
<description>The directory shared by regionservers. </description>
</property>
<property>
<name>zookeeper.session.timeout</name>
<value>60000</value>
</property>
<property>
<name>hbase.tmp.dir</name>
<value>/data/hbase/tmp_hbase</value>
</property>
<property>
<name>hbase.regionserver.restart.on.zk.expire</name>
<value>true</value>
</property>
<property>
<name>hbase.regionserver.handler.count</name>
<value>10</value>
<description> 处理用户请求的线程数量,默认10</description>
</property>
(6)同步hbase节点
(7)启动
master1上bin/start-hbase.sh
访问 http://master1:60010
测试:bin/hbase shell
相关文章推荐
- zookeeper三台伪集群的搭建
- redis集群搭建(单PC)
- 搭建Hadoop分布式集群------修改三台机器的配置文件
- Hadoop 三台主机 集群搭建 详解(测试)
- Time的hadoop学习笔记之--搭建有三台主机的Hadoop集群
- Hadoop 三台主机 集群搭建 详解
- vmware10上三台虚拟机的Hadoop2.5.1集群搭建
- Hadoop 三台主机 集群搭建 详解
- hadoop集群搭建-三台主机
- 虚拟机搭建集群(三台虚拟机)
- 2-0三台PC集群的搭建(HA+backupmaster)
- Hadoop2.7.2集群搭建详解(三台)
- Hadoop2.7.2集群搭建详解(三台)
- Hadoop 三台主机 集群搭建 详解 <转>
- Hadoop 三台主机 集群搭建 详解 &lt;转&gt;
- Hadoop 三台主机 集群搭建 详解
- Hadoop 三台主机 集群搭建 详解
- 三台电脑搭建Hadoop集群
- Hadoop2.7.2集群搭建详解(三台)
- Spark集群搭建与并验证环境是否搭建成功(三台机器)