大数据环境搭建

清泓
2022-05-14 / 0 评论 / 956 阅读 / 32894字 / 正在检测是否收录...

大数据环境搭建

配置相关

节点信息

hostnameiplinux
master192.168.100.101CentOS7
slave1192.168.100.102CentOS7
slave2192.168.100.103CentOS7

软件版本

软件名版本号
JDK1.8
Hadoop2.7.7
Zookeeper3.4.6
Hive2.3.4
Scala2.11
Spark2.1.1
Sqoop1.4.2
Flume1.7.0
Kafka2.0.0
Flink1.10.2

环境变量配置位置:/root/profile
软件包位置:/usr/local/src/software
软件安装位置:/usr/local/src


JDK

1.解压

[root@master ~]# tar -zxvf /usr/local/src/software/jdk1.8_162 -C /usr/local/src/
[root@master ~]# mv /usr/local/src/jdk1.8_162 /usr/local/src/jdk8

2.配置环境变量

[root@master ~]# vi /root/profile
    export JAVA_HOME=/usr/local/src/jdk8
    export PATH=$PATH:$JAVA_HOME/bin
[root@master ~]# source /root/profile
[root@master ~]# java -version
    java version "1.8.0_162"
    Java(TM) SE Runtime Environment (build 1.8.0_162-b12)
    Java HotSpot(TM) 64-Bit Server VM (build 25.162-b12, mixed mode)

3.分发并配置环境变量

[root@master ~]# scp -r /usr/local/src/jdk8 slave1:/usr/local/src/
[root@master ~]# scp -r /usr/local/src/jdk8 slave2:/usr/local/src/

Hadoop

1.解压

[root@master ~]# tar -zxvf /usr/local/src/software/hadoop-2.7.7 -C /usr/local/src/
[root@master ~]# mv /usr/local/src/hadoop-2.7.7 /usr/local/src/hadoop

2.配置环境变量

[root@master ~]# vi /root/profile
    export HADOOP_HOME=/usr/local/src/hadoop
    export PATH=$PATH:$HADOOP_HOME/bin
    export PATH=$PATH:$HADOOP_HOME/sbin
[root@master ~]# source /root/profile
[root@master ~]# hadoop version
Compiled by stevel on 2018-07-18T22:47Z
Compiled with protoc 2.5.0
From source with checksum 792e15d20b12c74bd6f19a1fb886490
This command was run using /usr/local/src/hadoop-2.7.7/share/hadoop/common/hadoop-common-2.7.7.jar

3.修改配置文件

修改core-site.xml

[root@master ~]# vi /usr/local/src/hadoop/etc/hadoop/core-site.xml
<configuration>
  <property>
      <name>fs.defaultFS</name>
      <value>hdfs://master:9000</value>
  </property>
  <!-- 指定hadoop数据的存储目录 -->
  <property>
      <name>hadoop.tmp.dir</name>
      <value>/usr/local/src/hadoop/tmp</value>
  </property>
</configuration>

修改hdfs-site.xml

[root@master ~]# vi /usr/local/src/hadoop/etc/hadoop/hdfs-site.xml
<configuration>
  <!--指定namenode web访问端口-->
  <property>
      <name>dfs.namenode.http-address</name>
      <value>master:50070</value>
  </property>
  <!--指定secondarynamenode web访问端口-->
  <property>
      <name>dfs.namenode.secondary.http-address</name>
      <value>slave1:50090</value>
  </property>
  <!--指定副本数-->
  <property>
      <name>dfs.replication</name>
      <value>3</value>
  </property>
  <!--指定namenode数据存储路径-->
  <property>
      <name>dfs.namenode.name.dir</name>
      <value>/usr/local/src/hadoop/tmp/name</value>
  </property>
  <!--指定datanode数据存储路径-->
  <property>
      <name>dfs.datanode.data.dir</name>
      <value>/usr/local/src/hadoop/tmp/data</value>
  </property>
</configuration>

修改mapred-site.xml

注意所在目录

[root@master hadoop]# cp etc/hadoop/mapred-examplate-site.xml etc/hadoop/mapred-site.xml
<configuration>
  <!--指定mappreduce运行在yarn-->
  <property>
      <name>mapreduce.framework.name</name>
      <value>yarn</value>
  </property>
  <!--配置历史服务-->
  <property>
      <name>mapreduce.jobhistory.address</name>
      <value>master:10020</value>
  </property>
  <property>
      <name>mapreduce.jobhistory.webapp.address</name>
      <value>master:19888</value>
  </property>
</configuration>

修改yarn-site.xml

[root@master ~]# vi /usr/local/src/hadoop/etc/hadoop/yarn-site.xml
<configuration>
  <!--指定yarn走shuffle-->
  <property>
      <name>yarn.nodemanager.aux-services</name>
      <value>mapreduce_shuffle</value>
  </property>
  <property>
      <name>yarn.resourcemanager.hostname</name>
      <value>master</value>
  </property>
</configuration>

修改slaves

[root@master ~]# vi /usr/local/src/hadoop/etc/hadoop/slaves
  master
  slave1
  slave2

修改hadoop-env.sh

配置JAVA_HOME

[root@master ~]# vi /usr/local/src/hadoop/etc/hadoop/hadoop-env.sh
  export JAVA_HOME=/usr/local/src/jdk

修改yarn-env.sh

[root@master ~]# vi /usr/local/src/hadoop/etc/hadoop/yarn-env.sh
  export JAVA_HOME=/usr/local/src/jdk

分发并配置环境变量

[root@master ~]# scp -r /usr/local/src/hadoop slave1:/usr/local/src
[root@master ~]# scp -r /usr/local/src/hadoop slave2:/usr/local/src

环境变量配置略

启动hadoop

初始化namenode
[root@master ~]# hadoop namenode -format
启动
[root@master ~]# start-all.sh

查看各节点启动情况
master:
1.png
slave1:
2.png
slave2:
3.png
在浏览器上访问可视化页面:http://192.168.128.101:50070/


安装Zookeeper

1.解压

[root@master ~]# tar -zxvf zookeeper-3.4.6.tar.gz -C /usr/local/src/
[root@master ~]# mv zookeeper-3.4.5/ zookeeper/

2.配置环境变量

[root@master ~]# vi /root/profile
    export ZOOKEEPER_HOME=/usr/local/src/zookeeper
    export PATH=$PATH:$ZOOKEEPER_HOME/bin

3.修改配置文件

将zookpeeper的目录下的conf文件夹中的zoo_sample.cfg文件重命名

[root@master ~]# mv zoo_sample.cfg zoo.cfg

进入zoo.cfg

[root@master ~]# vim zoo.cfg

在文件中修改datadir的路径和添加server的配置

例如可以改为
4.png
同时创建dataDir属性值所指定的目录

在zkData目录下创建myid文件,修改值为1,如:

[root@master ~]# cd /usr/local/src/zookeeper/data/

[root@master data]# touch myid

[root@master data]# echo 1 > myid

然后在其他两个节点上进行相同的操作并配置环境变量,只不过要把myid的值改为2和3,

4.启动zookeeper

安装完成后

在zookpeeper目录下

在三个节点上分别执行命令,启动服务: zkServer.sh start
在三个节点上分别执行命令,查看状态: zkServer.sh status
正确结果应该是:三个节点中其中一个是
leader ,另外两个是 follower
在三个节点上分别执行命令:
jps
检查三个节点是否都有
QuromPeerMain 进程

master:
5.png
slave1:
6.png
slave2:
7.png
zookeeper安装完成

5.zookeeper启停脚本

start-zk.sh

#!/bin/sh
for host in master slave1 slave2
do
ssh $host "source /root/.bash_profile ;/usr/local/src/zookeeper/bin/zkServer.sh start"
echo "$host zk is running"
done

stop-zk.sh

#!/bin/sh
for host in master slave1 slave2
do
echo "$host zk is stopping"
ssh $host "source /root/.bash_profile ;/usr/local/src/zookeeper/bin/zkServer.sh stop"
done

给脚本赋权:
chmod +x start-zk.sh和chmod +x stop-zk.sh


Hadoop的HA搭建

需要先把之前格式化生成的文件删除,并且修改hadoop的配置文件,基本等同于重新搭建了一个hadoop集群

删除之前的缓存文件

[root@master hadoop]# rm -rf tmp/ logs/

修改配置文件

1.修改hdfs-site.xml

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

  <property>
    <name>dfs.name.dir</name>
    <value>/usr/local/src/hadoop/tmp/name</value>
  </property>

  <property>
    <name>dfs.data.dir</name>
    <value>/usr/local/src/hadoop/tmp/data</value>
  </property>

  <property>
    <name>dfs.nameservices</name>
    <value>hadoopcluster</value>
  </property>

  <property>
    <name>dfs.ha.namenodes.hadoopcluster</name>
    <value>nn1,nn2</value>
  </property>

  <property>
    <name>dfs.namenode.rpc-address.hadoopcluster.nn1</name>
    <value>master:9000</value>
  </property>

  <property>
    <name>dfs.namenode.rpc-address.hadoopcluster.nn2</name>
    <value>slave1:9000</value>
  </property>

  <property>
    <name>dfs.namenode.http-address.hadoopcluster.nn1</name>
    <value>master:50070</value>
  </property>

  <property>
    <name>dfs.namenode.http-address.hadoopcluster.nn2</name>
    <value>slave1:50070</value>
  </property>

  <property>
    <name>dfs.namenode.shared.edits.dir</name>
    <value>qjournal://master:8485;slave1:8485;slave2:8485/hadoopcluster</value>
  </property>

  <property>
    <name>dfs.journalnode.edits.dir</name>
    <value>/usr/local/src/hadoop/tmp/jn</value>
  </property>

  <property>
    <name>dfs.ha.fencing.methods</name>
    <value>shell(/bin/true)</value>
  </property>

  <property>
    <name>dfs.ha.fencing.private-key-files</name>
    <value>/root/.ssh/id_rsa</value>
  </property>

  <property>
    <name>dfs.permissions.enable</name>
    <value>false</value>
  </property>

  <property>
    <name>dfs.client.failover.proxy.provider.hadoopcluster</name>
    <value>org.apache.hadoop.hdfs.server.namenode.ha.ConfiguredFailoverProxyProvider</value>
  </property>

  <property>
    <name>dfs.ha.automatic-failover.enabled</name>
    <value>true</value>
  </property>

</configuration>

2.修改core-site.xml

<configuration>
  <property>
    <name>fs.defaultFS</name>
    <value>hdfs://hadoopcluster</value>
  </property>

  <property>
    <name>hadoop.tmp.dir</name>
    <value>/usr/local/src/hadoop/tmp</value>
  </property>

  <property>
    <name>ha.zookeeper.quorum</name>
    <value>master:2181,slave1:2181,slave2:2181</value>
  </property>

</configuration>

3.修改yarn-site.xml

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

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

    <!--声明两台resourcemanager的地址-->
    <property>
        <name>yarn.resourcemanager.cluster-id</name>
        <value>cluster-yarn1</value>
    </property>

    <property>
        <name>yarn.resourcemanager.ha.rm-ids</name>
        <value>rm1,rm2</value>
    </property>

        <property>
        <name>yarn.resourcemanager.hostname.rm1</name>
        <value>master</value>
    </property>

    <property>
        <name>yarn.resourcemanager.hostname.rm2</name>
        <value>slave1</value>
    </property>

    <!--指定zookeeper集群的地址-->
    <property>
        <name>yarn.resourcemanager.zk-address</name>
        <value>master:2181,slave1:2181,slave2:2181</value>
    </property>

 <!--启用自动恢复-->
    <property>
        <name>yarn.resourcemanager.recovery.enabled</name>
        <value>true</value>
    </property>

    <!--指定resourcemanager的状态信息存储在zookeeper集
         群-->
    <property>
       <name>yarn.resourcemanager.store.class</name>
       <value>org.apache.hadoop.yarn.server.resourcemanager.recovery.ZKRMStateStore</value>
    </property>

mapred-site.xml之前配置过不用修改

hadoop-env.sh之前配置过不用修改

yarn-site.sh之前配置过不用修改

slaves之前配置过不用修改

初始化

在保证zookeeper启动的情况下

启动各节点的journalnode

[root@master hadoop]# sbin/hadoop-daemon.sh start journalnode
[root@slave1 hadoop]# sbin/hadoop-daemon.sh start journalnode
[root@slave2 hadoop]# sbin/hadoop-daemon.sh start journalnode

启动成功后,进行格式化

[root@master hadoop]# bin/hdfs namenode -format

格式化成功
8.png

显示格式化成功后,启动master上的NameNode

sbin/hadoop-daemon.sh start namenode

启动成功后,在slave1上进行元数据的同步

在slave1的hadoop文件夹下输入

bin/hdfs namenode -bootstrapStandby

如图显示同步成功后:
9.png
把master上的NameNode关闭

关闭master上的NameNode后,我们还需要初始化zookpeeper的状态

bin/hdfs zkfc -formatZK

如图所示代表初始化成功:
10.png

启动

当我们上面的步骤都完成后,我们可以开始启动集群进行测试HA环境的搭建是否成功

先在master上启动所有节点

[root@master hadoop]# sbin/start-all.sh

还需要手动启动jobhistoryserver

[root@master hadoop]# sbin/mr-jobhistory-daemon.sh start historyserver 

然后在slave1上还布置了一个resourcemanager,这个也是在start-all.sh时无法启动,我们需要在slave1下手动启动

在slave1的hadoop目录下,执行

[root@slave1 hadoop]# sbin/yarn-daemon.sh start resourcemanager

这就是启动HadaoopHA上要启动的节点

master:
11.png
slave1:
12.png
slave2:
13.png

web端的显示信息:
14.png
15.png
现在在活动的节点是master上的namenode,resourcemanager我们可以手动kill掉,看看故障是否会自动转移,实现ha的基本意义
16.png
kill掉master上的namenode,查看网页端
17.png
发现slave1上的namenode变为了active,也就是自动故障转移了,resourcemanager的就不在演示了

这里基本可以说明hadoop的ha配置完成了


hive

解压

# 注意:Hive只需要在master节点上安装配置

[root@master ~]# cd /usr/local/src/software/
[root@master software]# tar -zxvf apache-hive-1.2.1-bin.tar.gz -C /usr/local/src/
[root@master software]# cd ..
[root@master src]# mv apache-hive-1.2.1-bin/ hive

安装mysql

hive它有自己的内置数据库derby,但是hive 使用derby 数据库存在不支持多个连接的问题,
所以我们一般会使用mysql来代替hive的元数据库

我们的mysql版本为5.7.18,安装文件如下:
mysql-community-client-5.7.18-1.el7.x86_64.rpm
mysql-community-common-5.7.18-1.el7.x86_64.rpm
mysql-community-libs-5.7.18-1.el7.x86_64.rpm
mysql-community-server-5.7.18-1.el7.x86_64.rpm


我们按照顺序安装即可
注之前的liunx带的MariaDB要卸载
[root@master ~]# rpm -qa | grep mariadb
mariadb-libs-5.5.52-2.el7.x86_64
然后卸载
[root@master ~]# rpm -e --nodeps mariadb-libs-5.5.56-2.el7.x86_64


[root@master 5.7.18]#rpm -ivh mysql-community-common-5.7.18-1.el7.x86_64.rpm 

[root@master 5.7.18]# rpm -ivh mysql-community-libs-5.7.18-1.el7.x86_64.rpm
[root@master 5.7.18]# rpm -ivh mysql-community-client-5.7.18-1.el7.x86_64.rp
m
[root@master 5.7.18]# rpm -ivh mysql-community-server-5.7.18-1.el7.x86_64.rp
m

安装之后查看安装情况
[root@master 5.7.18]# rpm -qa | grep mysql
mysql-community-common-5.7.18-1.el7.x86_64
mysql-community-client-5.7.18-1.el7.x86_64
mysql-community-libs-5.7.18-1.el7.x86_64
mysql-community-server-5.7.18-1.el7.x86_64

之后自己修改一下mysql的密码即可
修改过程可以看这个博客 https://blog.csdn.net/qq_35354260/article/details/83182900
[root@master ~]# mysql -uroot -p
Enter password: 
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 4
Server version: 5.7.18 MySQL Community Server (GPL)

Copyright (c) 2000, 2017, Oracle and/or its affiliates. All rights reserved.

Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql> 


安装完成

同时我们还需要去网上下载mysql的驱动包(mysql-connector-java-5.1.26.jar)把这个驱动包放置在hive目录下的lib目录下。

修改配置文件

[root@master software]# cd ..
[root@master src]# cd hive/
[root@master hive]# cd conf/
[root@master conf]# vim hive-site.xml
<?xml version="1.0"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>

<configuration>

  <property>
    <name>javax.jdo.option.ConnectionURL</name>
    <value>jdbc:mysql://master:3306/hive?createDatabaseIfNotExist=true&useSSL=false</value>
    <description>JDBC connect string for a JDBC metastore</description>
  </property>

  <property>
    <name>javax.jdo.option.ConnectionDriverName</name>
    <value>com.mysql.jdbc.Driver</value>
    <description>Driver class name for a JDBC metastore</description>
  </property>

  <property>
    <name>javax.jdo.option.ConnectionUserName</name>
    <value>root</value>
    <description>username to use against metastore database</description>
  </property>

  <property>
    <name>javax.jdo.option.ConnectionPassword</name>
    <value>123456(填写mysql的用户密码,这里是root用户的密码)</value>
  </property>

  <property>
    <name>hive.exec.scratchdir</name>
    <value>/usr/local/src/set/hive/tmp</value>
  </property>

  <property>
    <name>hive.exec.local.scratchdir</name>
    <value>/usr/local/src/set/hive/tmp/local</value>
  </property>

  <property>
    <name>hive.downloaded.resources.dir</name>
    <value>/usr/local/src/set/hive/tmp/resources</value>
 </property>

  <!--是否开启静态分区-->
  <property>
    <name>hive.exec.dynamic.partition</name>
    <value>true</value>
  </property>
  <!--动态分区模式-->
  <property>
      <name>hive.exec.dynamic.partition.mode</name>
      <value>nonstrict</value>
  </property>
  <!--所有执行MR的节点最大可以创建动态分区数-->
  <property>
      <name>hive.exec.max.dynamic.partitions</name>
      <value>100000</value>
  </property>
  <!--每个执行MR的节点最大可以创建动态分区数-->
  <property>
      <name>hive.exec.max.dynamic.partitions.pernode</name>
      <value>100000</value>
  </property>
  <!--是否在控制台打印表头信息-->
  <property>
      <name>hive.cli.print.header</name>
      <value>true</value>
  </property>
  <!--是否在控制台显示当前数据库-->
  <property>
      <name>hive.cli.print.current.db</name>
      <value>true</value>
  </property>
  <!--配置hive元数据服务-->
  <property>
      <name>hive.metastore.uris</name>
      <value>thrift://master:9083</value>
  </property>
</configuration>
[root@master conf]# vim hive-env.sh 
  export HADOOP_HOME=/usr/local/src/hadoop
  export JAVA_HOME=/usr/local/src/jdk1.8.0_121

初始化hive元数据库

[root@master hive]# schematool -initSchema -dbType mysql

显示如下就是成功
18.png
这样
Hive 的元数据库就配置完成

注:

如果没成功的话.可能是hadoop目录下的/share/hadoop/yarn/lib/ 中的jline-0.9.94.jar文件太老了,我们需要将hive的lib中的jline-2.12.jar放到hadoop的/share/hadoop/yarn/lib/中,同时将老版本的jline删除

另外注:如果hive的初始化失败,可能是在mysql中没赋权的原因,需要在mysql中配置

mysql > GRANT ALL PRIVILEGES ON *.* TO 'root'@'%'IDENTIFIED BY '123456' WITH GRANT OPTION;

才能顺利初始化

测试

进入Hive 命令行 执行命令 创建一个名为 test 的表 查询该表的记录数:

hive> create table test(id int);

hive> select count(*) from test;

如果查询结果为0,则成功

19.png
hive安装完成


Scala

解压

[root@master ~]# cd /usr/local/src/software/
[root@master software]# tar -zxvf scala-2.11.11.tgz -C /usr/local/src/

配置环境变量

[root@master ~]# vi /root/profile
  export HIVE_HOME=/usr/local/src/hive
  export PATH=$PATH:$HIVE_HOME/bin

查看版本

[root@master scala-2.11.6]# scala -version
Scala code runner version 2.11.6 -- Copyright 2002-2013, LAMP/EPFL

分发并配置环境变量

[root@master ~]# scp -r /usr/local/src/scala slave1:/usr/local/src
[root@master ~]# scp -r /usr/local/src/scala slave2:/usr/local/src

环境变量配置同上


Spark

此处介绍4种部署模式,按需求选择配置即可

本地模式搭建

直接解压配置环境变量运行即可

StandAlone独立部署模式

使用 Spark 自身节点运行的集群模式,也就是所谓的独立部署(Standalone)模式。
Spark 的 Standalone 模式体现了经典的 master-slave 模式。
集群规划:

masterslave1slave2
Worker MasterWorkerWorker

解压

[root@master ~]# cd /usr/local/src/software/
[root@master software]# tar -zxvf spark-2.1.1-bin-hadoop2.7.tgz -C /usr/local/src/
[root@master software]# mv /usr/local/src/spark-2.1.1-bin-hadoop2.7 /usr/local/src/spark

配置环境变量

[root@master ~]# vi /root/profile
    export SPARK_HOME=/usr/local/src/spark
    export PATH=$PATH:$SPARK_HOME/bin

修改配置文件

1.重命名slaves.template文件名
[root@master ~]# mv /usr/local/src/spark/conf/slaves.template /usr/local/src/conf/slaves
2.修改slaves文件,添加 work 节点
master
slave1
slave2
3.修改 spark-env.sh.template 文件名为 spark-env.sh
[root@master ~]# mv spark-env.sh.template spark-env.sh
4.修改 spark-env.sh 文件,添加 JAVA_HOME 环境变量和集群对应的 master 节点
export JAVA_HOME=/opt/module/jdk8
SPARK_MASTER_HOST=master
SPARK_MASTER_PORT=7077
5.分发spark安装目录

分发到其余节点,并配置环境变量

[root@master ~]# scp -r /usr/local/src/spark slave1:/usr/local/src
[root@master ~]# scp -r /usr/local/src/spark slave2:/usr/local/src
6.启动
[root@master spark]# sbin/start-all.sh

SparkHA 搭建

解压

[root@master ~]# cd /usr/local/src/software/
[root@master software]# tar -zxvf spark-2.1.1-bin-hadoop2.7.tgz -C /usr/local/src/
[root@master software]# mv /usr/local/src/spark-2.1.1-bin-hadoop2.7 /usr/local/src/spark

配置环境变量

[root@master ~]# vi /root/profile
    export SPARK_HOME=/usr/local/src/spark
    export PATH=$PATH:$SPARK_HOME/bin

修改配置文件(spark的HA)

[root@master spark]# cd conf/
root@master conf]# mv spark-env.sh.template spark-env.sh
[root@master conf]# vim spark-env.sh 

export JAVA_HOME=/usr/local/src/jdk8
export SPARK_MASTER_PORT=7077
export HADOOP_HOME=/usr/local/src/hadoop
export HADOOP_CONF_DIR=/usr/local/src/hadoop/etc/hadoop
export SCALA_HOME=/usr/local/src/scala-2.11.11
export SPARK_DAEMON_JAVA_OPTS="
        -Dspark.deploy.recoveryMode=ZOOKEEPER 
        -Dspark.deploy.zookeeper.url=master:2181,slave1:2181,slave2:2181 
        -Dspark.deploy.zookeeper.dir=/spark"


[root@master conf]# mv slaves.template slaves
[root@master conf]# vim slaves

master
slave1
slave2
5.分发spark安装目录

分发到其余节点,并配置环境变量

[root@master ~]# scp -r /usr/local/src/spark slave1:/usr/local/src
[root@master ~]# scp -r /usr/local/src/spark slave2:/usr/local/src
6.启动
[root@master spark]# sbin/start-all.sh

Spark on Yarn 搭建

解压

[root@master ~]# cd /usr/local/src/software/
[root@master software]# tar -zxvf spark-2.1.1-bin-hadoop2.7.tgz -C /usr/local/src/
[root@master software]# mv /usr/local/src/spark-2.1.1-bin-hadoop2.7 /usr/local/src/spark

配置环境变量

[root@master ~]# vi /root/profile
    export SPARK_HOME=/usr/local/src/spark
    export PATH=$PATH:$SPARK_HOME/bin

修改配置文件

1.修改 hadoop 配置文件/opt/module/hadoop/etc/hadoop/yarn-site.xml, 并分发到其他节点

添加如下配置

<!--是否启动一个线程检查每个任务正使用的物理内存量,如果任务超出分配值,则直接将其杀掉,默认
是 true -->
<property>
 <name>yarn.nodemanager.pmem-check-enabled</name>
 <value>false</value>
</property>
<!--是否启动一个线程检查每个任务正使用的虚拟内存量,如果任务超出分配值,则直接将其杀掉,默认
是 true -->
<property>
 <name>yarn.nodemanager.vmem-check-enabled</name>
 <value>false</value>
</property>

分发

[root@master ~]# scp /usr/local/src/hadoop/etc/hadoop/yarn-site.xml slave1:/usr/local/src/hadoop/etc/hadoop/
2.修改 conf/spark-env.sh,添加 JAVA_HOME 和 YARN_CONF_DIR 配置
export JAVA_HOME=/opt/module/jdk1.8.0_144
YARN_CONF_DIR=/opt/module/hadoop/etc/hadoop
5.分发spark安装目录

分发到其余节点,并配置环境变量

[root@master ~]# scp -r /usr/local/src/spark slave1:/usr/local/src
[root@master ~]# scp -r /usr/local/src/spark slave2:/usr/local/src

spark-submit提交参数

参数名参数说明
--mastermaster 的地址,提交任务到哪里执行,例如 spark://host:port, yarn, local
--deploy-mode在本地 (client) 启动 driver 或在 cluster 上启动,默认是 client
--class应用程序的主类,仅针对 java 或 scala 应用
--name应用程序的名称
--jars用逗号分隔的本地 jar 包,设置后,这些 jar 将包含在 driver 和 executor 的 classpath 下
--packages包含在driver 和executor 的 classpath 中的 jar 的 maven 坐标
--exclude-packages为了避免冲突 而指定不包含的 package
--repositories远程 repository
--conf PROP=VALUE指定spark 配置属性的值,例如-conf spark.executor.extraJavaOptions="-XX:MaxPermSize=256m"
--properties-file加载的配置文件,默认为 conf/spark-defaults.conf
--driver-memoryDriver内存,默认 1G
--driver-java-options传给 driver 的额外的 Java 选项
--driver-library-path传给 driver 的额外的库路径
--driver-class-path传给 driver 的额外的类路径
--driver-coresDriver 的核数,默认是1。在 yarn 或者 standalone 下使用
--executor-memory每个 executor 的内存,默认是1G
--total-executor-cores所有 executor 总共的核数。仅仅在 mesos 或者 standalone 下使用
--num-executors启动的 executor 数量。默认为2。在 yarn 下使用
--executor-core每个 executor 的核数。在yarn或者standalone下使用

Sqoop

注意:Sqoop只需要在master节点上安装配置

解压

[root@master ~]# cd /usr/local/src/software/
[root@master software]# tar -zxvf sqoop-1.4.2.bin__hadoop-2.0.0-alpha.tar.gz -C /usr/local/src/
[root@master software]# cd ..
[root@master src]# mv sqoop-1.4.2.bin__hadoop-2.0.0-alpha/ sqoop-1.4.6

配置环境变量

[root@master ~]# vi /root/profile
  export SQOOP_HOME=/usr/local/src/sqoop
  export PATH=$PATH:$SQOOP_HOME/bin

测试环境变量

[root@master ~]# source /root/profile
[root@master ~]# sqoop version

20.png
出现类似上图即成功,如果出现警告信息,需要注释一些配置文件

执行Sqoop中import命令后报错

Warning: /opt/module/sqoop/bin/../../hcatalog does not exist! HCatalog jobs will fail.
Please set $HCAT_HOME to the root of your HCatalog installation.
Warning: /opt/module/sqoop/bin/../../accumulo does not exist! Accumulo imports will fail.
Please set $ACCUMULO_HOME to the root of your Accumulo installation.

解决方案:
在$SQOOP_HOME/bin目录下面修改configure-sqoop文件,注释掉以下内容:

#if [ -z "${HCAT_HOME}" ]; then
#  if [ -d "/usr/lib/hive-hcatalog" ]; then
#    HCAT_HOME=/usr/lib/hive-hcatalog
#  elif [ -d "/usr/lib/hcatalog" ]; then
#    HCAT_HOME=/usr/lib/hcatalog
#  else
#    HCAT_HOME=${SQOOP_HOME}/../hive-hcatalog
#    if [ ! -d ${HCAT_HOME} ]; then
#       HCAT_HOME=${SQOOP_HOME}/../hcatalog
#    fi
#  fi
#fi
#if [ -z "${ACCUMULO_HOME}" ]; then
#  if [ -d "/usr/lib/accumulo" ]; then
#    ACCUMULO_HOME=/usr/lib/accumulo
#  else
#    ACCUMULO_HOME=${SQOOP_HOME}/../accumulo
#  fi
#fi
 
## Moved to be a runtime check in sqoop.
#if [ ! -d "${HCAT_HOME}" ]; then
#  echo "Warning: $HCAT_HOME does not exist! HCatalog jobs will fail."
#  echo 'Please set $HCAT_HOME to the root of your HCatalog installation.'
#fi
 
#if [ ! -d "${ACCUMULO_HOME}" ]; then
#  echo "Warning: $ACCUMULO_HOME does not exist! Accumulo imports will fail."
#  echo 'Please set $ACCUMULO_HOME to the root of your Accumulo installation.'
#fi

然后先后执行start-dfs.sh与start-yarn.sh启动hadoop集群,Sqoop功能恢复正常。

修改配置文件

[root@master sqoop-1.4.6]# cd conf/
[root@master conf]# mv sqoop-env-template.sh sqoop-env.sh 

[root@master conf]# vim sqoop-env.sh 
# Set Hadoop-specific environment variables here.

#Set path to where bin/hadoop is available
export HADOOP_HOME=/usr/local/src/hadoop-2.7.7

#set the path to where bin/hbase is available
# 我这里没有安装Hbase就不用配置了
#export HBASE_HOME=

#Set the path to where bin/hive is available
export HIVE_HOME=/usr/local/src/hive

#Set the path for where zookeper config dir is
export ZOOCFGDIR=/usr/local/src/zookeeper

添加mysql驱动

在修改完配置文件后,把mysql的jar包上传的sqoop的lib目录下

也就是在安装hive时使用的jar包

验证连接

验证sqoop连接mysql数据库是否成功
mysql数据库的密码为123456

命令行输入

sqoop-list-databases --connect jdbc:mysql://master:3306 --username root --password 123456

成功后显示所有数据库
21.png

sqoop安装测试完成


Kafka

解压

[root@master ~]# cd /usr/local/src/software
[root@master software]# tar -zxvf kafka_2.11-2.0.0.tgz -C /usr/local/src/
[root@master ~]# mv /usr/local/src/kafka_2.11-2.0.0/ /usr/local/src/kafka

配置环境变量

[root@master ~]# vi /root/profile
  export KAFKA_HOME=/usr/local/src/kafka
  export PATH=$PATH:$KAFKA_HOME/bin

生效环境变量

[root@master ~]# source /root/profile

修改配置文件

[root@master kafka_2.11]# cd config/
[root@master config]# vim server.properties 
broker.id=0
listeners=PLAINTEXT://192.168.128.100:9092
advertised.listeners=PLAINTEXT://192.168.128.100:9092
zookeeper.connect=192.168.128.100:2181,192.168.128.101:2181,192.168.128.102:2181

分发kafka目录到各节点

[root@master ~]# scp -r /usr/local/src/kafka slave1:/usr/local/src
[root@master ~]# scp -r /usr/local/src/kafka slave2:/usr/local/src

而在另外两个节点上,对server.properties要有几处修改
broker.id 分别修改成: 1 和 2
listeners 在ip那里分别修改成子节点对应的,即 PLAINTEXT://192.168.128.101:9092 和 PLAINTEXT://192.168.128.102:9092
advertised.listeners 也在ip那里分别修改成子节点对应的,即 PLAINTEXT://192.168.128.101:9092 和 PLAINTEXT://192.168.128.102:9092
zookeeper.connect 不需要修改

启动测试

kafka在启动之前一定要启动zookpeeper,否则启动kafka会报错

[root@master kafka]# bin/kafka-server-start.sh config/server.properties &

[root@slave1 kafka]# bin/kafka-server-start.sh config/server.properties &

[root@slave2 kafka]#  bin/kafka-server-start.sh config/server.properties &

启动后,开始测试

创建主题

kafka发出消息和接收消息都是基于topic,所以要先创建一个topic,才能向里面发消息
命令行输入

kafka-topics.sh --create --zookeeper 192.168.128.100:2181,192.168.128.101:2181,192.168.128.102:2181 
--topic Test --replication-factor 1 --partitions 1 

参数说明:

  • --create 表示创建topic
  • --partitions 表示指定我们topic的分区数
  • --replication-factor 指定副本数
  • --topic 指定topic的名字
  • --zookeeper 指定zookeeper的地址
    topic的信息保存在zookeeper中

创建test主题
22.png

启动生产者与消费者

创建成功后在master上输入以下命令启动生产者
通过命令行实现数据的发送 producer 生产者
kafka-console-producer.sh就是用来测试用的脚本,可以模拟kafka消息的发送端

[root@master ~]# kafka-console-producer.sh --broker-list 192.168.128.100:9092,
192.168.128.101:9092,192.168.128.102:9092 --topic Test

说明:
在server.properties文件中的配置,默认监听端口是9092
--broker-list 指定我们kafka集群的地址
--topic 指定我们的消息发送到哪个topic里面去

输入命令后回车,会出现一个尖括号。在后边输入信息回车,就会发送出去输入的信息。

然后在slave1和slave2上启动消费者
通过命令行实现数据的接收 consumer 消费者

[root@slave1 ~]# kafka-console-consumer.sh --bootstrap-server 192.168.128.101:9092 
--topic Test --from-beginning
[root@slave2 ~]# kafka-console-consumer.sh --bootstrap-server 192.168.128.102:9092 
--topic Test --from-beginning

参数说明:

  • --bootstrap-server 表示我们的kafak集群的地址,在旧版本中使用的是--zookeeper参数,两者至少使用一个
  • --from-beginning 表示我们从最开始的数据进行消费
  • --topic指定我们topic的名字
    在producer端发送数据,在consumer端可以收到数据

在主节点上输入的,会自动同步在其他两台节点上
这里我们的kafka也就搭建完成了。

关闭kafka

在命令行下,按ctrl加c,退出命令行,输入

[root@master kafka_2.11]# bin/kafka-server-stop.sh

[root@slave1 kafka_2.11]# bin/kafka-server-stop.sh

[root@slave2 kafka_2.11]# bin/kafka-server-stop.sh

出现以下信息
23.png

按回车即可退出
可以使用jps查看一下当前进程
24.png
kafka进程停止了,代表kafka已经关闭


Flume

解压

[root@master software]# tar -zxvf apache-flume-1.7.0-bin.tar.gz -C /usr/local/src/
[root@master src]# mv apache-flume-1.7.0-bin flume

配置环境变量

[root@master ~]# vi /root/profile
  export FLUME_HOME=/usr/local/src/flume
  export PATH=$PATH:$FLUME_HOME/bin

生效环境变量

[root@master ~]# source /root/profile

修改配置文件

[root@master flume]# cd conf/
[root@master conf]# mv flume-env.sh.template flume-env.sh
[root@master conf]# vim flume-env.sh
  export JAVA_HOME=/usr/local/src/jdk8

这里flume就算已经配置完成了
flume不需要修改太多东西,更多的都是自己自定义需要监听的目录或者端口

测试

首先需要知晓flume的四个参数配置,分别为:

  • source 数据采集 采集日志数据,将采集到的日志数据传输给channel
  • channel 数据队列,类似管道 存储source传递过来的数据
  • sink 数据输出 从channel中获取数据,将数据输出到目标位置(HDFS、HBase、Source)
  • Event 传输数据的单元,Flume中采集数据并传输的最小单位

以监听本地目录上传到hdfs作为测试:

[root@master flume-1.6.0]# mkdir job/
[root@master flume-1.6.0]# cd job/
[root@master job]# touch test.conf 
[root@master job]# vim test.conf 


a1.sources = r1
a1.channels = c1
a1.sinks = k1

a1.sources.r1.type=spooldir
a1.sources.r1.spoolDir=/usr/local/src/set/test

a1.sinks.k1.type=hdfs
a1.sinks.k1.hdfs.path=hdfs://master:9000/test

a1.channels.c1.type=file

a1.sources.r1.channels=c1
a1.sinks.k1.channel=c1

监听的test目录.在这个目录创建的文件会被上传到hdfs的test目录中

启动

[root@master flume]#bin/flume-ng agent -f job/test.conf -n a1 
1

打赏

评论

博主关闭了当前页面的评论