安装Hadoop生态组件

简介:这篇文章介绍,安装Centos6.9环境下的Zookeeper,Mysql,Kafka,Canal,Flume,Hadoop,Hive,Sqoop,Hbase,Spark(后续会增加ELK,Ozzie,Azkban)

新建虚拟机-->典型-->Linux,Centos64-->名字,路径-->一路默认-->完成
          -->自定义高级-->下一步-->稍后安装,下一步-->Linux,Centos64-->名字,路径-->2核2数总共2-->设置内存-->
                NAT模式(宿主机可以上网,虚拟机便也可以)-->下一步-->创建新磁盘-->20G默认,下一步-->下一步完成
                
编辑虚拟机-->网络适配器(NAT)
            CD/DVD-->ios映像文件-->选7版本的那个
            内存  7G
打开虚拟机-->叉掉下面的黄框-->选第一个回车等待安装-->skip

安装选项页面
    next-->简体中文-->美式键盘-->选基本存储-->是,格式化(虚拟机)磁盘-->配置主机名node-1,点击配置网络-->双击eth0网卡进行编辑
        -->自动连接打上勾(开机自启)-->IPV4设置,自动DHCP就会自动分配ip上网,这里选手动manual-->添加-->设置地址(网关的最后一位修改),
        掩码255.255.255.0,网关在虚拟网络编辑器中找,DNS写网关即可-->apply,close,next-->时区上海-->填密码确认-->默认next-->写到磁盘
        -->选基础服务版next(7有705包)-->重启-->root登录密码-->ifconfig查看ip-->ping百度-->和宿主机互ping
        
        虚拟机上不了网:
                检查网卡:网关和NAT设置里面的网关必须设置成一样
                echo "nameserver 8.8.8.8" >>/etc/resolv.conf
            service network restart

关机克隆-->完整克隆,新名字-->新虚拟机网络适配器-->高级-->mac地址再生出一次-->确定
        -->开机新的,加载
        改主机名-->
            vi /etc/sysconfig/network 
            NETWORKING=yes
            HOSTNAME=<主机名> #每个节点改成相应主机名
            NETWORKING_IPV6=no 
            PEERNTP=no 
        虚拟网卡mac地址修改(删除一个文件,等其开机再重新生成)
            rm -f /etc/udev/rules.d/70-persistent-net.rules
            将网卡配置文件/etc/sysconfig/network-scripts/ifcfg-eth0的uuid和hwaddr这两行删除:
            再次重启网卡(不行的话reboot再重启网卡)
        改IP地址-->
            vi /etc/sysconfig/network-scripts/ifcfg-eth0
            DEVICE=eth0            //设备名称,不要修改
            BOOTPROTO=static       //不要修改
            BROADCAST=10.10.22.255 //广播地址,一般为本网段的最后一个IP
            IPADDR=10.10.22.9      //ip地址
            GATEWAY=10.10.22.1     //网关
            NETMASK=255.255.255.0  //子网掩码
            NETWORK=10.10.22.0     //网段地址
            ONBOOT=yes             //不要修改
            TYPE=Ethernet          //不要修改
            DNS1=202.96.128.166    #主DNS1地址
            DNS2=202.96.134.133    #备用DNS2地址

配置hosts  vim /etc/hosts(每台)
            10.21.22.8  node-1
            10.21.22.9  node-2
            10.21.22.10 node-3
            
免密登录(每台)
           ssh-keygen -t rsa         一路回车
           将生成的公钥添加到本地认证文件中        cat /root/.ssh/id_rsa.pub >> /root/.ssh/authorized_keys
           设置 authorized_keys 的访问权限        chmod 600 /root/.ssh/authorized_keys
           
远程连接工具连接虚拟机:  nat模式将适配器的vmnet8的'internet协议版本4'改成设置ip,同网段的不同ip,子网掩码:255.0.0.0

将每个节点上生成的 id_rsa.pub 复制到其他所有节点并添加到它们的认证文件中
        比如:node-1 上生成的 id_rsa.pub,复制到 node-2 和 node-3 上
        #node-1 上执行
        scp /root/.ssh/id_rsa.pub node-2:/root/
        #在 node-2 上执行
        cat ~/id_rsa.pub >> ~/.ssh/authorized_keys
        #node-1 上执行
        scp /root/.ssh/id_rsa.pub node-3:/root/
        #在node-3 上执行
        cat ~/id_rsa.pub >> ~/.ssh/authorized_keys

其余节点类似操作,验证是否配置免密登录成功,比如执行
        ssh root@node-2                应该不需要密码了
        
(-----------------------建议软件都安装在/opt/software下)        
搭建Zookeeper集群(leader+follower)
    JDK(每台卸载自带安装新的)
    卸载掉自带的openjdk
            查询 java 相关的包                 rpm -qa | grep -i jdk
            卸载掉自带的openjdk                rpm -qa | grep openjdk | xargs rpm -e --nodeps
    
    创建一个目录放软件  mkdir -p /export/server 
       将linux版本的jdk放入到server目录下ll查看  tar zxvf jdk-8u65-linux-x64.tar.gz
       删除安装包 rm -rf jdk-8u65-linux-x64.tar.gz
       
       配置jdk的环境变量
        vi /etc/profile              然后在最后一行
        export JAVA_HOME=/root/apps/jdk1.8.0_65      #这行要改/export/server/jdk1.8.0_65
        export PATH=$PATH:$JAVA_HOME/bin
        export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar        
        然后source /etc/profile     让其生效
    
    搭建Zookeeper集群
       同步时间(所有节点ntp服务)
            安装ntp            yum install -y ntp
            开机启动        chkconfig ntpd on
            检查时候启动    chkconfig --list ntpd             #其中 2-5 为 on 状态就代表成功
       主节点 ntpserver 配置   vi /etc/ntp.conf
            driftfile /var/lib/ntp/drift
            restrict default kod nomodify notrap nopeer noquery
            restrict -6 default kod nomodify notrap nopeer noquery
            restrict 127.0.0.1
            restrict -6 ::1
            server  127.127.1.0     # local clock
            fudge   127.127.1.0 stratum 10
            includefile /etc/ntp/crypto/pw
            keys /etc/ntp/keys
        启动服务service ntpd start
        查看状态 ntpstat
        从节点  配置   vi /etc/ntp.conf
            drtrict default kod nomodify notrap nopeer noquery
            restrict -6 default kod nomodify notrap nopeer noquery
            restrict 127.0.0.1
            restrict -6 ::1
            server node-1 prefer                        #主机名要改
            includefile /etc/ntp/crypto/pw
            keys /etc/ntp/keys
        请求服务器前,请先使用 ntpdate 手动同步一下时间
            ntpdate -u node-1 #主节点 ntp 服务器
            service ntpd start
            查看状态 ntpstat
            
        关闭防火墙(三个节点,永久)  chkconfig iptables off
            看状态 chkconfig iptables --list
            service iptables status(需要service iptables stop)
        
    安装zk(启动zkServer.sh start)
        /export/server中安放zk压缩包
        解压tar zxvf zookeeper-3.4.5.tar.gz  删除压缩包rm zookeeper-3.4.5.tar.gz
        mv zookeeper-3.4.5 zookeeper         重命名文件夹
        
        vi /etc/profile
        export ZOOKEEPER_HOME=/export/server/zookeeper
        export PATH=$PATH:$ZOOKEEPER_HOME/bin
        生效    source /etc/profile
        
        cd /export/server/zookeeper/conf
        cp zoo_sample.cfg zoo.cfg
        vi zoo.cfg
        添加内容:
        dataDir=/export/data/zkdata   ##zookeeper运行时的数据   这项是修改
        server.1=newnode-1:2888:3888     ## (心跳端口、选举端口)
        server.2=newnode-2:2888:3888
        server.3=newnode-3:2888:3888
        
        在/export/data/zkdata文件夹下新建myid文件,myid的文件内容为:
        cd zkdata
        echo 1 > myid
        
            其他节点(暂时没做)
            
            ##分发安装包到其他机器
            scp -r /export/server/zookeeper root@newnode-2:/export/server/zookeeper
            scp -r /export/server/zookeeper root@newnode-3:/export/server/zookeeper
            
            ##修改其他机器的配置文件
            修改myid文件
            到node-2上:修改myid为:2
            到node-3上:修改myid为:3
            
        ##启动(每台机器)
        /export/server/zookeeper/bin/zkServer.sh start
        在/etc/profile配置了zkhome后可以直接zkServer.sh start
        或者编写一个脚本/shell/onekey_zk.sh来批量启动所有机器:来批量启动所有机器:
        for host in "newnode-1 newnode-2 newnode-3"
        do
        ssh $host "source/etc/profile;/export/server/zookeeper/bin/zkServer.sh start"
        done
        
        查看日志  在哪个目录下启动的就在哪个目录下输入    cat zookeeper.out
            有个地址已在使用Address already in use的错,端口占用
            zoo.cfg,更换ZooKeeper的clientPort配置,例如,
            可以将其设置为2080:
        
        ##查看集群状态
        jps(查看进程)
        zkServer.sh status(查看集群状态,主从信息)
        单个启动sh /export/server/zookeeper/bin/zkServer.sh start
        
        如果启动不成功,可以观察zookeeper.out日志,查看错误信息进行排查
        
        
安装mysql(启动mysql   service mysql start)
        --查看系统之前是否已安装MySQL
        rpm -qa | grep mysql
        --有的话,卸载
        rpm -e mysql-libs-5.1.73-8.el6_8.x86_64 --nodeps
        --离线安装mysql rpm
        rpm -ivh MySQL-server-5.5.28-1.linux2.6.x86_64.rpm --nodeps --force
        rpm -ivh MySQL-client-5.5.28-1.linux2.6.x86_64.rpm 
        (-ivh :安装显示安装进度--install--verbose--hash)
        --启动mysql 
        service mysql start
        #查看运行状态
        service mysqld status  失败 MySQL is running but PID file could not be found
        ps aux | grep mysql 
        kill -9 3961
        service mysqld status     MySQL is not running, but lock file (/var/lock/subsys/mysql[失败]ts 
        rm /var/lock/subsys/mysql 
        再启动mysql   service mysql start        
        查看service mysqld status
        
    启动mysql控制台: 
      mysql
      mysql>USE mysql; 
      mysql>UPDATE user SET Password=PASSWORD('123456') WHERE user='root'; 
      mysql>FLUSH PRIVILEGES; 
            exit;
          允许远程登录 
      mysql -u root -p 
      Enter Password: <your new password> 
      mysql>GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY '123456' WITH GRANT OPTION; 
    完成后就能远程管理mysql了
    查看版本及端口号
         select version();
         show global variables like 'port';
    

    
安装kafka(启动cd /export/server/kafka/kafka/bin再sh kafka-server-start.sh /export/server/kafka/kafka/config/server.properties) 需要zk
        tar -zxvf kafka_2.11-1.0.0.tgz          重命名文件夹  mv kafka_2.11-1.0.0.tgz kafka
        删包rm kafka_2.11-1.0.0.tgz
    
    日志目录存放的地方 mkdir -p /export/logs/kafka .在每台机器上都创建好。
    在/export/logs/kafka
    rm -rf site-docs
    修改cat server.properties |grep -v '#'  (小v是反选)
    config/server.properties  #修改三个位置
        # broker代表我们kafka集群中的每个broker实例。这个是唯一的。
        broker.id=0
        num.network.threads=3
        num.io.threads=8
        socket.send.buffer.bytes=102400
        socket.receive.buffer.bytes=102400
        socket.request.max.bytes=104857600
        
        # 日志目录存放的地方 mkdir -p /export/logs/kafka .在每台机器上都创建好。
        log.dirs=/export/logs/kafka
        num.partitions=1
        num.recovery.threads.per.data.dir=1
        offsets.topic.replication.factor=1
        transaction.state.log.replication.factor=1
        transaction.state.log.min.isr=1
        log.retention.hours=168
        log.segment.bytes=1073741824
        log.retention.check.interval.ms=300000
        
        # 由于存放了很多元数据信息到zookeeper中,需要制定zookeeper地址
        zookeeper.connect=newnode-1:2080,newnode-2:2080,newnode-3:2080
        zookeeper.connection.timeout.ms=6000
        group.initial.rebalance.delay.ms=0
        
    其他节点(暂时缺少没做)
    
    启动kafka
    cd /export/server/kafka/kafka/bin
    sh kafka-server-start.sh /export/server/kafka/kafka/config/server.properties
    
    查看kafka状态(ZooInsepector工具)
    点start.bat
    
canal安装
开启mysql的binlog本例中采用的mysql版本为5.7。
    一般可以通过修改/etc/my.cnf来开启binlog,修改如下字段:
    log-bin = mysql-bin
    binlog-format = ROW
    server-id = 1
        ##binlog_format 必须设置为 ROW, 因为在 STATEMENT 或 MIXED 模式下, Binlog 只会记录和传输 SQL 语句(以减少日志大小),而不包含具体数据,我们也就无法保存了。
        #另外:若/etc/my.cnf不存在,可以进入 /usr/share/mysql将my-medium.cnf 移动到etc 并且改名为my.cnf
            cp my-medium.cnf /etc/my.cnf
            
        查看二进制日志是否打开:mysql> SHOW VARIABLES LIKE 'log_bin';
        查看binlog 文件的目录位置: mysql> SHOW VARIABLES LIKE 'datadir';

    
    mysql中创建canal数据库
    CREATE USER canal IDENTIFIED BY 'canal';    
    GRANT SELECT, REPLICATION SLAVE, REPLICATION CLIENT ON *.* TO 'canal'@'%';  
    --GRANT ALL PRIVILEGES ON *.* TO 'canal'@'%' ;  
    FLUSH PRIVILEGES;

    建/export/server/canal目录放安装包
    tar -zxvf canal.deployer-1.0.26-SNAPSHOT.tar.gz 出来四个目录
    
到conf目录下:
    vi canal.properties
        canal.id= 1
        canal.ip=192.168.21.8                                    #改
        canal.port= 11111
        canal.zkServers=192.168.213.8:2080                        #改
        # flush data to zk
        canal.zookeeper.flush.period = 1000
        # flush meta cursor/parse position to file
        canal.file.data.dir = ${canal.conf.dir}
        canal.file.flush.period = 1000
        ## memory store RingBuffer size, should be Math.pow(2,n)
        canal.instance.memory.buffer.size = 16384
        ## memory store RingBuffer used memory unit size , default 1kb
        canal.instance.memory.buffer.memunit = 1024 
        ## meory store gets mode used MEMSIZE or ITEMSIZE
        canal.instance.memory.batch.mode = MEMSIZE
        
        ## detecing config
        canal.instance.detecting.enable = false
        #canal.instance.detecting.sql = insert into retl.xdual values(1,now()) on duplicate key update x=now()
        canal.instance.detecting.sql = select 1
        canal.instance.detecting.interval.time = 3
        canal.instance.detecting.retry.threshold = 3
        canal.instance.detecting.heartbeatHaEnable = false
        
        # support maximum transaction size, more than the size of the transaction will be cut into multiple transactions delivery
        canal.instance.transaction.size =  1024
        # mysql fallback connected to new master should fallback times
        canal.instance.fallbackIntervalInSeconds = 60
        
        # network config
        canal.instance.network.receiveBufferSize = 16384
        canal.instance.network.sendBufferSize = 16384
        canal.instance.network.soTimeout = 30
        
        # binlog filter config
        canal.instance.filter.druid.ddl = true
        canal.instance.filter.query.dcl = true
        canal.instance.filter.query.dml = false                        #false是放行的操作,本系统暂时需要dml操作
        canal.instance.filter.query.ddl = true
        canal.instance.filter.table.error = false
        canal.instance.filter.rows = false
        
        # binlog format/image check
        canal.instance.binlog.format = ROW,STATEMENT,MIXED 
        canal.instance.binlog.image = FULL,MINIMAL,NOBLOB
        
        # binlog ddl isolation
        canal.instance.get.ddl.isolation = false
        
        #################################################
        #########               destinations            ############# 
        #################################################
        canal.destinations= mysql1,mysql2,mysql3                        #配置的实例名称,根据自己需检测的库来,名字自己指定
        # conf root dir
        canal.conf.dir = ../conf
        # auto scan instance dir add/remove and start/stop instance
        canal.auto.scan = true
        canal.auto.scan.interval = 5
        
        canal.instance.tsdb.spring.xml=classpath:spring/tsdb/h2-tsdb.xml
        #canal.instance.tsdb.spring.xml=classpath:spring/tsdb/mysql-tsdb.xml
        
        canal.instance.global.mode = spring 
        canal.instance.global.lazy = false
        #canal.instance.global.manager.address = 127.0.0.1:1099
        #canal.instance.global.spring.xml = classpath:spring/local-instance.xml
        #canal.instance.global.spring.xml = classpath:spring/memory-instance.xml
        canal.instance.global.spring.xml = classpath:spring/file-instance.xml            #若是单机版注释掉最后一行,若是高可用注释掉倒数第二行
        #canal.instance.global.spring.xml = classpath:spring/default-instance.xml
    
    复制实例,将example改为自己需要的名字。如oms1
        配置单个实例:
        vi conf/oms1/instance.properties
        
            ## mysql serverId  
            canal.instance.mysql.slaveId = 1234  
            
            # position info,需要改成自己的数据库信息  
            canal.instance.master.address = 127.0.0.1:3306   
            canal.instance.master.journal.name =                       #配置binlog的file 可以不用配置(默认是以当前启动)
            canal.instance.master.position =                           #配置binlog的postion 可以不用配置(默认是以当前启动)
            canal.instance.master.timestamp =   
            
            #canal.instance.standby.address =   
            #canal.instance.standby.journal.name =  
            #canal.instance.standby.position =   
            #canal.instance.standby.timestamp =   
            
            # username/password,还有检测的数据库名称需要改成自己的数据库信息  
            canal.instance.dbUsername = canal    
            canal.instance.dbPassword = canal  
            canal.instance.defaultDatabaseName = canal_test  
            canal.instance.connectionCharset = UTF-8  
            
            # table regex              过滤掉的表的名称
            canal.instance.filter.regex = .*\\..*  
            
    如果是配置高可用,则需要在另外一台服务器上配置相同的canal不过slaveid不能相同

    
    启动canal(bin下)
        启动:sh startup.sh
        startup.sh启动失败了,每次都在函数的地方失败,命令行处(esc,再冒号),输入set ff=unix,然后:wq写入
            jps 出现 CanalLauncher,   canal.log里面有the canal server is running now ......
            去实例的log查看日志出现 prepare to find start position just show master status  则成功
        停止:sh stop.sh
    
安装flume
    apache-flume-1.6.0-bin.tar.gz包放在/export/server下,解压tar zxvf apache-flume-1.6.0-bin.tar.gz,重命名mv apache-flume-1.6.0-bin flume
    
    配置/etc/profile加上
    export FLUME_HOME=/export/server/flume
    export PATH=$PATH:$FLUME_HOME/bin
    生效 source /etc/profile
    
    修改flume-env.sh配置文件
    cp flume-env.sh.template flume-env.sh
    配置上JAVA_HOME
    export JAVA_HOME=/export/server/jdk1.8.0_65

扫描二维码关注公众号,回复: 6180911 查看本文章

安装hadoop 2.7.4(前需JDK)
    将文件解压放在/opt/software下 重命名为hadoop文件夹
    1.修改hadoop/etc/hadoop目录下hadoop-env.sh,配置java jdk路径,大概在27行配置,如下:
        export JAVA_HOME=/export/server/jdk1.8.0_65
    
    2.修改core-site.xml,配置内容如下
        <configuration>
            <!-- 指定HDFS老大(namenode)的通信地址 -->
            <property>
                <name>fs.defaultFS</name>
                <value>hdfs://newnode-1:9000</value>                #修改这项namenode的主机名
            </property>
            <!-- 指定hadoop运行时产生文件的存储路径 -->
            <property>
                <name>hadoop.tmp.dir</name>
                <value>/opt/software/hadoop/tmp</value>            #修改到hadoop的tmp目录下
            </property>
        </configuration>
        
    3.修改hdfs-site.xml,修改配置如下
        <!-- 设置hdfs副本数量 -->
            <property>
                <name>dfs.replication</name>
                <value>2</value>
            </property>
            
        <!- secondary namenode所在主机的ip和端口 - >
        <!-为了减小Namenode内存的开销,应该将SecondaryNamenode放在不同机器上- >
            <property>
                <name>dfs.namenode.secondary.http-address</name>
                <value>newnode-2:50090</value>
            </property>
    
    4.mapred-site.xml 
        mv mapred-site.xml.template mapred-site.xml
        vim mapred-site.xml

        <!-- 指定mr运行时框架,这里指定在yarn上,默认是local -->
        <property>
            <name>mapreduce.framework.name</name>
            <value>yarn</value>
        </property>

    5.yarn-site.xml
        <!-- 指定YARN的老大(ResourceManager)的地址 -->
        <property>
            <name>yarn.resourcemanager.hostname</name>
            <value>newnode-1</value>
        </property>
            
        <!-- NodeManager上运行的附属服务。需配置成mapreduce_shuffle,才可运行MapReduce程序默认值:"" -->
        <property>
            <name>yarn.nodemanager.aux-services</name>
            <value>mapreduce_shuffle</value>
        </property>
        
    6.slaves文件,里面写上从节点所在的主机名字
        vi slaves
            newnode-1
            newnode-2
            newnode-3
            
将hadoop添加到环境变量
    vim /etc/proflie
        export HADOOP_HOME=/opt/software/hadoop
        export PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin

    source /etc/profile

将hadoop文件夹放到其他服务器上
    scp -r /opt/software/hadoop root@newnode-2:/opt/software/hadoop
    scp -r /opt/software/hadoop root@newnode-3:/opt/software/hadoop

格式化namenode(本质是对namenode进行初始化)
        hdfs namenode -format (hadoop namenode -format)

启动hadoop(如果配置了 etc/hadoop/slaves 和 ssh 免密登录,可一键启动)
        先启动HDFS
        sbin/start-dfs.sh
        再启动YARN
        sbin/start-yarn.sh

        
验证是否启动成功
        使用jps命令验证
        27408 NameNode
        28218 Jps
        27643 SecondaryNameNode   (secondarynamenode)
        28066 NodeManager
        27803 ResourceManager
        27512 DataNode

        http://192.168.1.101:50070 (HDFS管理界面)
        http://192.168.1.101:8088 (MR管理界面,yarn的端口)

Hive的安装(先装JDK和Hadoop,mysql)
    tar -zxvf hive-1.2.1.tar.gz     解压重命名文件夹为hive
    vim /etc/profile
        export HIVE_HOME=/opt/software/hive
        export PATH=$PATH:$HIVE_HOME/bin
        
    source /etc/profile
        输入hive --version 查看版本
        
    配置HIVE_HOME环境变量,cp hive-env.sh.template hive-env.sh
        vi conf/hive-env.sh 
        配置其中的$hadoop_home
            HADOOP_HOME=/opt/software/hadoop
        
    修改hive配置文件 /opt/software/hive/conf 路径下
    初次解压发现hive-site.xml配置文件并没有,此时需要我们自己创建并配置hive-site.xml
        <configuration>
              <property>
                    <!-- 元数据库的链接地址 mysql loacalhost改成newnode-1 hivedb第一次会自己帮你创建 -->
                    <name>javax.jdo.option.ConnectionURL</name>  
                    <value>jdbc:mysql://newnode-1:3306/hive?createDatabaseIfNotExist=true</value>
                    <description>JDBC connect string for a JDBC metastore</description>
                    <!-- 如果 mysql 和 hive 在同一个服务器节点,那么请更改 hadoop02 为 localhost -->
              </property>
              <property>
                      <!-- 指定mysql驱动 -->
                      <name>javax.jdo.option.ConnectionDriverName</name>
                      <value>com.mysql.jdbc.Driver</value>
                      <description>Driver class name for a JDBC metastore</description>
              </property>
              <property>
                      <!-- 指定mysql用户名 -->
                      <name>javax.jdo.option.ConnectionUserName</name>
                      <value>root</value>
                      <description>username to use against metastore database</description>
             </property>
             <property>
                      <!-- 指定mysql密码 请输入自己的MySQL连接密码 -->
                      <name>javax.jdo.option.ConnectionPassword</name>
                      <value>123456</value>
                      <description>password to use against metastore database</description>
                  </property>
            <poperty>
                    <!-- 指定hive数据仓库存在hdfs上的目录,默认配置可更改 -->
                    <name>hive.metastore.warehouse.dir</name>                    
                    <value>/opt/software/hive/warehouse</value>                    
                    <description>hive default warehouse, if nessecory, change it</description>
            </property> 
      </configuration>

         将MySQL的驱动添加到hive安装目录的lib下
         cp /export/server/mysql/mysql-connector-java-5.1.32.jar /opt/software/hive/lib
         
         如果出现没有权限的问题,在mysql授权(在安装mysql的机器上执行)
            mysql -u root -p
            #(执行下面的语句  *.*:所有库下的所有表   %:任何IP地址或主机都可以连接)
            GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'root' WITH GRANT OPTION;
            FLUSH PRIVILEGES;
            
        启动hive
        输入hive即可(刚开始启动不了,显示连接不上mysql,后来启动hadoop后start-dfs.sh,start-yarn.sh再启动hive即可)
        
        另其他问题:
            1.Jline包版本不一致的问题,需要拷贝hive的lib目录中jline.2.12.jar的jar包替换掉hadoop中的 
            /home/hadoop/app/hadoop-2.6.4/share/hadoop/yarn/lib/jline-0.9.94.jar
            2.rm -rf log4j-slf4j-impl-2.6.2.jar该包会导致日志系统冲突,予以删除即可,自动使用Hadoop下的jar包
        
        Hive几种使用方式:
        1.Hive交互shell      bin/hive
        2.Hive JDBC服务(参考java jdbc连接mysql)
        3.hive启动为一个服务器,来对外提供服务
            bin/hiveserver2(先在node-1这个  /export/server/hive)
            nohup bin/hiveserver2 1>/var/log/hiveserver.log 2>/var/log/hiveserver.err &
            启动成功后,可以在别的节点上用beeline去连接
            bin/beeline -u jdbc:hive2://mini1:10000 -n root
            或者(再node-3用的这个)
            bin/beeline
            ! connect jdbc:hive2://node-1:10000      用户名root 密码hadoop
            set hive.exec.mode.local.auto=true;      本地模式
        4.Hive命令 
            hive  -e  ‘sql’
            bin/hive -e 'select * from t_test'
            
Sqoop安装(需要JDK,Hadoop)
        解压tar --zxvf  sqoop-1.4.6.bin__hadoop-2.0.4-alpha.tar.gz
        重命名mv sqoop-1.4.6.bin__hadoop-2.0.4-alpha sqoop
        
        vim /etc/profile
        增加两行:
        export SQOOP_HOME=/opt/software/sqoop
        export PATH=$PATH:$SQOOP_HOME/bin
        
        source /etc/profile
        
        cd $SQOOP_HOME/conf
        mv sqoop-env-template.sh sqoop-env.sh
        vi sqoop-env.sh
            export HADOOP_COMMON_HOME=/opt/software/hadoop/
            export HADOOP_MAPRED_HOME=/opt/software/hadoop/
            export HIVE_HOME=/opt/software/hive
        加入 mysql 的 jdbc 驱动包
        cp /opt/software/hive/lib/mysql-connector-java-5.1.32.jar /opt/software/sqoop/lib/
        验证启动
        sqoop list-databases --connect jdbc:mysql://localhost:3306/ --\
        username root --password 123456
        本命令会列出所有 mysql 的数据库。
        到这里,整个 Sqoop 安装工作完成。
        
Hbase安装(需要Hadoop集群和Zookeeper以及JDK)
    解压文件,配置hbase集群,要修改3个文件
    注意:要把hadoop的hdfs-site.xml和core-site.xml 放到hbase/conf下
    cp /opt/software/hadoop/etc/hadoop/hdfs-site.xml /opt/software/hbase/conf
    cp /opt/software/hadoop/etc/hadoop/core-site.xml /opt/software/hbase/conf
    
    在hbase/conf路径下配置hbase-env.sh
    export JAVA_HOME=/export/server/jdk1.8.0_65
    export HBASE_CLASSPATH=/opt/software/hadoop/conf 
    #告诉hbase使用外部的zk
    export HBASE_MANAGES_ZK=false
    
    修改 hbase-site.xml
    <configuration>
        <!-- 指定hbase在HDFS上存储的路径,存在hdfs不存在本地了 -->
        <!-- hbase.rootdir 里面的 HDFS 地址是要跟 Hadoop 的 core-site.xml 里面的 fs.defaultFS 的 HDFS 的 IP 地址或者域名、端口必须一致-->
       <property>
            <name>hbase.rootdir</name>
            <value>hdfs://newnode-1:9000/hbase</value>
        </property>
        <property>
            <!-- 指定hbase为分布式的 -->
            <name>hbase.cluster.distributed</name>
            <value>true</value>
        </property>
        <property>
            <name>hbase.master.port</name>
            <value>16000</value>
        </property>
        <property>
            <name>hbase.zookeeper.property.dataDir</name>
            <value>/export/server/zookeeper/data/</value>
        </property>
        <property>
            <name>hbase.zookeeper.quorum</name>
            <value>newnode-1,newnode-2,newnode-3</value>
        </property>
        <property>
            <!-- 这里我前面设置了zk的port的2180 -->
            <name>hbase.zookeeper.property.clientPort</name>
            <value>2080</value>
        </property>
    </configuration>
    
    修改 regionservers
        newnode-1
        newnode-2
        newnode-3
        
    scp -r /opt/software/hbase/ newnode-2:/opt/software/
    scp -r /opt/software/hbase/ newnode-3:/opt/software/
    
    export HABSE_HOME=/opt/software/hbase
    export PATH=$PATH:$HABSE_HOME/bin
    
    sh start-hbase.sh 
    
    jps出现HMaster和HRegionServer,输入hbase进入控制台
    
    出错:stopping hbasecat: /tmp/hbase-root-master.pid: 没有那个文件或目录
    hbase-env.sh中修改pid文件的存放路径,配置项如下所示:
    export HBASE_PID_DIR=/opt/software/hadoop/pids
    
安装Spark(需要hadoop,这里的压缩包需要和hadoop的版本对应起来,另外需要scala环境)
    tar -zxvf scala-2.11.8.tgz  -C /opt/software
    vi /etc/profile   
    //配置环境,在末尾加入如下代码
    export SCALA_HOME=/opt/software/scala
    export PATH=$PATH:$SCALA_HOME/bin
    source /etc/profile  //设置生效
    验证
        scala -version
        
    同步到从节点
        scp -r /opt/software/scala/ newnode-2:/opt/software/
        scp -r /opt/software/scala/ newnode-3:/opt/software/
    每个节点配置环境变量,source
    
    tar -zxvf spark-2.0.2-bin-hadoop2.7.tgz -C /opt/software
    mv spark-2.0.2-bin-hadoop2.7 spark
    
    配环境变量
    export SPARK_HOME=/opt/software/spark
    export PATH=$PATH:$SPARK_HOME/bin:$SPARK_HOME/sbin
        
    spark配置
         (1)修改conf/slaves文件
                将slaves.template改名为slaves
                cd /opt/software/spark/conf          //配置文件所在目录
                mv slaves.template slaves       //修改为spark可识别文件
                并将slaves内localhost改为
                    newnode-2
                    newnode-3

        (2)修改spark-env.sh文件
                将spark-env.sh.template改名为spark-env.sh
                mv spark-env.sh.template spark-env.sh //改名
                并在文件末未添加如下代码
                export JAVA_HOME=/export/server/jdk1.8.0_65
                export SCALA_HOME=/opt/software/scala
                export HADOOP_HOME=/opt/software/hadoop
                export HADOOP_CONF_DIR=/opt/software/hadoop/etc/hadoop
                #192.168.213.8为spark集群master节点的IP地址
                export SPARK_MASTER_IP=192.168.213.8
                #spark里许多用到内存的地方默认1g 2g 这里最好设置大与1g
                export SPARK_WORKER_MEMORY=4g
                #每台机器总cores
                export SPARK_WORKER_CORES=2
                #每台机器运行的worker数目
                export SPARK_WORKER_INSTANCES=1
        
        (3)copy到从节点上
                使用scp命令copy主节点spark文件夹到从节点
                cd /opt/software
                scp -r spark newnode-2:/opt/software
                scp -r spark newnode-3:/opt/software
         注:若出现permission denied则给spark文件夹授权读写chmod 777 /opt/software/spark

         5.启动spark集群
                   启动hadoop集群
                           cd /opt/software/hadoop/sbin
                           sh start-all.sh
                    启动spark集群
                        cd /opt/software/spark/sbin
                        sh start-all.sh
            然后在三台服务器分别jps出现新开启的Master和Worker进程
            
            进入Spark的WebUI界面,可以通过
                192.168.213.8:8080

猜你喜欢

转载自blog.csdn.net/someInNeed/article/details/87929890