大数据学习软件的安装


1、准备工作

先说一下我的配置 :我是在virturbox上进行安装的、只用了3台centos7 mini版本的虚拟机进行搭建的。操作系统的光盘在网上下吧。

这是我hostname以及IP,我的每台虚拟机使用了2个网络、分别是NAT和host-only网络、NAT主要是和外网相连、要下载一些辅助软件、host-only网络主要是在hadoop集群之间进行通信使用!具体怎么设置网络、百度吧!这些都是基础技能、我也不想写!

当然了在安装操作系统是3台虚拟机的时区都选择上海、这也是为避免以后的不必要的麻烦

1     hadoop-master    192.168.56.101 
2    hadoop-node1     192.168.56.102
3    hadoop-node2     192.168.56.103

2、配置服务器 (以下3个动作需要在3个虚拟机上都要修改)

2.1

关闭防火墙:
    centos7://临时关闭
            service iptables stop
            //禁止开机启动
            chkconfig iptables off
    ubuntu16.04:
            //临时关闭
            sudo ufw disable

2.2 设置主机名称

查看现在的主机名称
$ hostname  abls234243 

永久修改主机名称
vim /etc/sysconfig/network
HOSTNAME=hadoop-master

# ip 与 hostname 绑定
vim /etc/hosts
192.168.56.101  hadoop-master

2.3 免密码登录

在每台虚拟机上创建hadoop用户:
useradd hadoop
设置密码:
passwd hadoop

切换到root用户
vi /etc/sudoers
在其中添加  hadoop    ALL=(ALL)     ALL
Hadoop用户就有了root权限 也就可以使用sudo命令了


切换到hadoop用户、在家目录下、以下操作都子家目录下进行
# 设置 ssh 免密码登录(在三个节点分别执行以下命令)
ssh-keygen -t rsa

# ~/.ssh/id_rsa.pub就是生成的公钥,把三个id_rsa.pub的内容合并,写入以下文件
cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys

# 3台虚拟机互相复制到其他节点
scp ~/.ssh/authorized_keys zkpk@hss01:~/.ssh/
scp ~/.ssh/authorized_keys zkpk@hss02:~/.ssh/

# CentOS7中还需要设置权限
chmod 700 ~/.ssh
chmod 600 ~/.ssh/authorized_keys

#修改/etc/hosts文件
vi  /etc/hosts
添加如下: 每台都要添加
    192.168.56.101    hadoop-master
    192.168.56.102    hadoop-node1
    192.168.56.103    hadoop-node2

# 每台都要安装ssh
sudo yum install openssh-server

# 3台虚拟机之间分别用ssh命令试一试能不能连接
ssh  hadoop-master
ssh  hadoop-node1
ssh  hadoop-node2

第一次可能需要填写密码、后面ssh连接就不会再要密码了
如果都能连接那都没问题了 服务器的配置完成! ok

#如果没连接成功 后面的就不要做了

3、Java环境安装

#  3台虚拟机都都要安装

    我的所有安装包都是放在家目录下的、好管理

    jdk版本:jdk-8u144-linux-x64.tar.gz 自行下载

    tar zxvf jdk-8u144-linux-x64.tar.gz

    cd  jdk1.8.0_144 

    ls

    配置jdk环境变量
    sudo vim /etc/profile

    在最后面添加
        export JAVA_HOME="/home/hadoop/jdk1.8.0_144"
        export PATH=$JAVA_HOME/bin:$PATH

    source /etc/profile

    测试是否成功
    输入java     javac等命令  如果什么都没有那就报错了
    以下的操作不要做了

4、zookeeper集群安装

1、
    我使用的版本是:zookeeper-3.4.10.tar.gz

    tar zxvf zookeeper-3.4.10.tar.gz

    cd zookeeper-3.4.10/conf

    cp zoo_sample.cfg zoo.cfg

2、
    vim zoo.cfg 
    添加如下: 
                dataDir=/home/hadoop/zookeeper-3.4.10/data
                dataLogDir=/home/hadoop/zookeeper-3.4.10/logs

                server.1=hadoop-master:2888:3888
                server.2=hadoop-node1:2888:3888
                server.3=hadoop-node2:2888:3888

3、
    zookeeper根目录执行, 也就是/home/hadoop/zookeeper-3.4.10下
    mkdir data
    mkdir logs

    # 在dataDir目录下创建myid文件写入1
    vim data/myid

4、 
    复制ZooKeeper到其他节点
        scp -r zookeeper-3.4.10  hadoop@hadoop-node1:~/
        scp -r zookeeper-3.4.10  hadoop@hadoop-node2:~/

        # 将hadoop-node1中的myid改为2,hadoop-node2中的myid改为3
        vim  ~/zookeeper-3.4.10/data/myid

5、
    配置环境变量、3台虚拟机都要执行
    sudo vim /etc/profile

    在最后面添加
        export ZOOKEEPER_HOME="/home/hadoop/zookeeper-3.4.10"
        export PATH=$ZOOKEEPER_HOME/bin:$PATH

    source /etc/profile

    测试
        zkServer.sh  zkCli.sh等命令就有了

6、 
    开启zookeeper集群:
        在每台虚拟机上执行命令:zkServer.sh start
        执行完了以后查看状态:zkServer.sh status

        显示为:
        ZooKeeper JMX enabled by default
        Using config: /home/hadoop/zookeeper-3.4.10/bin/../conf/zoo.cfg
        Mode: follower

        集群启动成功!

        也可以用jps命令查看

        也可以用zkClis.sh  默认连接本机的zk  他是zk集群的客户段

        出现这种提示:[zk: localhost:2181(CONNECTED) 0]
        也说明集群启动成功  

        输入zk命令   ls  /

        退出客户端用 quit

        如果失败或者报异常:
        查看日志在/home/hadoop/zookeeper-3.4.10/logs目录下

        失败了找百度吧! 你会发生什么问题我也不清楚

7、 
    关闭集群
        在每台虚拟机上执行 zkServer.sh stop
    如果没成功、后面的先不要做了

5、hadoop的HA集群安装

hadoop集群有2中模式:
    1:普通的集群模式
    2:基于zookeeper的HA高可靠性的模式

这里我直接使用第2中模式搭建Hadoop集群、至于第一种很简单、百度上有很多资料可以查看

1、
    上传tar包、我使用的是hadoop-2.7.5.tar.gz

    tar -xf hadoop-2.7.5.tar.gz

    cd hadoop-2.7.5

    # namenode信息存放目录
    mkdir name

    # datanode信息存放目录
    mkdir data

    cd etc/hadoop
    vim core-site.xml

    <configuration>
                <!-- 指定hdfs的nameservice为ns1 -->
                <property>
                    <name>fs.defaultFS</name>
                    <value>hdfs://ns1/</value>
                </property>

                <!-- 指定hadoop临时目录 -->
                <property>
                    <name>hadoop.tmp.dir</name>
                    <value>/home/hadoop/hadoop-2.7.5/tmp</value>
                </property>

                <!-- 指定zookeeper地址 -->
                <property>
                    <name>ha.zookeeper.quorum</name>
                    <value>hadoop-master:2181,hadoop-node1:2181,hadoop-node2:2181</value>
                </property>

        <property>
           <name>ipc.client.connect.max.retries</name>
            <value>30</value>
          </property>

        <property>
           <name>ipc.client.connect.retry.interval</name>
            <value>5000</value>
          </property>
       </configuration>
       注:不要忘了创建tmp目录 

       vim hdfs-site.xml

       <configuration>
        <property>
            <name>dfs.namenode.name.dir</name>
            <value>/home/hadoop/data/name</value>
        </property>

        <property>
            <name>dfs.datanode.data.dir</name>
            <value>/home/hadoop/data/data</value>
        </property>

        <property>
            <name>dfs.replication</name>
            <value>3</value>
        </property>

        <property>
            <name>dfs.secondary.http.address</name>
            <value>hadoop-node1:50090</value>
        </property>

        <!--指定hdfs的nameservice为ns1,需要和core-site.xml中的保持一致 -->
                <property>
                    <name>dfs.nameservices</name>
                    <value>ns1</value>
               </property>

               <!-- ns1下面有两个NameNode,分别是nn1,nn2 -->
                <property>
                    <name>dfs.ha.namenodes.ns1</name>
                    <value>nn1,nn2</value>
                </property>

        <!-- nn1的RPC通信地址 -->
                <property>
                    <name>dfs.namenode.rpc-address.ns1.nn1</name>
                    <value>hadoop-master:9000</value>
                </propert

                <!-- nn1的http通信地址 -->
                <property>
                    <name>dfs.namenode.http-address.ns1.nn1</name>
                    <value>hadoop-master:50070</value>
                </property>

                <!-- nn2的RPC通信地址 -->
                <property>
                    <name>dfs.namenode.rpc-address.ns1.nn2</name>
                    <value>hadoop-node1:9000</value>
                </property>

        <!-- nn2的http通信地址 -->
                <property>
                    <name>dfs.namenode.http-address.ns1.nn2</name>
                    <value>hadoop-node1:50070</value>
                </property>

                <property>
                    <name>dfs.namenode.shared.edits.dir</name>
                    <value>qjournal://hadoop-master:8485;hadoop-node1:8485;hadoop-node2:8485/ns1</value>
                </property>

                <property>
                <name>dfs.journalnode.edits.dir</name>
                <value>/home/hadoop/hadoop-2.7.5/journaldata</value>
        </property>

        <!-- 开启NameNode失败自动切换 -->
        <property>
            <name>dfs.ha.automatic-failover.enabled</name>
            <value>true</value>
        </property>

        <!-- 配置失败自动切换实现方式 -->
        <property>
            <name>dfs.client.failover.proxy.provider.ns1</name>    <value>org.apache.hadoop.hdfs.server.namenode.ha.ConfiguredFailoverProxyProvider</value>
        </property>

        <!-- 配置隔离机制方法,多个机制用换行分割,即每个机制暂用一行-->
        <property>
            <name>dfs.ha.fencing.methods</name>
            <value>
                sshfence
                shell(/bin/true)
            </value>
        </property>

        <!-- 使用sshfence隔离机制时需要ssh免登陆 -->
        <property>
            <name>dfs.ha.fencing.ssh.private-key-files</name>
            <value>/home/hadoop/.ssh/id_rsa</value>
        </property>

        <!-- 配置sshfence隔离机制超时时间 -->
        <property>
            <name>dfs.ha.fencing.ssh.connect-timeout</name>
            <value>30000</value>
        </property>


    vim  mapred-site.xml

    <configuration>
        <property>
            <name>mapreduce.framework.name</name>
            <value>yarn</value>
        </property>
    </configuration>

    vim yarn-site.xml

    <configuration>
        <property>
            <name>yarn.nodemanager.aux-services</name>
            <value>mapreduce_shuffle</value>
        </property>

        <!-- 开启RM高可用 -->
        <property>
            <name>yarn.resourcemanager.ha.enabled</name>
            <value>true</value>
        </property>

        <!-- 指定RM的cluster id   我这里随便叫一个  yrc-->
        <property>
            <name>yarn.resourcemanager.cluster-id</name>
            <value>yrc</value>
        </property>

        <!-- 指定RM的名字 -->
        <property>
            <name>yarn.resourcemanager.ha.rm-ids</name>
            <value>hadoop-node1,hadoop-master</value>
        </property>

        <!-- 分别指定RM的地址 -->
        <property>
            <name>yarn.resourcemanager.hostname.hadoop-node1</name>
            <value>hadoop-node1</value>
        </property>

        <property>
            <name>yarn.resourcemanager.hostname.hadoop-master</name>
            <value>hadoop-master</value>
        </property>

        <!-- 指定zk集群地址 -->
        <property>
            <name>yarn.resourcemanager.zk-address</name>
            <value>hadoop-master:2181,hadoop-node1:2181,hadoop-node2:2181</value>
        </property>

    </configuration>

    vi hadoop-env.sh

    修改export JAVA_HOME=/home/hadoop/jdk1.8.0_144

    vim slaves

    添加:
            hadoop-master
            hadoop-node1
            hadoop-node2


    复制到其他节点:
        scp -r ~/hadoop-2.7.5 hadoop@hadoop-node1:~/
        scp -r ~/hadoop-2.7.5 hadoop@hadoop-node2:~/

    同样在每台机器上设置hadoop的环境变量:
    sudo vi /etc/profile

    添加:
        export HADOOP_HOME="/home/hadoop/hadoop-2.7.5"
        export PATH=$HADOOP_HOME/bin:$PATH
        export PATH=$HADOOP_HOME/sbin:$PATH

    source /etc/profile

    在命令行确认是否配置成功:  输入start-hdfs.sh  看是否有这个命令  这个时候不要回车执行


    ***** 启动集群 严格按照下面的步骤
    在家目录下执行命令
    1、启动zookeeper集群, 分别在3台机器上执行
        zkServer.sh start
        # 查看状态:一个leader,两个follower
        zkServer.sh status

    2、同样在3台机器上执行:
        hadoop-daemon.sh start journalnode

    3、以下命令只在hadoop-master机器上执行
        hdfs namenode -format

    4、执行复制命令
        scp -r hadoop-2.7.5/tmp/ hadoop@hadoop-node1:/home/hadoop/hadoop-2.7.5
        scp -r hadoop-2.7.5/tmp/ hadoop@hadoop-node2:/home/hadoop/hadoop-2.7.5

    5、hdfs zkfc -formatZK 

    6、start-dfs.sh

    7、start-yarn.sh

    验证是否成功:
        # 通过以下IP用浏览器访问,一个处于active,一个处于standby,说明集群启动成功。
            http://192.168.56.101:50070
            NameNode 'hadoop-master:9000' (active)

            http://192.168.56.101:50070
            NameNode 'hadoop-node1:9000' (standby)

        # 验证HDFS HA(向hdfs上传一个文件)
            hadoop fs -put /etc/profile /profile
            hadoop fs -ls /

        #kill掉active的NameNode
            kill -9 <pid of NN>
            访问:http://192.168.56.101:50070 无法打开

            访问:http://192.168.56.102:50070
            NameNode 'hadoop-node1:9000' (active)

            执行: hadoop fs -ls /    也可以看到有profile文件

        #手动启动挂掉的那个NameNode,在hadoop-master上执行
            hadoop-daemon.sh start namenode
            访问:http://192.168.56.101:50070
            显示:NameNode 'hadoop-master:9000' (standby)

        # 验证Yarn HA
            http://192.168.56.101:8088/
            正常显示内容。

        至此hadoop的ha集群模式搭建完毕!

        在hadoop-master上执行jps命令:  会有如下进程
            1841 DFSZKFailoverController
            1222 QuorumPeerMain
            2008 ResourceManager
            1497 DataNode
            1387 NameNode
            2124 NodeManager
            8429 Jps
            1695 JournalNode

        在hadoop-node1上执行jps命令:
            3905 Jps
            1763 DataNode
            2117 NodeManager
            1882 JournalNode
            1533 QuorumPeerMain
            1982 DFSZKFailoverController

        在hadoop-node2上执行jps命令:
            1376 JournalNode
            1220 QuorumPeerMain
            1476 NodeManager
            4648 Jps
            1278 DataNode

        如果在启动的过程中,出现问题,可以查看日志文件:
        /home/hadoop/hadoop-2.7.5/logs  有些复杂! 

        集群的启动和关闭:
            # 启动
                zkServer.sh start  此命令在每台机器上都要执行,下面2个在hadoop-master机器上执行
                start-dfs.sh
                start-yarn.sh

            # 关闭
                stop-yarn.sh
                stop-dfs.sh
                zkServer.sh stop  此命令在每台机器上都要执行

6、HIVE安装

    hive只安装在hadoop-master节点上就可以了

    1、 先安装MySQL5.7
    sudo yum remove mysql
    wget http://repo.mysql.com/mysql-community-release-el7-5.noarch.rpm
    sudo rpm -ivh mysql-community-release-el7-5.noarch.rpm
    sudo yum install mysql-server
    sudo chown -R hadoop:hadoop /var/lib/mysql

    mysql -u root
    第一次不用密码
    use mysql;
    开启远程访问权限:grant all privileges  on *.* to root@'%' identified by "root";
    FLUSH PRIVILEGES ;

    create database hivedb;
    exit;

    上传hive的tar包:
    tar -xf apache-hive-1.2.2-bin.tar.gz

    cd    hive-1.2.2/conf

    mv hive-env.sh.template hive-env.sh
    vim hive-env.sh
    添加下面3条数据:
        export HADOOP_HOME=/home/hadoop/hadoop-2.7.5
        export HIVE_CONF_DIR=home/hadoop/hive-1.2.2/conf
        export JAVA_HOME=/home/hadoop/jdk1.8.0_144

    mv hive-log4j.properties.template hive-log4j.properties
    vim  hive-log4j.properties
    hive.log.dir=/home/zkpk/hive-1.2.2/logs

    # 创建日志目录
    mkdir /home/zkpk/hive-1.2.2/logs


    vim hive-site.xml
    删除所有内容,添加如下内容:
    <configuration>
      <property>
        <name>hive.metastore.warehouse.dir</name>
        <value>hdfs://ns1/hive/warehouse</value>
      </property>

      <property>
        <name>hive.exec.scratchdir</name>
        <value>hdfs://ns1/hive/scratchdir</value>
      </property>

      <property>
        <name>hive.querylog.location</name>
        <value>/home/hadoop/hive-1.2.2/logs</value>
      </property>

      <property>
        <name>javax.jdo.option.ConnectionURL</name>
        <value>jdbc:mysql://192.168.56.101:3306/hivedb?createDatabaseIfNotExist=true</value>
      </property>

      <property>
        <name>javax.jdo.option.ConnectionDriverName</name>
        <value>com.mysql.jdbc.Driver</value>
      </property>

    <property>
        <name>javax.jdo.option.ConnectionUserName</name>
        <value>root</value>
      </property>

      <property>
        <name>javax.jdo.option.ConnectionPassword</name>
        <value>root</value>
      </property>
    </configuration>


    设置环境变量:
    vim /etc/profile

    export HIVE_HOME=/home/hadoop/hive-1.2.2
    export PATH=$PATH:$HIVE_HOME/bin

    source /etc/profile

    在hive-1.2.2/lib下有个jline的jar,将hadoop原来的那个jar包换成一致的,否则会启动hive会报错。
    cp hive-1.2.1/lib/jline-2.12.jar   /home/hadoop/hadoop-2.7.5/share/hadoop/yarn/lib

将mysql-connector-java-5.1.46.jar连接jar拷贝到hive-1.2.1/lib目录下
    cp mysql-connector-java-5.1.46.jar  ~/hive-1.2.2/lib/

    # 运行下面命令
    启动HIVE命令:hive

    http://192.168.56.101:50070,查看是否多了hive目录。

    退出hive的客户端接口:  quit

7、flume安装

flume这个可以设置环境变量也可以不设置看自己! 我没设置flume的环境变量

tar zxvf apache-flume-1.8.0-bin.tar.gz

cd apache-flume-1.8.0-bin/conf/

cp flume-env.sh.template flume-env.sh

vi flume-env.sh
添加:
    JAVA_HOME=/home/hadoop/jdk1.8.0_144

在conf目录下:
vi   netcat-logger.conf

# 定义这个agent中各组件的名字
a1.sources = r1
a1.sinks = k1
a1.channels = c1

# 描述和配置source组件:r1
a1.sources.r1.type = netcat
a1.sources.r1.bind = localhost
a1.sources.r1.port = 44444

# 描述和配置sink组件:k1
a1.sinks.k1.type = logger

# 描述和配置channel组件,此处使用是内存缓存的方式
a1.channels.c1.type = memory
a1.channels.c1.capacity = 1000
a1.channels.c1.transactionCapacity = 100

# 描述和配置source  channel   sink之间的连接关系
a1.sources.r1.channels = c1
a1.sinks.k1.channel = c1

2、启动agent去采集数据
bin/flume-ng agent -c conf -f conf/netcat-logger.conf -n a1  -Dflume.root.logger=INFO,console

按ctrl+c停止

-c conf   指定flume自身的配置文件所在目录
-f conf/netcat-logger.con  指定我们所描述的采集方案
-n a1  指定我们这个agent的名字

3、测试
先要往agent采集监听的端口上发送数据,让agent有数据可采
随便在一个能跟agent节点联网的机器上
yum install telnet

telnet anget-hostname  port   (telnet localhost 44444)
发送数据 flume能接受到   安装成功!

8.azkaban安装

上传tar包到家目录
    Azkaban Web服务器
    azkaban-web-server-2.5.0.tar.gz

    Azkaban执行服务器 
    azkaban-executor-server-2.5.0.tar.gz

    azkaban-sql-script-2.5.0.tar.gz

    中共3个tar包
    将安装文件上传到集群,最好上传到安装 hive、sqoop的机器上,方便命令的执行

    mkdir azkaban-2.5.0

    tar zxvf azkaban-web-server-2.5.0.tar.gz -C azkaban-2.5.0/server
    tar zxvf azkaban-executor-server-2.5.0.tar.gz -C azkaban-2.5.0/executor
    tar zxvf azkaban-sql-script-2.5.0.tar.gz -C azkaban-2.5.0/

    azkaban脚本导入:
    mysql -uroot -p
    root

     create database azkaban;
     use azkaban;
     source /home/hadoop/azkaban-2.5.0/azkaban-2.5.0//create-all-sql-2.5.0.sql;



     创建SSL配置:
     cd  ~
     命令: keytool -keystore keystore -alias jetty -genkey -keyalg RSA
运行此命令后,会提示输入当前生成 keystor的密码及相应信息,输入的密码请劳记,信息如下:
    输入keystore密码: 
    再次输入新密码:
    您的名字与姓氏是什么?
      [Unknown]: 
    您的组织单位名称是什么?
      [Unknown]: 
    您的组织名称是什么?
      [Unknown]: 
    您所在的城市或区域名称是什么?
      [Unknown]: 
    您所在的州或省份名称是什么?
      [Unknown]: 
    该单位的两字母国家代码是什么
      [Unknown]:  CN
    CN=Unknown, OU=Unknown, O=Unknown, L=Unknown, ST=Unknown, C=CN 正确吗?
      [否]:  y

    输入<jetty>的主密码
        (如果和 keystore 密码相同,按回车): 
    再次输入新密码:
    完成上述工作后,将在当前目录生成 keystore 证书文件,将keystore 考贝到 azkaban web服务器根目录中 
    cp  keystore azkaban-2.5.0/server

    配置文件:
    如果服务器默认的是Asia/Shanghai时区, 此项可以不配
    注:先配置好服务器节点上的时区
    1、先生成时区配置文件Asia/Shanghai,用交互式命令 tzselect 即可
    2、拷贝该时区文件,覆盖系统本地时区配置
    cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime 

    cd azkaban-2.5.0/server/conf

    vi azkaban.properties
    内容说明如下:   ***可以修改
        #Azkaban Personalization Settings
        azkaban.name=Test                           #服务器UI名称,用于服务器上方显示的名字
        azkaban.label=My Local Azkaban                               #描述
        azkaban.color=#FF3601                                                 #UI颜色
        azkaban.default.servlet.path=/index                         #
        web.resource.dir=/home/hadoop/azkaban-2.5.0/server/web/                                                #默认根web目录
        default.timezone.id=Asia/Shanghai                           #默认时区,已改为亚洲/上海 默认为美国    ***

        #Azkaban UserManager class
        user.manager.class=azkaban.user.XmlUserManager
        user.manager.xml.file=/home/hadoop/azkaban-2.5.0/server/conf/azkaban-users.xml  ***

        #Loader for projects
        executor.global.properties=/home/hadoop/azkaban-2.5.0/server/cconf/global.properties
        azkaban.project.dir=projects

        database.type=mysql
        mysql.port=3306
        mysql.host=localhost
        mysql.database=azkaban
        mysql.user=root
        mysql.password=root
        mysql.numconnections=100

        # Velocity dev mode
        velocity.dev.mode=false

        # Azkaban Jetty server properties.
        jetty.maxThreads=25
        jetty.ssl.port=8443
        jetty.port=8081
        jetty.keystore=/home/hadoop/azkaban-2.5.0/keystore
        jetty.password=123456
        jetty.keypassword=123456
        jetty.truststore=/home/hadoop/azkaban-2.5.0/keystore
        jetty.trustpassword=123456

        # Azkaban Executor settings
        executor.port=12321

        # mail settings
        mail.sender=
        mail.host=
        job.failure.email=
        job.success.email=

        lockdown.create.projects=false

        cache.directory=cache

    vi azkaban-users.xml 

    <azkaban-users>
        <user username="azkaban" password="azkaban" roles="admin" groups="azkaban" />
        <user username="metrics" password="metrics" roles="metrics"/>
        <user username="admin" password="admin" roles="admin,metrics" />
        <role name="admin" permissions="ADMIN" />
        <role name="metrics" permissions="METRICS"/>
</azkaban-users>

    cd ../../executor/conf/

    vi azkaban.properties
    #Azkaban
        default.timezone.id=Asia/Shanghai

        # Azkaban JobTypes Plugins
        azkaban.jobtype.plugin.dir=/home/hadoop/azkaban-2.5.0/executor/plugins/jobtypes

        #Loader for projects
        executor.global.properties=/home/hadoop/azkaban-2.5.0/executor/conf/global.properties
        azkaban.project.dir=projects

        database.type=mysql
        mysql.port=3306
        mysql.host=localhost
        mysql.database=azkaban
        mysql.user=root
        mysql.password=root
        mysql.numconnections=100

        # Azkaban Executor settings
        executor.maxThreads=50
        executor.port=12321
        executor.flow.threads=30

    启动:
        web服务器:
            在azkaban web服务器目录下执行启动命令
            bin/azkaban-web-start.sh

            启动到后台
            nohup  bin/azkaban-web-start.sh  1>/tmp/azstd.out  2>/tmp/azerr.out &

        执行服务器:
            在执行服务器目录下执行启动命令
            bin/azkaban-executor-start.sh

        启动完成后,在浏览器(建议使用谷歌浏览器)中输入https://服务器IP地址:8443 ,即可访问azkaban服务了.在登录中输入刚才新的户用名及密码,点击 login

    停止:
        bin/azkaban-web-stop.sh
        bin/azkaban-executor-stop.sh    

9、sqoop安装

只需要在hadoop-master安装就可以了

tar zxvf sqoop-1.4.7.bin__hadoop-2.6.0.tar.gz

cp mysql-connector-java-5.1.29.jar  sqoop-1.4.7.bin__hadoop-2.6.0/lib/

cd   /home/hadoop/sqoop-1.4.7.bin__hadoop-2.6.0/conf

mv sqoop-env-template.sh sqoop-env.sh

vim sqoop-env.sh

修改如下:
export HADOOP_COMMON_HOME=/home/hadoop/hadoop-2.7.5/
export HADOOP_MAPRED_HOME=/home/hadoop/hadoop-2.7.5/
export HIVE_HOME=/home/hadoop/hive-1.2.2/
hbase这个可以现在用修改   现在还没安装hbase
export HBASE_HOME=/home/hadoop/hbase-1.2.2


修改环境变量:
vim  /etc/profile

# 增加
export SQOOP_HOME=/home/hadoop/sqoop-1.4.7.bin__hadoop-2.6.0
export PATH=$PATH:$SQOOP_HOME/bin

source /etc/profile

验证启动:
cd $SQOOP_HOME/bin
$ sqoop    version
15/12/17 14:52:32 INFO sqoop.Sqoop: Running Sqoop version: 1.4.6
Sqoop 1.4.6 git commit id 5b34accaca7de251fc91161733f906af2eddbe83
Compiled by abe on Fri Aug 1 11:19:26 PDT 2015
到这里,整个Sqoop安装工作完成。

10、hbase集群安装

tar  zxvf hbase-1.2.6-bin.tar.gz

进行配置:
    cd hbase-1.2.6/lib

    cp ~/hadoop-2.7.5/share/hadoop/mapreduce/lib/hadoop-annotations-2.7.5.jar .
    cp ~/hadoop-2.7.5/share/hadoop/tools/lib/hadoop-auth-2.7.5.jar .
    cp ~/hadoop-2.7.5/share/hadoop/common/hadoop-common-2.7.5.jar .
    cp ~/hadoop-2.7.5/share/hadoop/hdfs/hadoop-hdfs-2.7.5.jar .
    cp ~/hadoop-2.7.5/share/hadoop/mapreduce/hadoop-mapreduce-client-app-2.7.5.jar .
     cp ~/hadoop-2.7.5/share/hadoop/mapreduce/hadoop-mapreduce-client-common-2.7.5.jar .
    cp ~/hadoop-2.7.5/share/hadoop/mapreduce/hadoop-mapreduce-client-core-2.7.5.jar .
     cp ~/hadoop-2.7.5/share/hadoop/mapreduce/hadoop-mapreduce-client-jobclient-2.7.5 .
      cp ~/hadoop-2.7.5/share/hadoop/mapreduce/hadoop-mapreduce-client-jobclient-2.7.5.jar .
     cp ~/hadoop-2.7.5/share/hadoop/mapreduce/hadoop-mapreduce-client-shuffle-2.7.5.jar .
     cp ~/hadoop-2.7.5/share/hadoop/yarn/hadoop-yarn-api-2.7.5.jar .
     cp ~/hadoop-2.7.5/share/hadoop/yarn/hadoop-yarn-client-2.7.5.jar .
      cp ~/hadoop-2.7.5/share/hadoop/yarn/hadoop-yarn-common-2.7.5.jar .
     cp ~/hadoop-2.7.5/share/hadoop/yarn/hadoop-yarn-server-common-2.7.5.jar .
     # 解决java.lang.NoClassDefFoundError: org/htrace/Trace
    cp ~/hadoop-2.7.5/share/hadoop/common/lib/htrace-core-3.1.0-incubating.jar 

    # 删除老版的jar
    rm *-2.5.1.jar


    vim hbase-env.sh

    export JAVA_HOME=/home/hadoop/jdk1.8.0_144
    export HBASE_MANAGES_ZK=false
    export HBASE_CLASSPATH=/home/hadoop/hadoop-2.7.5/etc/hadoop

    # 注释掉下面的配置(因为1.8JDK没有这个选项)
    #export HBASE_MASTER_OPTS="$HBASE_MASTER_OPTS -XX:PermSize=128m -XX:MaxPermSize=128m"
    #export HBASE_REGIONSERVER_OPTS="$HBASE_REGIONSERVER_OPTS -XX:PermSize=128m -XX:MaxPermSize=128m"

    vim  hbase-site.xml

    <configuration>
          <property>
            <name>hbase.cluster.distributed</name>
            <value>true</value>
          </property>

          <property>
            <name>hbase.tmp.dir</name>
            <value>/home/hadoop/hbase-1.2.6/tmp</value>
          </property>

          <property>
            <name>hbase.rootdir</name>
            <value>hdfs://ns1/hbase</value>
          </property>

          <property>
            <name>zookeeper.session.timeout</name>
            <value>120000</value>
          </property>

          <property>
            <name>hbase.zookeeper.property.tickTime</name>
            <value>6000</value>
          </property>

          <property>
            <name>hbase.zookeeper.property.clientPort</name>
            <value>2181</value>
          </property>

          <property>
            <name>hbase.zookeeper.quorum</name>
            <value>hadoop-master,hadoop-node1,hadoop-node2</value>
          </property>

          <property>
            <name>hbase.zookeeper.property.dataDir</name> 
            <value>/home/hadoop/zookeeper-3.4.10/data</value>
          </property>

          <property>
            <name>dfs.replication</name>
            <value>1</value>
          </property>

          <property> 
            <name>hbase.master.maxclockskew</name> 
            <value>180000</value>
          </property> 
        </configuration>

    vim  regionservers
    添加: hadoop-node1  hadoop-node2

    拷贝hbase到其他节点:
    cd hbase-1.2.6/conf
    cp ~/hadoop-2.7.5/etc/hadoop/hdfs-site.xml  .
    cp ~/hadoop-2.7.5/etc/hadoop/core-site.xml   .

    scp -r /home/hadoop/hbase-1.2.6  hadoop-node1:~/
    scp -r /home/hadoop/hbase-1.2.6  hadoop-node2:~/

    在其他节点source  /etc/profile

    配置环境变量:
    sudo vim /etc/profile

    export HBASE_HOME=/home/hadoop/hbase-1.2.6
    export PATH=$PATH:$HBASE_HOME/bin

    source /etc/profile
    在其余2台机器上都要执行

    启动验证:
        在启动之前需要讲zookeeper集群和Hadoop集群启动起来

        # 启动  只需要在hadoop-master上就可以了
        start-hbase.sh

        使用命令查看:jps   有HMaster进程

        # 通过浏览器访问hbase HMaster Web页面
        http://hadoop-master:16010

        # HRegionServer Web页面
        http://hadoop-node1:16030   有HRegionServer进程
        http://hadoop-node2:16030

        # shell验证
        hbase shell
        # list验证
        list
        # 建表验证
        create 'user','name','sex' 

        停止:
        stop-hbase.sh

11、storm集群安装

前提条件:ZooKeeper、JDK、Python2.6.6(安装操作系统时已安装)
tar zxvf  apache-storm-1.2.1.tar.gz

cd apache-storm-1.2.1
mkdir data

配置环境变量:
vim  /etc/profile

export STORM_HOME=/home/hadoop/apache-storm-1.2.1
export PATH=$PATH:$STORM_HOME/bin

source /etc/profile

cd  conf

vim  sotrm.yaml  添加:

    storm.zookeeper.servers:
        - "hadoop-node1"
        - "hadoop-node2"

    nimbus.host: "hadoop-master"

    storm.local.dir: "/home/hadoop/apache-storm-1.2.1/data"


复制Storm到其他节点:
scp -r apache-storm-1.2.1 hadoop@hadoop-node1:/home/hadoop
scp -r apache-storm-1.2.1 hadoop@hadoop-node2:/home/hadoop

在其他节点上也进行环境变量的配置

启动:
    # hadoop-master节点
    storm nimbus > /dev/null 2>&1 &
    storm ui > /dev/null 2>&1 &

    # hadoop-node1   和  node2  节点
    storm supervisor > /dev/null 2>&1 &

验证:
    # 参看storm ui
    http://hadoop-master:8080/index.html

关闭:
    [zkpk@hsm01 ~]$ jps
    5505 nimbus
    5635 Jps
    2710 QuorumPeerMain
    [zkpk@hsm01 ~]$ kill 5505

    # 关闭nimbus相关进程: 
    kill `ps aux | egrep '(daemon\.nimbus)|(storm\.ui\.core)' |fgrep -v egrep | awk '{print $2}'` 

    # 干掉supervisor上的所有storm进程: 
    kill `ps aux | fgrep storm | fgrep -v 'fgrep' | awk '{print$2}'`

添加启动关闭脚本:在storm目录下

vim conf/slaves

hadoop-node1
hadoop-node2

start-storm.sh

    #!/usr/bin/env bash

    # Start all storm daemons
    # Run this on master node
    # Starts a worker on each node specified in conf/slaves

    if [ -z "${STORM_HOME}" ]; then
      export STORM_HOME="$(cd "`dirname "$0"`"/..; pwd)"
    fi

    SLAVE_FILE=${STORM_HOME}/conf/slaves

    SLAVE_NAMES=$(cat "$SLAVE_FILE" | sed  's/#.*$//;/^$/d')

    "${STORM_HOME}/bin"/storm nimbus > /dev/null 2>&1 &
    echo start nimbus [ done ]
    sleep 1

    "${STORM_HOME}/bin"/storm ui > /dev/null 2>&1 &
    echo start ui [ done ]
    sleep 1

    for slave in $SLAVE_NAMES ; 
    do
    ssh -T $slave <<EOF
        source ~/.bash_profile
        cd \$STORM_HOME
        python bin/storm supervisor >/dev/null 2>&1 &
    EOF
    echo start $slave supervisor [ done ]
    sleep 1
    done

    echo start storm [ done ]

stop-storm.sh

    #!/usr/bin/env bash

    # Stop all storm daemons
    # Run this on master node
    # Stops a worker on each node specified in conf/slaves

    if [ -z "${STORM_HOME}" ]; then
      export STORM_HOME="$(cd "`dirname "$0"`"/..; pwd)"
    fi

    kill `ps aux | egrep '(daemon\.nimbus)|(storm\.ui\.core)' |fgrep -v egrep | awk '{print $2}'` 

    echo stop nimbus [ done ]
    sleep 1

    SLAVE_FILE=${STORM_HOME}/conf/slaves

    SLAVE_NAMES=$(cat "$SLAVE_FILE" | sed  's/#.*$//;/^$/d')

    for slave in $SLAVE_NAMES ;
    do
    ssh $slave '/bin/kill `ps -ef | grep storm | grep -v grep | awk '\'{print \$2}\''`'
    echo stop $slave supervisor [ done ]
    sleep 1
    done

    echo stop storm [ done ]

就可以在家目录下 启动和关闭

12、kafaka集群安装

tar -xf  kafka_2.11-1.1.0.tgz

cd  kafka_2.11-1.1.0/config

修改配置文件
vim server.properties

    broker.id=0
    listeners=PLAINTEXT://192.168.56.101:9092
    num.network.threads=3
    num.io.threads=8
    socket.send.buffer.bytes=102400
    socket.receive.buffer.bytes=102400
    socket.request.max.bytes=104857600
zookeeper.connect=192.168.56.101:2181,192.168.56.102:2181,192.168.56.103:2181
    zookeeper.connection.timeout.ms=6000

复制文件到各个节点上:
scp  -r kafka_2.11-1.1.0 hadoop@hadoop-node1:/home/hadoop
scp  -r kafka_2.11-1.1.0 hadoop@hadoop-node2:/home/hadoop

在各个节点上配置环境变量

vim /etc/profile

export KAFKA_HOME=/home/hadoop/kafka_2.11-1.1.0
export PATH=$PATH:$KAFKA_HOME/bin

source /etc/profile

在hadoop-node1 上修改
    broker.id=1
    listeners=PLAINTEXT://192.168.56.102:9092

在hadoop-node2上修改
    broker.id=2
    listeners=PLAINTEXT://192.168.56.103:9092

启动:
    依次在各节点上启动kafka
    bin/kafka-server-start.sh  config/server.properties

停止:
    依次在各节点上停止kafka
    bin/kafka-server-stop.sh 

13、scala安装

tar zxf   scala-2.12.5.tgz

配置环境变量
vim /etc/profile

export SCALA_HOME=/home/hadoop/scala-2.12.5
export PATH=$PATH:$SCALA_HOME/bin

source vim /etc/profile

复制到其他节点上:
scp -r scala-2.12.5 hadoop@hadoop-node1:/home/hadoop
scp -r scala-2.12.5 hadoop@hadoop-node2:/home/hadoop

同样进行环境变量的配置 

输入命令:   scala -version

安装完成

14、spark集群安装

tar -xf  spark-2.3.0-bin-hadoop2.7.tgz

cd spark-2.3.0-bin-hadoop2.7/conf

进行配置:
    vim spark-env.sh   添加:

    export JAVA_HOME=/home/hadoop/jdk1.8.0_144
    export SCALA_HOME=/home/hadoop/scala-2.12.5
    export SPARK_MASTER_IP=hadoop-master
    export SPARK_WORKER_MEMORY=300m
    export HADOOP_CONF_DIR=/home/hadoop/hadoop-2.7.5/etc/hadoop
    export HADOOP_OPTS="-Djava.library.path=$HADOOP_HOME/lib:$HADOOP_HOME/lib/native"

    cp slaves.template slaves
    vim  slaves

    hadoop-master
    hadoop-node1
    hadoop-node2

复制到其他节点:
scp -r spark-2.3.0-bin-hadoop2.7 hadoop@hadoop-node1:/home/hadoop
scp -r spark-2.3.0-bin-hadoop2.7 hadoop@hadoop-node2:/home/hadoop

在每台机器上进行环境变量的配置:
vim /etc/profile

export SPARK_HOME=/home/hadoop/spark-2.3.0-bin-hadoop2.7
export PATH=$PATH:$SPARK_HOME/bin

source etc/profile

启动验证:
    # 启动(由于和hadoop的启动shell名字一样,需要注意)
    $SPARK_HOME/sbin/start-all.sh

    # 查看集群状态
    http://hadoop-master:8080/

    # 命令行交互验证
    ./bin/spark-shell

停止:
    $SPARK_HOME/sbin/stop-all.sh

需要注意:  storm和spark都要需要比较大的内存  所以虚拟机分配内存可以大点

15、redis集群搭建

集群中应该至少有三个节点,每个节点有一备份节点。需要6台服务器。
搭建伪分布式,需要6个redis实例。
搭建集群的步骤:

第一步:创建6个redis实例指定端口从7001到7006  在redis.conf文件中修改

第二步:修改redis.conf 打开Cluster-enable yes前面的注释

第三步:需要一个ruby脚本。在redis源码文件夹下的src目录下。redis-trib.rb

第四步:把redis-trib.rb文件复制到到redis-cluster目录下

第五步:执行ruby脚本之前,需要安装ruby环境
    1、yum install ruby
    2、yum install rubygems
    3、安装redis-trib.rb运行依赖的ruby的包、自行下载redis-3.0.0.gem
         gem install redis-3.0.0.gem

第六步:启动所有的redis实例

第七步:使用redis-trib.rb创建集群。
        填写自己主机的IP地址
    ./redis-trib.rb create --replicas 1 192.168.25.153:7001 192.168.25.153:7002 192.168.25.153:7003 192.168.25.153:7004 192.168.25.153:7005  192.168.25.153:7006

使用客户端连接集群: redis01/redis-cli -p 7001 -c    

文章作者: 邓滔
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 邓滔 !
评论
  目录