关于两台服务器手动搭建大数据平台方法和步骤

##### 初始服务器数量
- 2台centos7
##### 建议配置
- 32G(RAM)
- 24cpu
- 10t(SATA)
### 1.环境
- 系统centos7
- jdk:1.8.0_171(64位)
- zookeeper:3.4.8
- spark-2.1.0-bin-hadoop2.6
- kafka_2.10-0.10.2.1
- hadoop-2.7.0
- hbase-1.2.6
- elasticsearch-6.3.0
### 2.系统准备

对应的安装包文件:
    elasticsearch-6.3.0.tar.gz
    hadoop-2.7.0.tar.gz
    hbase-1.2.6-bin.tar.gz
    jdk-8u171-linux-x64.tar.gz
    kafka_2.10-0.10.2.1.tgz
    mysql-5.7.23-1.el7.x86_64.rpm-bundle.tar
    spark2.1.0hadoop2.6.tgz.gz
    zookeeper-3.4.8.tar.gz

一、 配置好hosts
```
        两台设备的host
        ip1 hello1
        ip2 hello2
        关闭防火墙
            systemctl stop firewalld
            systemctl disable firewalld

二、机器之间做好免密
1. 在hello1服务器中,cd /root/
2. ssh-keygen -trsa   (全部按回车,走默认配置)
3. cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
4. chmod 600 ~/.ssh/authorized_keys
5. scp ~/.ssh/authorized_keys root@hello2:~/.ssh/
到此处时可以实现hello1机器上通过root账户登录到hello2中,但从hello2中无法通过免密码登录到hello1服务器。
6. 在hello2服务器中,cd /root/
7. ssh-keygen -trsa   (全部按回车,走默认配置)
8. cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
9. scp ~/.ssh/authorized_keys root@hello1:~/.ssh/
到此处时可以实现hello1机器与hello2机器之间免密码互通

三、建立一个用户操作elasticsearch用户,后期所有安装软件放在该目录下(当前使用root账户安装)
1.添加用户:
    useradd -m -s /bin/bash es
2.为该用户设置密码:
    password es
    


四、安装JDK
    如果系统自带openjdk,先将其卸载掉!
1.创建jdk安装路径(hello1、hello2都执行)
    执行: mkdir /usr/java
2.解压缩jdk到安装目录
    执行: tar -zxvf jdk-8u171-linux-x64.tar.gz -C /usr/java/
3.添加环境变量
    vi /etc/profile,添加以下语句
        export JAVA_HOME=/usr/java/jdk1.8.0_171
        export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
        export PATH=$PATH:$JAVA_HOME/bin
    执行:source /etc/profile
    
4.复制安装包和数据目录到hello2
    scp  -r /usr/java/jdk1.8.0_171 hello2:/usr/java/
    scp /etc/profile    hello2:/etc/
    登录到hello2上,进入/home/es目录
    执行: source /etc/profile
    
5、验证:
    两台服务器上分别执行: java -version,查看输出的版本是否与安装的版本一致。


五、安装mysql
1.如果centos系统中自带mariadb,先卸载mariadb。
2.解压mysql安装包程序
    执行:tar -xvf  mysql-5.7.23-1.el7.x86_64.rpm-bundle.tar
3.依次安装里面rpm包组建
    rpm -ivh mysql-community-common-5.7.23-1.el7.x86_64.rpm
    rpm -ivh mysql-community-libs-5.7.23-1.el7.x86_64.rpm
    rpm -ivh mysql-community-client-5.7.23-1.el7.x86_64.rpm 
    rpm -ivh mysql-community-server-5.7.23-1.el7.x86_64.rpm
    rpm -ivh mysql-community-devel-5.7.23-1.el7.x86_64.rpm
    
4.启动MySQL
    执行: systemctl start mysqld
    
5.登录mysql服务器
    这种方式安装好后,会再my.cnf文件中自动生成一个密码,
    执行:cat /var/log/mysqld.log | grep password, 出现如下记录:
        2017-09-15T01:58:11.863301Z 1 [Note] A temporary password is generated for root@localhost: m-NdrSG4ipuO
        其中“m-NdrSG4ipuO”为mysql root账户的初始密码。
    登录:
        执行: mysql -uroot -p
        输入密码: m-NdrSG4ipuO,即可进入mysql服务器。
    后续可自行修改root密码,创建新账户等操作。
    


六、安装zookeeper

1.解压zookeeper安装包到指定目录(/home/es)
    tar -zxvf zookeeper-3.4.8.tar.gz -C /home/es
2.创建程序软连接
    cd /home/es/
    ln -s zookeeper-3.4.8 zookeeper
    
3.添加执行路径环境
    vi /etc/profile    
    添加
        export ZOOKEEPER_HOME=/home/es/zookeeper
        export PATH=$PATH:$ZOOKEEPER_HOME/bin
    执行
        source /etc/profile
4.修改配置文件
    
    cd /home/es/zookeeper
    cp conf/zoo_sample.cfg conf/zoo.cfg
    
    在/home/data下创建对应的zookeeper数据存储目录
        mkdir /home/data/zookeeper
        mkdir /home/data/zookeeper/data
        mkdir /home/data/zookeeper/log
    
    修改配置文件:conf/zoo.cfg,添加以下语句
        dataDir=/home/data/zookeeper/data
        dataLogDir=/home/data/zookeeper/log
        server.1=hello1:2888:3888
        server.2=hello2:2888:3888
5.创建server表示符文件
    touch /home/data/zookeeper/data/myid
    echo echo 1>/home/data/zookeeper/data/myid
6.复制安装包和数据目录到hello2
    scp -r /home/es/zookeeper-3.4.8 es@hello2:/home/es
    scp -r /home/data/zookeeper es@hello2:/home/data
    scp  /etc/profile es@hello2:/etc
    登录到hello2上
        cd /home/es
        ln -s zookeeper-3.4.8 zookeeper
        echo echo 2>/home/data/zookeeper/data/myid
    执行
        source /etc/profile
        
7.两台机器上分别执行
    zkServer.sh start
    
8.验证
    jps | grep QuorumPeerMain,查看是否有该进程
    zkServer.sh status,查看服务状态
    
六、安装kafka
1.解压kafka安装包到指定目录(/home/es)
    tar -zxvf kafka_2.10-0.10.2.1.tgz -C /home/es
2.创建程序软连接
    cd /home/es/
    ln -s kafka_2.10-0.10.2.1 kafka
3.修改配置文件 
    备份:
        cp config/server.properties config/server.properties.bak
    创建kafka日志目录:
        mkdir /home/data/kafka
        mkdir /home/data/kafka/kafka-logs
    修改:config/server.properties,具体对应字段如下:
        broker.id=0
        delete.topic.enable=true
        num.network.threads=10
        num.io.threads=32
        socket.send.buffer.bytes=102400
        socket.receive.buffer.bytes=102400
        socket.request.max.bytes=104857600
        log.dirs=/home/data/kafka/kafka-logs
        num.partitions=1
        num.recovery.threads.per.data.dir=1
        log.retention.hours=168
        log.segment.bytes=1073741824
        log.retention.check.interval.ms=300000
        zookeeper.connect=hello1:2181,hello2:2181
        zookeeper.connection.timeout.ms=6000
6.复制安装包和数据目录到hello2
    scp -r /home/es/kafka_2.10-0.10.2.1 es@hello2:/home/es
    scp -r /home/data/kafka es@hello2:/home/data    
    
    修改hello2中的配置
        登录到hello2上,cd /home/es/kafka,修改config/server.properties中broker.id值为2.
7.启动kafka
    在两台机器的/home/es/kafka中,创建一个日志存放目录:mkdir start_log,执行以下命令:
    nohup bin/kafka-server-start.sh config/server.properties > start_log/kafka_start_log 2>&1 &
8.验证运行情况
    jps | grep Kafka,查看进程
    通过kafka命令查看topic。
    
七、安装hadoop
1.解压hadoop安装包到指定目录(/home/es)
    tar -zxvf hadoop-2.7.0.tar.gz -C /home/es
2.创建程序软连接
    cd /home/es/
    ln -s hadoop-2.7.0 hadoop
3.创建数据存放目录
    mkdir /home/data/hadoop
    mkdir /home/data/hadoop/tmp
    mkdir /home/data/hadoop/dfs
    mkdir /home/data/hadoop/dfs/data    
    mkdir /home/data/hadoop/dfs/name
4.修改配置文件
    修改/home/es/hadoop/etc/hadoop/core-site.xml
        <configuration>
            <property>
                <name>fs.defaultFS</name>
                <value>hdfs://hello1:9000</value>
            </property>
            <property>
                <name>hadoop.tmp.dir</name>
                <value>file:/home/data/hadoop/tmp</value>
            </property>
            <property>
                <name>io.file.buffer.size</name>
                <value>131702</value>
            </property>

        </configuration>
    
    修改/home/es/hadoop/etc/hadoop/hdfs-site.xml
        <configuration>
         <property>
                <name>dfs.namenode.name.dir</name>
                <value>file:/home/data/hadoop/dfs/name</value>
            </property>
            <property>
                <name>dfs.datanode.data.dir</name>
                <value>file:/home/data/hadoop/dfs/data</value>
            </property>
            <property>
                <name>dfs.replication</name>
                <value>2</value>
            </property>
            <property>
                <name>dfs.namenode.secondary.http-address</name>
                <value>hello1:9001</value>
            </property>
            <property>
            <name>dfs.webhdfs.enabled</name>
            <value>true</value>
            </property>
        </configuration>
    
    修改/home/es/hadoop/etc/hadoop/mapred-site.xml
        <configuration>
        <property>
                <name>mapreduce.framework.name</name>
                <value>yarn</value>
            </property>
            <property>
                <name>mapreduce.jobhistory.address</name>
                <value>hello1:10020</value>
            </property>
            <property>
                <name>mapreduce.jobhistory.webapp.address</name>
                <value>hello1:19888</value>
            </property>
        </configuration>

    修改/home/es/hadoop/etc/hadoop/yarn-site.xml
        <configuration>
        <!-- Site specific YARN configuration properties -->
         <property>
                <name>yarn.nodemanager.aux-services</name>
                <value>mapreduce_shuffle</value>
            </property>
            <property>
                <name>yarn.nodemanager.auxservices.mapreduce.shuffle.class</name>
                <value>org.apache.hadoop.mapred.ShuffleHandler</value>
            </property>
            <property>
                <name>yarn.resourcemanager.address</name>
                <value>hello1:8032</value>
            </property>
            <property>
                <name>yarn.resourcemanager.scheduler.address</name>
                <value>hello1:8030</value>
            </property>
            <property>
                <name>yarn.resourcemanager.resource-tracker.address</name>
                <value>hello1:8031</value>
            </property>
            <property>
                <name>yarn.resourcemanager.admin.address</name>
                <value>hello1:8033</value>
            </property>
            <property>
                <name>yarn.resourcemanager.webapp.address</name>
                <value>hello1:8088</value>
            </property>
            <property>
                <name>yarn.nodemanager.resource.memory-mb</name>
                <value>768</value>
            </property>
        </configuration>
        
    配置/home/es/hadoop/etc/hadoop目录下hadoop-env.sh、yarn-env.sh的JAVA_HOME(不设置的话,启动不了)
        export JAVA_HOME=/usr/java/jdk1.8.0_171
        
    配置/home/es/hadoop/etc/hadoop目录下的slaves,删除默认的localhost,增加2个从节点,
        hello1
        hello2
5、将配置好的Hadoop复制到各个节点对应位置上,通过scp传送
    scp  -r /home/es/hadoop-2.7.0 hello2:/home/es/
    scp  -r /home/data/hadoop hello2:/home/data/
    登录到hello2上,进入/home/es目录
    执行: ln -s hadoop-2.7.0 hadoop
    
6、格式化nameNode及启动hadoop
    在主服务器启动hadoop,从节点会自动启动,进入/home/es/hadoop目录
        初始化,输入命令,bin/hdfs namenode -format
        全部启动sbin/start-all.sh,也可以分开sbin/start-dfs.sh、sbin/start-yarn.sh
        输入命令,jps,可以看到相关信息
        
7、验证hadoop运行情况
    浏览器打开http://hello1:8088/
    浏览器打开http://hello1:50070/
    
8、添加hadoop环境变量到/etc/profile
    export HADOOP_HOME=/home/es/hadoop    export PATH=$PATH:$HADOOP_HOME/sbin
    export PATH=$PATH:$HADOOP_HOME/bin
    export HADOOP_COMMON_LIB_NATIVE_DIR=$HADOOP_HOME/lib/native
    export HADOOP_OPTS="-Djava.library.path=$HADOOP_HOME/lib/native"
    
    执行: source /etc/profile
    
八、安装Hbase
1.解压hbase安装包到指定目录(/home/es)
    tar -zxvf hbase-1.2.6-bin.tar.gz -C /home/es
2.创建程序软连接
    cd /home/es/
    ln -s hbase-1.2.6 hbase
3.添加hbase环境变量到/etc/profile
    export  HBASE_HOME=/home/es/hbase
  export  PATH=$HBASE_HOME/bin:$PATH
    执行:source /etc/profile
    
4.修改HBASE配置文件
    vi /home/es/hbase/conf/hbase-env.sh
        增加: export JAVA_HOME=/usr/java/jdk1.8.0_171
        修改: export HBASE_MANAGES_ZK=false
    
    vi /home/es/hbase/conf/hbase-site.xml
    修改类容:
        <configuration>
                <property> 
            <name>hbase.rootdir</name> <!-- hbase存放数据目录 -->
            <value>hdfs://hello1:9000/hbase/hbase_db</value>
            <!-- 端口要和Hadoop的fs.defaultFS端口一致-->
          </property> 
          <property> 
            <name>hbase.cluster.distributed</name> <!-- 是否分布式部署 -->
            <value>true</value> 
          </property> 
          <property> 
            <name>hbase.zookeeper.quorum</name> <!-- list of  zookooper -->
            <value>hello1,hello2</value> 
          </property>     

           <property><!--zookooper配置、日志等的存储位置 -->
              <name>hbase.zookeeper.property.dataDir</name> 
              <value>/home/es/hbase/zookeeper</value>
           </property>
        </configuration>
        
    配置regionservers,vi /home/es/hbase/conf/regionservers 
        去掉默认的localhost,加入hello1、hello2

5、将配置好的hbase复制到各个节点对应位置上,通过scp传送
    scp  -r /home/es/hbase-1.2.6 hello2:/home/es/
    scp /etc/profile    hello2:/etc/
    登录到hello2上,进入/home/es目录
    执行: ln -s hbase-1.2.6 hbase
            source /etc/profile
6、hbase的启动
    hello1中执行: start-hbase.sh

7、验证hbase运行情况
    输入jps命令查看进程是否启动成功,若 hello1上出现HMaster、HRegionServer、HQuormPeer,hello2上出现HRegionServer、HQuorumPeer,就是启动成功了。
    输入hbase shell 命令 进入hbase命令模式,输入status命令,查看运行状态。
    在浏览器中输入http://hello1:16010就可以在界面上看到hbase的配置

九、Spark安装
1.解压hbase安装包到指定目录(/home/es)
    tar -zxvf spark2.1.0hadoop2.6.tgz.gz -C /home/es
2.创建程序软连接
    cd /home/es/
    ln -s spark2.1.0hadoop2.6 spark
3.修改配置文件
    mv /home/es/spark/conf/spark-env.sh.template  /home/es/spark/conf/spark-env.sh
    vi /home/es/spark/conf/spark-env.sh
    修改对应配置:
        export JAVA_HOME=/usr/java/jdk1.8.0_171
        export SPARK_MASTER_IP=hello1
        export SPARK_MASTER_PORT=7077
        export SPARK_LOCAL_IP=hello1
    修改slaves文件
        mv /home/es/spark/conf/slaves.template  /home/es/spark/conf/slaves
        vi /home/es/spark/conf/slaves
        将localhost修改成:
        hello1
        hello2
5、将配置好的hbase复制到各个节点对应位置上,通过scp传送
    scp  -r /home/es/spark2.1.0hadoop2.6 hello2:/home/es/
    登录到hello2上,进入/home/es目录
    执行: ln -s spark2.1.0hadoop2.6 spark
    在hello2中修改/home/es/spark/conf/spark-env.sh
        export JAVA_HOME=/usr/java/jdk1.8.0_171
        export SPARK_MASTER_IP=hello1
        export SPARK_MASTER_PORT=7077
        export SPARK_LOCAL_IP=hello2
6、启动spark
    cd /home/es/spark
    执行: sbin/start-all.sh

7、检测执行结果
    jps | grep Worker,看是否有相应的进程。
    

十、安装elasticsearch
由于elasticsearch,用root账户无法启动,故该组件用es账户安装
1、切换到es账户: su es

2、解压hbase安装包到指定目录(/home/es)
    tar -zxvf elasticsearch-6.3.0.tar.gz -C /home/es/
    创建程序软连接
    cd /home/es/
    ln -s elasticsearch-6.3.0 elasticsearch


3、修改配置文件
    vi /home/es/elasticsearch/config/elasticsearch.yml
        # 集群的名字  
        cluster.name: crrc-health
        # 节点名字  
        node.name: node-1   
        # 数据存储目录(多个路径用逗号分隔)  
        path.data: /home/data1/elasticsearch/data
        # 日志目录  
        path.logs: /home/data1/elasticsearch/logs 
        #本机的ip地址
        network.host: hello1  
        #设置集群中master节点的初始列表,可以通过这些节点来自动发现新加入集群的节点
        discovery.zen.ping.unicast.hosts: ["hello1", "hello2"]
        # 设置节点间交互的tcp端口(集群),(默认9300)  
        transport.tcp.port: 9300
        # 监听端口(默认)  
        http.port: 9200
        # 增加参数,使head插件可以访问es  
        http.cors.enabled: true
        http.cors.allow-origin: "*"

4、创建elasticsearch数据和存储目录
    mkdir /home/data1/elasticsearch
    mkdir /home/data1/elasticsearch/data
    mkdir /home/data1/elasticsearch/logs
    
5、修改linux系统的默认硬限制参数
    切换至root用户: su root
    vim /etc/security/limits.conf 
        添加:
            es soft nofile 65536
            es hard nofile 65536
    退出es登录,重新用es账户登录,使用命令:ulimit -Hn查看硬限制参数。
    vi /etc/sysctl.conf
        添加:
            vm.max_map_count=655360
        执行:
            sysctl -p

6、将配置好的elasticsearch复制到各个节点对应位置上,通过scp传送
    scp  -r /home/es/elasticsearch-6.3.0 hello2:/home/es/
    scp  -r /home/data1/elasticsearch hello2:/home/data1/
    登录到hello2上,进入/home/es目录
    执行: ln -s elasticsearch-6.3.0 elasticsearch-6.3.0
    在hello2中修改/home/es/elasticsearch/config/elasticsearch.yml
        修改: network.host: hello2
            
7、启动elasticsearch
    使用es账户
    执行:
        cd /home/es/elasticsearch/bin/elasticsearch -d

8、验证
    控制台中输入:curl http://hello1:9200
        

云服务器搭载业务,选择合适的平台最重要!

从目前国内云计算市场的格局来看,国内云计算前三强分别是阿里云、腾讯云和华为云,阿里云、腾讯云作为背靠互联网平台的企业,更偏向于B端用户;华为与作为传统的通信巨头,更偏向于G端。

当然如何选择服务器机型,这里有篇文档汇总的比较详细,文档地址:

云服务器哪家好!2021年阿里云、腾讯云、华为云的服务器配置及价格对比?​

如果是高并发,高IO业务场景,需要确定服务器规格,可让业务应用性能发挥到最佳,参考官方文档:

阿里云服务器规格:规格实例族 - 云服务器 ECS

腾讯云服务器规格:规格实例族 - 云服务器CVM

上一篇:Elasticsearch (二) 安装、入门、基本操作


下一篇:“造轮运动”之 ORM框架系列(一)~谈谈我在实际业务中的增删改查