1-0 三台PC集群的搭建(noHA)


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.cfg

tickTime=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

 hadoop.tmp.dir

 /data/tmp_hadoop

 Abasefor other temporary directories.

                                           

 fs.defaultFS                          

 hdfs://master1:9000

      fs.trash.interval

      1440

        

      fs.trash.checkpoint.interval

      1440

        

         io.file.buffer.size

         131072

        

        dfs.blocksize

        67108864

       

6) 编辑hdfs-site.xml

                                            

       dfs.namenode.name.dir                         

        /data/hdfs/nn

             

             

                                         

        dfs.datanode.data.dir                   

        /data/hdfs/dn

             

             

 dfs.permissions.superusergroup

 hadoop

 

dfs.namenode.secondary.http-address

master2:9001</value>            

        dfs.namenode.handler.count

        100

             

 

        dfs.replication 

        3 

             

  

7) 编辑mapred-site.xml

         mapreduce.framework.name   

         yarn

               

       mapreduce.map.memory.mb

       1536

      

       mapreduce.map.java.opts

       -Xmx1024M

      

       mapreduce.reduce.memory.mb

       3072

      

       mapreduce.reduce.java.opts

       -Xmx2560M

      

       mapreduce.task.io.sort.mb

       512

      

       mapreduce.task.io.sort.factor

       100

      

       mapreduce.reduce.shuffle.parallelcopies

       50

      

   

        mapreduce.jobhistory.address   

         slave1:10020                        

        mapreduce.jobhistory.webapp.address

        slave1:19888 

               

        mapreduce.jobhistory.intermediate-done-dir

        /mr-history/tmp  

                                          

        mapreduce.jobhistory.done-dir

        /mr-history/done

                   

        mapreduce.shuffle.port

        13562

8) 编辑yarn-site.xml

       yarn.nodemanager.local-dirs

       /data/yarn/local

      

      

       yarn.nodemanager.log-dirs

       /data/yarn/logs

      

      

       yarn.nodemanager.remote-app-log-dir

       /tmp/logs

      

       yarn.nodemanager.remote-app-log-dir-suffix

       logs

      

        dfs.datanode.max.xcievers

        4096

     

        yarn.log-aggregation-enable

         true

               

 

 

       yarn.resourcemanager.webapp.address

        slave2:8088

             

       yarn.resourcemanager.admin.address

       slave2:8033

         

        yarn.resourcemanager.address

        slave2:8032

             

        yarn.resourcemanager.scheduler.address

        slave2:8030

             

       yarn.resourcemanager.resource-tracker.address

      slave2:8031

      yarn.resourcemanager.scheduler.class

      org.apache.hadoop.yarn.server.resourcemanager.scheduler.capacity.CapacityScheduler

        

     yarn.scheduler.minimum-allocation-mb

     512

        

     yarn.scheduler.maximum-allocation-mb

     4096

        

       yarn.nodemanager.aux-services

       mapreduce_shuffle

       yarn.nodemanager.aux-services.mapreduce.shuffle.class

       org.apache.hadoop.mapred.ShuffleHandler

       yarn.nodemanager.resource.memory-mb

       8192

      

       yarn.nodemanager.vmem-pmem-ratio

       2.1

      

       yarn.nodemanager.log.retain-seconds

       10800

      

 

       yarn.log-aggregation.retain-seconds

       -1

      

       yarn.log-aggregation.retain-check-interval-seconds

       -1

      

 

(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文件,增加regionserver

master1

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文件

hbase.master

master1:60000

hbase.rootdir

hdfs://master1:9000/hbase

hbase.cluster.distributed

true

hbase.zookeeper.property.clientPort

2181

hbase.zookeeper.quorum

master1,slave1,slave2

The directory shared by regionservers.

 

    zookeeper.session.timeout 

    60000 

 

hbase.tmp.dir

/data/hbase/tmp_hbase

hbase.regionserver.restart.on.zk.expire

true

hbase.regionserver.handler.count

10

处理用户请求的线程数量,默认10

 

(6)同步hbase节点

(7)启动

master1上

  bin/start-hbase.sh

  访问  http://master1:60010

测试:bin/hbase shell

 

 

你可能感兴趣的:(hadoop集群)