HP DL160 Gen9服务器集群部署文档

HP DL160 Gen9服务器集群部署文档

硬件配置
=======================================================
Server        Memory    CPU            DISK            NetWork
DL160①        32GB    6*1.9GHZ    2*2TB(SATA)        2*1GBE
DL160②        32GB    6*1.9GHZ    2*2TB(SATA)        2*1GBE
DL160③        24GB    6*1.9GHZ    2*2TB(SATA)        2*1GBE
DL160④        24GB    6*1.9GHZ    2*2TB(SATA)        2*1GBE
DL160⑤        24GB    6*1.9GHZ    2*2TB(SATA)        2*1GBE
DL160⑥        8GB      6*1.9GHZ    2*1TB(SATA)        2*1GBE
=======================================================


集群规划
==============================================================
Host         IP                          Role                        Soft                     Process        
lf1            192.168.0.211        HDFS Master            Hadoop2.4.1        NameNode(Active)
                                            HBase Master            Hbase0.98.8        DFSZKFailoverController
                                                                                                     HMaster(Active)
lf3            192.168.0.213        YARN Master            Hadoop2.4.1        ResourceManager(Active)
                                             HBase Master           Hbase0.98.8        DFSZKFailoverController
                                                                                                     HMaster(Backup)                                
lf5            192.168.0.215        HDFS Slave              Hadoop2.4.1         DataNode
                                                                                                      JournalNode
                                            YARN Slave              Hadoop2.4.1         NodeManager
                                            ZooKeeper Follower  ZooKeeper3.4.5     QuorumPeerMain
                                            HBase Slave             Hbase0.98.8          HRegionServer
                                            Sqoop                     Sqoop1.4.5           Sqoop
                                                                    
lf6            192.168.0.216        HDFS Slave              Hadoop2.4.1         DataNode
                                                                                                      JournalNode
                                             YARN Slave              Hadoop2.4.1         NodeManager
                                             ZooKeeper Leader    ZooKeeper3.4.5     QuorumPeerMain
                                             HBase Slave             Hbase0.98.8          HRegionServer
                                             Hive                        Hive0.14.0        

lf7            192.168.0.217        HDFS Slave               Hadoop2.4.1         DataNode
                                                                                                       JournalNode
                                             YARN Slave               Hadoop2.4.1         NodeManager
                                             ZooKeeper Follower   ZooKeeper3.4.5    QuorumPeerMain
                                             HBase Slave              Hbase0.98.8         HRegionServer
===============================================================


一、安装JDK(在lf1节点上)
    cd /home/lefuBigDataDev/clouds/
    安装jdk
        tar -zxvf jdk-7u65-linux-x64.tar.gz
        mv jdk1.7_65 jdk
    配置JAVA_HOME到环境变量
        vim /etc/profile    
        export JAVA_HOME=/home/lefuBigDataDev/clouds/jdk
        export PATH=.:$JAVA_HOME/bin:$PATH
        shift+zz
    刷新环境变量使JAVA_HOME立即生效
        source /etc/profile
    验证jdk是否安装成功
        java -version
    复制配置好的jdk和/etc/profile到其他节点
        scp -r /home/lefuBigDataDev/clouds/jdk lefuBigDataDev@lf3:/home/lefuBigDataDev/clouds/
        scp /etc/profile lefuBigDataDev@lf3:/etc/    ##在lf5节点上执行source /etc/profile使环境变量立即生效
        scp -r /home/lefuBigDataDev/clouds/jdk lefuBigDataDev@lf5:/home/lefuBigDataDev/clouds/
        scp /etc/profile lefuBigDataDev@lf5:/etc/    ##在lf5节点上执行source /etc/profile使环境变量立即生效
        scp -r /home/lefuBigDataDev/clouds/jdk lefuBigDataDev@lf6:/home/lefuBigDataDev/clouds/
        scp /etc/profile lefuBigDataDev@lf6:/etc/    ##在lf6节点上执行source /etc/profile使环境变量立即生效
        scp -r /home/lefuBigDataDev/clouds/jdk lefuBigDataDev@lf7:/home/lefuBigDataDev/clouds/
        scp /etc/profile lefuBigDataDev@lf7:/etc/    ##在lf7节点上执行source /etc/profile使环境变量立即生效
        
        
二、安装ZooKeeper(在lf5节点上)    
    cd /home/lefuBigDataDev/clouds/
    安装ZooKeeper
        tar -zxvf zookeeper-3.4.5.tar.gz
        mv zookeeper-3.4.5 zk
    修改zookeeper配置文件
        cd /home/lefuBigDataDev/clouds/zk/conf
        mv zoo_sample.cfg zoo.cfg
        zoo.cfg
            dataDir=/home/lefuBigDataDev/clouds/zk/data
            server.1=lf5:2888:3888
            server.2=lf6:2888:3888
            server.3=lf7:2888:3888
        cd /home/lefuBigDataDev/clouds/zk/
        mkdir data
        cd data
        echo "1">myid
    配置ZOOKEEPER_HOME到环境变量
        vim /etc/profile    
        export ZOOKEEPER_HOME=/home/lefuBigDataDev/clouds/jdk
        export PATH=.:$ZOOKEEPER_HOME/bin:$JAVA_HOME/bin:$PATH
        shift+zz
    刷新环境变量使ZOOKEEPER_HOME立即生效
        source /etc/profile
    复制配置好的zk和/etc/profile到其他节点
        复制到lf6节点:scp -r /home/lefuBigDataDev/clouds/zk lefuBigDataDev@lf6:/home/lefuBigDataDev/clouds/  ##修改zk/data/myid的值为2
        scp /etc/profile lefuBigDataDev@lf6:/etc/    ##在lf6节点上执行source /etc/profile使环境变量立即生效
        复制到lf7节点:scp -r /home/lefuBigDataDev/clouds/zk lefuBigDataDev@lf7:/home/lefuBigDataDev/clouds/  ##修改zk/data/myid的值为3
        scp /etc/profile lefuBigDataDev@lf7:/etc/    ##在lf7节点上执行source /etc/profile使环境变量立即生效
    验证ZooKeeper是否安装成功
        在lf5节点上执行启动ZooKeeper命令:
            zkServer.sh start        ##启动ZooKeeper
            jps                        ##如果出现了QuorumPeerMain进程表示ZooKeeper启动成功
            zkServer.sh status        ##偶数节点为Follower
        在lf6节点上执行命令:
            zkServer.sh start        ##启动ZooKeeper
            jps                        ##如果出现了QuorumPeerMain进程表示ZooKeeper启动成功
            zkServer.sh status        ##奇数节点为Leader
        在lf7节点上执行命令:
            zkServer.sh start        ##启动ZooKeeper
            jps                        ##如果出现了QuorumPeerMain进程表示ZooKeeper启动成功
            zkServer.sh status        ##偶数节点为Follower

    
三、安装Hadoop(在lf1节点上)
    cd /home/lefuBigDataDev/clouds/
    安装Hadoop
        tar -zxvf hadoop-2.4.1-x64.tar.gz
        mv hadoop-2.4.1 hadoop
    修改hadoop配置文件(hadoop-env.sh、core-site.xml、hdfs-site.xml、mapred-env.sh、mapred-site.xml、yarn-env.sh、yarn-site.xml、slaves)    
        cd /home/lefuBigDataDev/clouds/hadoop/etc/hadoop
        1、hadoop-env.sh
            export JAVA_HOME=/home/lefuBigDataDev/clouds/jdk
            export HADOOP_HEAPSIZE=2048
        2、core-site.xml
            <configuration>
                <property>
                    <name>fs.defaultFS</name>
                    <value>hdfs://ns1</value>
                    <description>指定hdfs的nameservice为ns1</description>
                </property>
                <property>
                    <name>hadoop.tmp.dir</name>
                    <value>/home/lefuBigDataDev/clouds/hadoop/tmp</value>
                    <description>指定hadoop存放数据的临时目录</description>
                </property>
                <property>
                    <name>ha.zookeeper.quorum</name>
                    <value>lf5:2181,lf6:2181,lf7:2181</value>
                    <description>采用QJM方式的高可用需要用到的zookeeper集群节点</description>
                </property>
                <property>
                    <name>io.file.buffer.size</name>
                    <value>131072</value>
                    <description>指定hadoop辅助IO操作的缓冲区为128KB,默认是4KB</description>
                </property>
                <property>
                    <name>io.compression.codecs</name>
                    <value>org.apache.hadoop.io.compress.DefaultCodec,org.apache.hadoop.io.compress.GzipCodec,org.apache.hadoop.io.compress.BZip2Codec</value>
                    <description>hdfs实现数据压缩的算法包</description>
                </property>
                <property>
                    <name>fs.trash.interval</name>
                    <value>43200</value>
                    <description>开启hadoop回收站功能,保存回收站的数据30天,回收站默认为0分钟,表示关闭</description>
                </property>
                <property>
                    <name>fs.trash.checkpoint.interval</name>
                    <value>43200</value>
                    <description>开启hadoop回收站检查间隔(默认为0分钟,必须小于等于fs.trash.interval的时间)</description>
                </property>
            </configuration>
        3、hdfs-site.xml
            <configuration>
                <property>
                    <name>dfs.namenode.name.dir</name>
                    <value>/home/lefuBigDataDev/clouds/hadoop/dfs/name</value>
                    <description>指定hadoop的NameNode存放元数据fsImage文件在本地文件系统上的路径</description>
                </property>
                <property>
                    <name>dfs.datanode.data.dir</name>
                    <value>/home/lefuBigDataDev/clouds/hadoop/dfs/data</value>
                    <description>指定hadoop的DataNode存放数据块在本地文件系统上的路径,多个文件夹用逗号分隔</description>
                </property>
                <property>
                    <name>dfs.namenode.edits.dir</name>
                    <value>/home/lefuBigDataDev/clouds/hadoop/dfs/name</value>
                    <description>指定hadoop的NameNode存放编辑日志edits文件在本地文件系统上的路径</description>
                </property>
                <property>
                    <name>dfs.replication</name>
                    <value>3</value>
                    <description>指定hdfs上存放数据的副本数为3,完全分布式下默认为3</description>
                </property>
                <property>
                    <name>dfs.blocksize</name>
                    <value>134217728</value>
                    <description>指定hdfs的数据块大小为128MB,默认块大小为128MB</description>
                </property>
                <property>
                    <name>dfs.webhdfs.enabled</name>
                    <value>true</value>
                    <description>启用REST方式通过web查看hdfs上的文件、文件夹等详细信息</description>
                </property>
                <property>
                    <name>dfs.nameservices</name>
                    <value>ns1</value>    
                    <description>指定hdfs的nameservice为ns1,需要和core-site.xml中的保持一致</description>
                </property>
                <property>
                    <name>dfs.ha.namenodes.ns1</name>
                    <value>nn1,nn2</value>
                    <description>ns1下面有两个NameNode,分别是nn1,nn2</description>
                </property>
                <property>
                    <name>dfs.namenode.rpc-address.ns1.nn1</name>
                    <value>lf1:9000</value>
                    <description>nn1的RPC通信地址</description>
                </property>
                <property>
                    <name>dfs.namenode.http-address.ns1.nn1</name>
                    <value>lf1:50070</value>
                    <description>nn1的http通信地址</description>
                </property>
                <property>
                    <name>dfs.namenode.rpc-address.ns1.nn2</name>
                    <value>lf2:9000</value>
                    <description>nn2的RPC通信地址</description>
                </property>
                <property>
                    <name>dfs.namenode.http-address.ns1.nn2</name>
                    <value>lf2:50070</value>
                    <description>nn2的http通信地址</description>
                </property>
                <property>
                    <name>dfs.namenode.shared.edits.dir</name>
                    <value>qjournal://lf5:8485;lf6:8485;lf7:8485/ns1</value>
                    <description>指定NameNode的元数据在JournalNode上的存放位置</description>
                </property>
                <property>
                    <name>dfs.journalnode.edits.dir</name>
                    <value>/home/lefuBigDataDev/clouds/hadoop/dfs/journal</value>
                    <description>指定JournalNode在本地磁盘存放数据的位置</description>
                </property>
                <property>
                    <name>dfs.ha.automatic-failover.enabled</name>
                    <value>true</value>
                    <description>活动NameNode失效时与备用NameNode完成自动切换</description>
                </property>
                <property>
                    <name>dfs.client.failover.proxy.provider.ns1</name>
                    <value>org.apache.hadoop.hdfs.server.namenode.ha.ConfiguredFailoverProxyProvider</value>
                    <description>配置自动切换实现方式的java类</description>
                </property>
                <property>
                    <name>dfs.ha.fencing.methods</name>
                    <value>
                        sshfence
                        shell(/bin/true)
                    </value>
                    <description>非平稳故障转移需要使用规避(fencing)机制,多种规避方法以换行分隔,每个规避方法一行</description>
                </property>
                <property>
                    <name>dfs.ha.fencing.ssh.private-key-files</name>
                    <value>/home/lefuBigDataDev/.ssh/id_rsa</value>
                    <description>使用规避sshfence隔离机制时需要ssh免登陆</description>
                </property>
                <property>
                    <name>dfs.ha.fencing.ssh.connect-timeout</name>
                    <value>30000</value>
                    <description>配置规避sshfence隔离机制超时时间</description>
                </property>
                <property>
                    <name>dfs.datanode.du.reserved</name>
                    <value>10737418240</value>
                    <description>预留10GB给其他非HDFS应用程序使用</description>
                </property>    
            </configuration>
        4、mapred-env.sh
            export JAVA_HOME=/home/lefuBigDataDev/clouds/jdk
            export HADOOP_JOB_HISTORYSERVER_HEAPSIZE=1000
            export HADOOP_MAPRED_ROOT_LOGGER=INFO,RFA
        5、mapred-site.xml
            <configuration>
                <property>
                    <name>mapreduce.framework.name</name>
                    <value>yarn</value>
                    <description>指定mr框架为yarn方式</description>
                </property>    
                <property>
                    <name>mapreduce.task.io.sort.factor</name>
                    <value>100</value>
                    <description>reducer进入排序(合并map的输出)阶段默认合并因子是10,这里的100是为了减少合并的次数</description>
                </property>
                <property>
                    <name>mapreduce.job.jvm.numtasks</name>
                    <value>-1</value>
                    <description>开启jvm重用,在密集型任务计算时效率更高</description>
                </property>
                <property>
                    <name>mapreduce.output.fileoutputformat.compress.codec</name>
                    <value>org.apache.hadoop.io.compress.DefaultCodec</value>
                    <description>用于处理map任务输出的编解码器</description>
                </property>
                <property>
                    <name>mapreduce.map.maxattempts</name>
                    <value>4</value>
                    <description>map任务失败最大尝试次数,默认尝试4次</description>
                </property>
                <property>
                    <name>mapreduce.reduce.maxattempts</name>
                    <value>4</value>
                    <description>reduce任务失败最大尝试次数,默认尝试4次</description>
                </property>
                <property>
                    <name>mapreduce.reduce.shuffle.parallelcopies</name>
                    <value>10</value>
                    <description>reduce任务复制map输出的阶段,默认启用5个线程,这里指定为10,当map输出数量小于该值时则只每个map任务输出对应一个reduce复制线程</description>
                </property>
                <property>
                    <name>mapreduce.map.speculative</name>
                    <value>false</value>
                    <description>关闭map任务的推测执行</description>
                </property>
                <property>
                    <name>mapreduce.reduce.speculative</name>
                    <value>false</value>
                    <description>关闭reduce任务的推测执行</description>
                </property>    
                <property>
                    <name>mapreduce.job.reduce.slowstart.completedmaps</name>
                    <value>0.80</value>
                    <description>慢启动reduce任务,默认调度器会等待作业5%的map任务结束后调用reduce任务开始等待,等待的时候reduce是会占用reduce任务槽导致其他作业分配不到reduce任务。如果是大型作业时会降低集群的利用率,这里设置某个作业的map任务运行到80%的时候再启动reduce等待</description>
                </property>    
            </configuration>
        6、yarn-env.sh
            export JAVA_HOME=/home/lefuBigDataDev/clouds/jdk
        7、yarn-site.xml
            <configuration>
                <property>
                   <name>yarn.resourcemanager.ha.enabled</name>
                   <value>true</value>
                   <description>开启ResourceManager的HA</description>
                </property>
                <property>
                   <name>yarn.resourcemanager.cluster-id</name>
                   <value>yrc</value>
                   <description>指定ResourceManager的集群ID</description>
                </property>
                <property>
                   <name>yarn.resourcemanager.ha.rm-ids</name>
                   <value>rm1,rm2</value>
                   <description>指定HA方式的活动和备用的ResourceManager的名字</description>
                </property>
                <property>
                   <name>yarn.resourcemanager.hostname.rm1</name>
                   <value>lf3</value>
                   <description>指定活动的ResourceManager的节点</description>
                </property>
                <property>
                   <name>yarn.resourcemanager.hostname.rm2</name>
                   <value>lf4</value>
                   <description>指定备用的ResourceManager的节点</description>
                </property>
                <property>
                   <name>yarn.resourcemanager.zk-address</name>
                   <value>lf5:2181,lf6:2181,lf7:2181</value>
                   <description>指定zk集群地址</description>
                </property>
                <property>
                   <name>yarn.nodemanager.aux-services</name>
                   <value>mapreduce_shuffle</value>
                   <description>在NodeManager上扩展自定义服务</description>
                </property>
                <property>
                   <name>yarn.nodemanager.resource.cpu-vcores</name>
                   <value>6</value>
                   <description>yarn使用虚拟cpu个数,默认8个;虚拟cpu个数在生产中建议和物理cpu核数相同</description>
                </property>
                <property>
                   <name>yarn.nodemanager.resource.memory-mb</name>
                   <value>16384</value>
                   <description>yarn节点上可使用的物理内存总量,默认8192MB(8GB),这里设置为16384MB(16GB)</description>
                </property>
                <property>
                   <name>yarn.nodemanager.vmem-pmem-ratio</name>
                   <value>2.1</value>
                   <description>任务每使用1MB物理内存,最多可使用虚拟内存量,默认是2.1MB</description>
                </property>
                <property>
                   <name>yarn.nodemanager.pmem-check-enabled</name>
                   <value>true</value>
                   <description>是否启动一个线程检查每个任务正使用的物理内存量,如果任务超出分配值,则直接将其杀掉,默认是true</description>
                </property>
                <property>
                   <name>yarn.nodemanager.vmem-check-enabled</name>
                   <value>true</value>
                   <description>是否启动一个线程检查每个任务正使用的虚拟内存量,如果任务超出分配值,则直接将其杀掉,默认是true</description>
                </property>
                <property>
                   <name>yarn.scheduler.minimum-allocation-mb</name>
                   <value>1024</value>
                   <description>单个任务可申请的最少物理内存量,默认是1024MB(1GB),如果一个任务申请的物理内存量少于该值,则该对应的值改为这个数</description>
                </property>
                <property>
                   <name>yarn.scheduler.maximum-allocation-mb</name>
                   <value>15360</value>
                   <description>单个任务可申请的最多物理内存量,默认是8192MB(8GB),这里是15360MB(15GB)</description>
                </property>
            </configuration>
        8、slaves
            lf5
            lf6
            lf7
    配置HADOOP_HOME到环境变量
        vim /etc/profile    
        export HADOOP_HOME=/home/lefuBigDataDev/clouds/jdk
        export PATH=.:$HADOOP_HOME/bin:$HADOOP_HOME/sbin:$JAVA_HOME/bin:$PATH
    刷新环境变量使HADOOP_HOME立即生效
        source /etc/profile
    复制配置好的hadoop到其他节点
        复制到lf3节点:scp -r /home/lefuBigDataDev/clouds/hadoop lefuBigDataDev@lf3:/home/lefuBigDataDev/clouds/  ##添加HADOOP_HOME到/etc/profile,然后执行source /etc/profile立即生效
        复制到lf5节点:scp -r /home/lefuBigDataDev/clouds/hadoop lefuBigDataDev@lf5:/home/lefuBigDataDev/clouds/  ##添加HADOOP_HOME到/etc/profile,然后执行source /etc/profile立即生效
        复制到lf6节点:scp -r /home/lefuBigDataDev/clouds/hadoop lefuBigDataDev@lf6:/home/lefuBigDataDev/clouds/  ##添加HADOOP_HOME到/etc/profile,然后执行source /etc/profile立即生效
        复制到lf7节点:scp -r /home/lefuBigDataDev/clouds/hadoop lefuBigDataDev@lf7:/home/lefuBigDataDev/clouds/  ##添加HADOOP_HOME到/etc/profile,然后执行source /etc/profile立即生效
    开始准备启动hadoop集群,严格按照如下步骤执行
        1、检查lf5、lf6、lf7节点上的ZooKeeper集群是否启动(HDFS HA和YARN HA都需要依赖ZooKeeper集群)
            在lf5节点上执行命令:
                zkServer.sh status  ##如果没有QuorumPeerMain进程则执行zkServer.sh start启动
            在lf6节点上执行命令:
                zkServer.sh status  ##如果没有QuorumPeerMain进程则执行zkServer.sh start启动
            在lf7节点上执行命令:
                zkServer.sh status  ##如果没有QuorumPeerMain进程则执行zkServer.sh start启动
        2、在lf1节点上启动JournalNode
            cd /home/lefuBigDataDev/clouds/hadoop/sbin
            hadoop-daemons.sh start journalnode
        3、在lf1节点上格式化hadoop的HDFS,即hadoop的分布式文件系统
            cd /home/lefuBigDataDev/clouds/hadoop/bin
            hdfs namenode -format    ##日志中出现这行内容Storage directory /home/lefuBigDataDev/clouds/hadoop/dfs/name has been successfully formatted.则表示格式化HDFS成功
        4、在lf1节点上格式化ZKFC,即ZooKeeper故障转移控制器
            cd /home/lefuBigDataDev/clouds/hadoop/bin
            hdfs zkfc -formatZK        ##日志中出现这行内容ha.ActiveStandbyElector: Successfully created /hadoop-ha/ns1 in ZK.则表示格式化ZKFC成功
        5、在lf1节点上启动hadoop的HDFS
            cd /home/lefuBigDataDev/clouds/hadoop/sbin
            start-dfs.sh
        6、在lf3节点上启动hadoop的YARN
            cd /home/lefuBigDataDev/clouds/hadoop/sbin
            start-yarn.sh
        7、验证hadoop集群是否启动成功
            1、使用shell验证:
                输入命令:for i in lf1 lf3 lf5 lf6 lf7; do echo $i; ssh $i `which jps`; done    ##如下进程表示hadoop集群启动成功
                    lf1
                    3598 DFSZKFailoverController
                    9197 Jps
                    3283 NameNode
                    lf3
                    2902 ResourceManager
                    3037 JobHistoryServer
                    7491 Jps
                    lf5
                    3148 DataNode
                    3370 NodeManager
                    3255 JournalNode
                    3073 QuorumPeerMain
                    15238 Jps
                    lf6
                    3220 NodeManager
                    2917 QuorumPeerMain
                    10380 Jps
                    2997 DataNode
                    3105 JournalNode
                    lf7
                    2974 QuorumPeerMain
                    3163 JournalNode
                    3277 NodeManager
                    3056 DataNode
                    12048 Jps
            2、使用浏览器方式验证:
                输入lf1:50070验证HDFS
                输入lf3:8088验证YARN
                输入lf3:19888验证HistoryServer
        8、以上两种方式验证通过则表示Hadoop集群正确部署并启动成功


四、安装HBase(在lf1节点上),前提条件是必须已有ZooKeeper集群
    cd /home/lefuBigDataDev/clouds/
    安装HBase
        tar -zxvf hbase-0.98.8-hadoop2-bin.tar.gz
        mv hbase-0.98.8-hadoop2-bin hbase
    修改hbase配置文件(hbase-env.sh,hbase-site.xml,regionservers,需要将Hadoop的hdfs-site.xml和core-site.xml 放到hbase/conf下)
        1、hbase-env.sh
            export JAVA_HOME=/home/lefuBigDataDev/clouds/jdk
            export HBASE_HEAPSIZE=3000
        2、hbase-site.xml
            <configuration>
                <property>
                        <name>hbase.rootdir</name>
                        <value>hdfs://ns1/hbase</value>
                        <description>指定hbase在HDFS上存储的路径</description>
                </property>
                <property>
                        <name>hbase.cluster.distributed</name>
                        <value>true</value>
                        <description>指定hbase集群为完全分布式</description>
                </property>
                <property>
                        <name>hbase.zookeeper.quorum</name>
                        <value>lf5:2181,lf6:2181,lf7:2181</value>
                        <description>指定HBase集群使用外部的zookeeper集群的地址</description>
                </property>
                <property>
                        <name>zookeeper.session.timeout</name>
                        <value>60000</value>
                        <description>RegionServer与zookeeper连接超时时间默认180000毫秒(3分钟),当超过超时时间时,zookeeper会将超时节点的RegionServer从RegionServer集群清单中清除,当HMaster收到移除通知后会对超时节点的Regions重新负载均衡,让其他存活的RegionServer接管。这里改为60000毫秒(1分钟)</description>
                </property>
                <property>
                    <name>hbase.regionserver.handler.count</name>
                    <value>80</value>
                    <description>RegionServer端开启的RPC监听器实例个数(RegionServer能够处理的IO请求线程数)。老版本默认10,0.98.8中默认是30,这里改为80</description>
                </property>
                    <property>
                    <name>hfile.block.cache.size</name>
                    <value>0.4</value>
                    <description>regionserver cache的大小,默认是0.4,是整个堆内存的多少比例作为regionserver的cache,调大该值会提升查询性能。如果有大量的查询,写入不多,则调到0.5。当这里设置大了,有MapReduce作业Scan HBase时需要在MapReduce作业的Scan类中添加scan.setCacheBlocks(false),这样可以避免由于MapReduce使用regionserver的cache都被替换,造成hbase的查询性能明显下降。</description>
                </property>
                <property>
                    <name>hbase.hregion.memstore.flush.size</name>
                    <value>268435456</value>
                    <description>regionserver的单个region memstore的大小,默认是128M,这里设为256。在hbase结构中,一个regionserver管理多个region,一个region对应一个hlog和多个store,一个store对应多个storefile和一个memstore,这里的hbase.hregion.memstore.flush.size意思一个region下面的所有store里面的memstore的达到多少时,开始将这些memstore flush到hdfs中去,配置这个值,需
                    要参考一下,平均每个regionserver管理的region数量,如果每台regionsever管理的region不多的话,可以适当的调大该值,如512M时再flush</description>
                </property>
                <property>
                    <name>hbase.hregion.max.filesize</name>
                    <value>10737418240</value>
                    <description>默认10GB,regions会被hmaster balance入各个regionserver,后随着单region的记录数增加,触发splite条件一般为hbase.hregion.max.filesize,会对其进行splite,找到region的middlekey,之后一分为二成为两个region,当然这是一个完整事务,之后会随着balance入不同的regionserver进行负载方面的均衡。</description>
                </property>
                <property>
                    <name>hbase.hstore.compactionThreshold</name>
                    <value>5</value>
                    <description>设置执行Compaction(Major或Minor)操作的阈值,默认是3。对于HBase负载较重的系统,为降低过频繁的合并操作,这里设置成5。</description>
                </property>    
            </configuration>
        3、regionservers
            lf5
            lf6
            lf7
    配置HBASE_HOME到环境变量
        vim /etc/profile    
        export HBASE_HOME=/home/lefuBigDataDev/clouds/hbase
        export PATH=.:$HBASE_HOME/bin:$HADOOP_HOME/bin:$HADOOP_HOME/sbin:$JAVA_HOME/bin:$PATH
        shift+ZZ
    刷新环境变量使HBASE_HOME立即生效
        source /etc/profile
    复制配置好的hbase到其他节点
        复制到lf3节点:scp -r /home/lefuBigDataDev/clouds/hbase lefuBigDataDev@lf3:/home/lefuBigDataDev/clouds/  ##添加HBASE_HOME到/etc/profile,然后执行source /etc/profile立即生效
        复制到lf5节点:scp -r /home/lefuBigDataDev/clouds/hbase lefuBigDataDev@lf5:/home/lefuBigDataDev/clouds/  ##添加HBASE_HOME到/etc/profile,然后执行source /etc/profile立即生效
        复制到lf6节点:scp -r /home/lefuBigDataDev/clouds/hbase lefuBigDataDev@lf6:/home/lefuBigDataDev/clouds/  ##添加HBASE_HOME到/etc/profile,然后执行source /etc/profile立即生效
        复制到lf7节点:scp -r /home/lefuBigDataDev/clouds/hbase lefuBigDataDev@lf7:/home/lefuBigDataDev/clouds/  ##添加HBASE_HOME到/etc/profile,然后执行source /etc/profile立即生效
    开始准备启动hbase集群,严格按照如下步骤执行
        1、验证各个节点的时间误差,HBase不允许最大时间差超过30秒
            for i in lf1 lf3 lf5 lf6 lf7; do echo $i; ssh $i date; done
        2、如果各个节点的时间误差超过30秒则执行如下命令
            for i in lf1 lf3 lf5 lf6 lf7; do echo $i; ssh $i date -s 月/日/年; done
            for i in lf1 lf3 lf5 lf6 lf7; do echo $i; ssh $i date -s 时/分/秒; done
        3、检查lf5、lf6、lf7节点上的ZooKeeper集群是否启动(HBase集群需要依赖ZooKeeper集群)
            在lf5节点上执行命令:
                zkServer.sh status  ##如果没有QuorumPeerMain进程则执行zkServer.sh start启动
            在lf6节点上执行命令:
                zkServer.sh status  ##如果没有QuorumPeerMain进程则执行zkServer.sh start启动
            在lf7节点上执行命令:
                zkServer.sh status  ##如果没有QuorumPeerMain进程则执行zkServer.sh start启动
        4、在lf1节点上启动hbase HA Active进程
                cd /home/lefuBigDataDev/clouds/hbase/bin
                start-hbase.sh
        5、在lf3节点上启动hbase HA Backup进程
                hbase-daemon.sh start master
        6、验证hbase集群是否运行成功
            1、使用shell验证:
                输入命令:for i in lf1 lf3 lf5 lf6 lf7; do echo $i; ssh $i `which jps`; done    ##如下进程表示hbase集群启动成功
                    lf1
                    11850 NameNode
                    15778 Jps
                    12167 DFSZKFailoverController
                    12407 HMaster
                    lf3
                    8861 ResourceManager
                    11192 Jps
                    9083 JobHistoryServer
                    9301 HMaster
                    lf5
                    17944 QuorumPeerMain
                    18029 DataNode
                    18250 NodeManager
                    21167 Jps
                    18136 JournalNode
                    18441 HRegionServer
                    lf6
                    15900 Jps
                    12687 NodeManager
                    5492 RunJar
                    12383 QuorumPeerMain
                    12466 DataNode
                    12878 HRegionServer
                    12573 JournalNode
                    lf7
                    14187 NodeManager
                    16753 Jps
                    13956 DataNode
                    13881 QuorumPeerMain
                    14073 JournalNode
                    14378 HRegionServer
            2、使用浏览器方式验证:
                输入lf1:60010验证HBase集群信息
                输入lf3:60010验证HBase备用节点信息
        7、以上两种方式验证通过则表示HBase集群正确部署并启动成功
                

五、安装Sqoop(在lf5节点上),前提条件是已有Hadoop集群
    cd /home/lefuBigDataDev/clouds/
    安装Sqoop
        tar -zxvf sqoop-1.4.5.bin.tar.gz
        mv sqoop-1.4.5.bin sqoop
    添加SQOOP_HOME到环境变量
        export SQOOP_HOME=/home/lefuBigDataDev/clouds/sqoop
        shift+ZZ
    刷新环境变量使SQOOP_HOME立即生效
        source /etc/profile
    验证sqoop是否安装成功
        sqoop version


六、安装Hive(在lf6节点上),前提条件是已有Hadoop集群
    cd /home/lefuBigDataDev/clouds/
    安装Sqoop
        tar -zxvf apache-hive-0.14.0-bin.tar.gz
        mv apache-hive-0.14.0-bin hive
    添加SQOOP_HOME到环境变量
        export HIVE_HOME=/home/lefuBigDataDev/clouds/hive
        shift+ZZ
    刷新环境变量使HIVE_HOME立即生效
        source /etc/profile
    修改hive配置文件(hive-env.sh、hive-site.xml)
        1、hive-env.sh
            export JAVA_HOME=/home/lefuBigDataDev/clouds/jdk
            export HADOOP_HOME=/home/lefuBigDataDev/clouds/hadoop
            export HIVE_HOME=/home/lefuBigDataDev/clouds/hive
        2、hive-site.xml
            <configuration>
              <property>
                <name>javax.jdo.option.ConnectionURL</name>
                <value>jdbc:mysql://lf5:3306/lefu?createDatabaseIfNotExist=true</value>  ##如果写成远程访问提示过期需要修改mysql库的表
                <description>指定hive的元数据存储的数据库为mysql,使用JDBC的方式连接mysql,如果mysql中不存在hive数据库则创建</description>
              </property>
              <property>
                <name>javax.jdo.option.ConnectionDriverName</name>
                <value>com.mysql.jdbc.Driver</value>
                <description>指定hive元数据存储的数据库的JDBC连接驱动类</description>
              </property>
              <property>
                <name>javax.jdo.option.ConnectionUserName</name>
                <value>root</value>
                <description>使用指定用户登录hive的元数据存储数据库</description>
              </property>
              <property>
                <name>javax.jdo.option.ConnectionPassword</name>
                <value>******</value>
                <description>使用指定密码登录hive的元数据存储数据库</description>
              </property>
              <property>
                <name>hive.querylog.location</name>
                <value>/home/lefuBigDataDev/clouds/hive/tmp</value>
                <description>默认取值为${system:java.io.tmpdir}/${system:user.name},这个目录是不存在的</description>
              </property>
              <property>
                <name>hive.exec.local.scratchdir</name>
                <value>/home/lefuBigDataDev/clouds/hive/tmp</value>
                <description>默认取值为${system:java.io.tmpdir}/${system:user.name},这个目录是不存在的</description>
              </property>
              <property>
                <name>hive.downloaded.resources.dir</name>
                <value>/home/lefuBigDataDev/clouds/hive/tmp</value>
                <description>默认取值为${system:java.io.tmpdir}/${hive.session.id}_resources,这个目录是不存在的</description>
              </property>
            </configuration>
        3、验证hive安装
            1、使用shell验证
                hive
            2、登陆mysql,mysql中有个lefu的数据库表示hive配置成功


























posted @ 2015-05-08 09:55  孟尧  阅读(699)  评论(0编辑  收藏  举报