全套大数据平台个人开发环境手动搭建(CDH版本) 伪分布式

1、简介

  • 基于CDH5.7.6版本手动搭建
  • 涉及hadoop、spark、hive、Hbase、oozie、hue
  • 环境是虚拟机Centos7, 登陆用户是root,主机名是localhost
  • 虽然通过Cloudera Manager可以一键式以搭建大数据平台,简化了大数据平台的安装、使用难度,但是通过自己手动搭建各个组件,这样对于各个组件在大数据平台中所扮演的角色,和组件之间的依赖关系会有更进一步了解

所有CDH软件包下载路径

http://archive.cloudera.com/cdh5/cdh/5/
ps: 在具体url路径后自行添加.tar.gz就会以下载链接方式打开

2、准备

2.1 关闭防火墙

查看防火墙状态: systemctl status firewalld
关闭防火墙: systemctl stop firewalld
开机禁用 : systemctl disable firewalld

2.2 免密登陆

因为hadoop启动会使用ssh连接,每次都需要输入密码, 可以用ssh连接自己看需不需要输入密码,不需要就不用再配置这个了

cd ~/.ssh 
ssh-keygen -t rsa  # 一路回车  
cat id_rsa.pub >> authorized_keys # 加入授权
chmod 600 authorized_keys

3、通用配置

3.1 安装包准备

1、准备好如下压缩包:

[root@localhost download]# pwd
/root/download
[root@localhost download]# ll
总用量 3318852
-rw-r--r--. 1 root root   92791460 11月 15 15:20 apache-livy-0.7.0-incubating-bin.zip
-rw-r--r--. 1 root root    6800612 11月 12 15:16 ext-2.2.zip
-rw-r--r--. 1 root root  315817511 11月 12 16:41 hadoop-2.6.0-cdh5.7.6.tar.gz
-rw-r--r--. 1 root root  240688345 11月 12 17:09 hbase-1.2.0-cdh5.7.6.tar.gz
-rw-r--r--. 1 root root  126265285 11月 12 16:41 hive-1.1.0-cdh5.7.6.tar.gz
-rw-r--r--. 1 root root  163084290 11月 15 01:45 hue-3.9.0-cdh5.14.0.tar.gz
-rw-r--r--. 1 root root  185515842 11月 12 15:19 jdk-8u144-linux-x64.tar.gz
-rw-r--r--. 1 root root    1004838 11月 12 15:15 mysql-connector-java-5.1.46.jar
-rw-r--r--. 1 root root 2008595077 11月 12 20:04 oozie-4.1.0-cdh5.7.6.tar.gz
-rw-r--r--. 1 root root   20327260 11月 13 03:30 scala-2.12.6.tgz
-rw-r--r--. 1 root root  225661938 11月 12 16:41 spark-2.4.0-bin-hadoop2.6.tgz
-rw-r--r--. 1 root root   11929419 11月 13 00:14 zookeeper-3.5.6.zip

2、然后解压缩后再创建软连接到/root/app下

[root@localhost app]# pwd
/root/app
[root@localhost app]# ll
总用量 0
lrwxrwxrwx.  1 root root  54 1112 16:54 hadoop -> /root/app/manager/hadoop_manager/hadoop-2.6.0-cdh5.7.6
lrwxrwxrwx.  1 root root  52 1113 00:17 hbase -> /root/app/manager/hbase_manager/hbase-1.2.0-cdh5.7.6
lrwxrwxrwx.  1 root root  50 1112 17:10 hive -> /root/app/manager/hive_manager/hive-1.1.0-cdh5.7.6
lrwxrwxrwx.  1 root root  49 1115 01:48 hue -> /root/app/manager/hue_manager/hue-3.9.0-cdh5.14.0
lrwxrwxrwx.  1 root root  43 1112 16:01 jdk -> /root/app/manager/java_manager/jdk1.8.0_144
lrwxrwxrwx.  1 root root  42 1115 15:28 livy -> /root/app/manager/other_manager/livy-0.7.0
drwxr-xr-x. 10 root root 177 1113 03:31 manager
lrwxrwxrwx.  1 root root  52 1113 01:23 oozie -> /root/app/manager/oozie_manager/oozie-4.1.0-cdh5.7.6
lrwxrwxrwx.  1 root root  44 1113 03:32 scala -> /root/app/manager/scala_manager/scala-2.12.6
lrwxrwxrwx.  1 root root  57 1112 16:58 spark -> /root/app/manager/spark_manager/spark-2.4.0-bin-hadoop2.6
lrwxrwxrwx.  1 root root  51 1113 00:21 zookeeper -> /root/app/manager/zookeeper_manager/zookeeper-3.5.6


3.2 统一环境变量配置

vim ~/.bash_profile

添加如下:

# =================== JDK ==================================
export JAVA_HOME=/root/app/jdk
export PATH=$PATH:$JAVA_HOME/bin

# =================== Scala ============================
export SCALA_HOME=/root/app/scala
export PATH=$PATH:$SCALA_HOME/bin

# ======================= Hadoop ============================
export HADOOP_HOME=/root/app/hadoop
export PATH=$PATH:$HADOOP_HOME/bin
export PATH=$PATH:$HADOOP_HOME/sbin

# =================== Spark =================================
export SPARK_HOME=/root/app/spark
export PATH=$PATH:$SPARK_HOME/bin

# =================== Zookeeper ===============================
export ZOOKEEPER_HOME=/root/app/zookeeper
export PATH=$PATH:$ZOOKEEPER_HOME/bin

# ===================== Hbase =============
export HBASE_HOME=/root/app/hbase
export PATH=$PATH:$HBASE_HOME/bin
# ================== Hive ==============
export HIVE_HOME=/root/app/hive
export PATH=$PATH:$HIVE_HOME/bin


1、Hadoop配置

进入 /root/app/hadoop/etc/hadoop 到hadoop的配置文件目录下,修改配置文件

1.1 env文件

修改hadoop-env.sh、mapred-env.sh、yarn-env.sh这三个文件都添加JDK的环境变量

export JAVA_HOME=/root/app/jdk

1.2 core-site.xml

<!-- 指定HDFS中NameNode的地址, -->
<property>
		<name>fs.defaultFS</name>
    <value>hdfs://127.0.0.1:9000</value>
</property>

<!-- 指定Hadoop运行时产生文件的存储目录 -->
<property>
	<name>hadoop.tmp.dir</name>
	<value>/root/data/hadoop</value>
</property>

1.3 hdfs-site.xml

  • 配置HDFS相关属性
<!-- 指定HDFS副本的数量  因为单节点所以配1个-->
<property>
	<name>dfs.replication</name>
	<value>1</value>
</property>

1.4 yarn-site.xml

  • 配置yarn相关属性
<!-- Reducer获取数据的方式 -->
<property>
 		<name>yarn.nodemanager.aux-services</name>
 		<value>mapreduce_shuffle</value>
</property>

<!-- 指定YARN的ResourceManager的hostname -->
<property>
	<name>yarn.resourcemanager.hostname</name>
  <value>localhost</value>
</property>

<property>
   <name>yarn.resourcemanager.address</name>
   <value>0.0.0.0:8032</value>
</property>
<property>
  <name>yarn.resourcemanager.scheduler.address</name>
  <value>0.0.0.0:8030</value>
</property>
<property>
  <name>yarn.resourcemanager.resource-tracker.address</name>
  <value>0.0.0.0:8031</value>
</property>
<property>
  <name>yarn.resourcemanager.admin.address</name>
  <value>0.0.0.0:8033</value>
</property>
<property>
  <name>yarn.resourcemanager.webapp.address</name>
  <value>0.0.0.0:8088</value>
</property>

<!-- 配置 任务历史服务  -->
<property> 
	<name>yarn.log.server.url</name> 
	<value>http://127.0.0.1:19888/jobhistory/logs/</value> 
</property>

<!-- 开启日志聚集功能使能 
		 日志聚集概念:应用运行完成以后,将程序运行日志信息上传到HDFS系统上。
-->
<property>
  <name>yarn.log-aggregation-enable</name>
  <value>true</value>
</property>

<!-- 日志保留时间设置7天 -->
<property>
  <name>yarn.log-aggregation.retain-seconds</name>
  <value>604800</value>
</property>

1.5 mapred-site.xml

  • 配置MapReduce相关属性
<!-- 指定MR运行在YARN上 -->
<property>
		<name>mapreduce.framework.name</name>
		<value>yarn</value>
</property>


<!-- mapreduce历史服务器端访问地址 -->
<property>
	<name>mapreduce.jobhistory.address</name>
	<value>0.0.0.0:10020</value>
</property>

<!-- 历史服务器web端访问地址 -->
<property>
    <name>mapreduce.jobhistory.webapp.address</name>
    <value>0.0.0.0:19888</value>
</property>

1.6 启动测试

第一次启动需要先格式化一下hdfs的NameNode存储,之后就不用

hadoop/bin/hdfs namenode -format

成功后可在配置的hadoop临时数据目录/root/data/hadoop下下看到NameNode的初始化

启动HDFS

hadoop/sbin/start-dfs.sh
hdfs dfsadmin -safemode leave   # 关闭hdfs安全模式

启动Yarn

hadoop/sbin/start-yarn.sh

启动任务历史服务

hadoop/sbin/mr-jobhistory-daemon.sh start historyserver

启动成功后jps查看进程

  • 这时hdfs的nn、dn、sn都启动起来了
  • 而yarn的RM、NM也启动起来了
  • mr的JobHistoryServer 也启动起来了
[root@localhost sbin]# pwd
/root/app/hadoop/sbin
[root@localhost sbin]# jps
2032 SecondaryNameNode
12545 Jps
1283 NameNode
1575 DataNode
3080 NodeManager
10765 JobHistoryServer
2894 ResourceManager

访问HDFS界面 在50070端口
在这里插入图片描述
访问Yarn管理界面: 在8088端口
在这里插入图片描述

访问JobHistory的界面,在19888端口
在这里插入图片描述

2、Hbase配置

  • tip: Hbase依赖于 Hadoop 和 Zookeeper

cd /root/app/hbase/conf 下修改Hbase配置文件

2.1 hbase-env.sh

# JDK路径
export JAVA_HOME=/root/app/jdk
# 是否使用自带的zookeeper
export HBASE_MANAGES_ZK=false

2.2 hbase-site.xml

  • 就像hadoop一样,这些site配置文件大部分都是默认配置好的在default.xml, 这里一般是覆盖新的值
  • 具体默认配置见 官网Hbase默认配置属性
<configuration>
  <!-- 在hdfs存放路径 -->
	<property>     
		<name>hbase.rootdir</name>     
		<value>hdfs://127.0.0.1:9000/hbase</value>   
	</property>

  <!-- 模式: false代表Hbase单机模式, true代表分布式模式 -->
	<property>   
		<name>hbase.cluster.distributed</name>
		<value>true</value>
	</property>
	
  <!-- Zookeeper集群位置  -->
	<property>   
			<name>hbase.zookeeper.quorum</name>
	     <value>127.0.0.1:2181</value>
	</property>
  
	<!-- Zookeeper数据存放位置  -->
	<property>   
		<name>hbase.zookeeper.property.dataDir</name>
	     <value>/root/app/zookeeper/zkData</value>
	</property>
	
<!-- 暴露可访问的IP地址  -->
  <property>
			<name>hbase.master.ipc.address</name>
			<value>0.0.0.0</value>
  </property>
  <property>
      <name>hbase.regionserver.ipc.address</name>
      <value>0.0.0.0</value>
  </property>
  

</configuration>

2.3 regionservers

Hbase集群配置,这里只有一个节点

localhost

2.4 关联Hadoop的配置

  • 将Hadoop的配置文件core-site.xml 和 hdfs-site.xml文件 导入hbase/conf目录下
  • 建议使用软连接的方式
ln -s /root/app/hadoop/etc/hadoop/core-site.xml /root/app/hbase/conf/core-site.xml
ln -s /root/app/hadoop/etc/hadoop/ hdfs-site.xml /root/app/hbase/conf/hdfs-site.xml

2.5 启动测试

1、启动Zookeeper

cd /root/app/zookeeper/bin 
./zkServer.sh start

2、启动Hadoop
见上

3、启动Hbase

/root/app/hbase/bin/hbase-daemon.sh start master
/root/app/hbase/bin/hbase-daemon.sh start regionserver

查看jps进程:
发现HMaster 和 HRegionServer 都启动完成

[root@localhost bin]# jps
24722 HRegionServer
20819 NodeManager
20676 ResourceManager
23012 QuorumPeerMain
24981 Jps
20025 SecondaryNameNode
19660 DataNode
24380 HMaster
19391 NameNode

访问Habse界面,在60010端口
在这里插入图片描述

3、Hive 配置

  • Hive依赖于 MySQL、Hadoop

cd /root/app/hive/conf 目录下修改配置文件

3.1 hive-env.sh

cp hive-env.sh.template hive-env.sh
vim hive-env.sh

添加HADOOP_HOME的位置如下:

export HADOOP_HOME=/root/app/hadoop

3.2 hive-site.xml

  • 如果没有这个文件直接创建即可
  • 主要是配置Hive的元数据的存放模式和路径,默认是delpy,现改成存储到mysql中,所以需要配置连接mysql的相关属性
  • 这个mysql可以是本地的也可以是远程的,我这里是宿主机的
  • 这里没有配置hive.metastore.uris元数据服务和hiverServer2服务,以mysql直连方式访问元数据

1、修改配置文件

<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
<configuration>
  	<!-- 元数据存储的mysql路径 -->
    <property>
        <name>javax.jdo.option.ConnectionURL</name>
        <value>jdbc:mysql://www.burukeyou.com:3306/Hadoop_Hive?createDatabaseIfNotExist=true&amp;useUnicode=true&amp;characterEncoding=UTF-8&amp;useSSL=false</value>
    </property>
    <property>
        <name>javax.jdo.option.ConnectionDriverName</name>
        <value>com.mysql.jdbc.Driver</value>
    </property>
    <property>
        <name>javax.jdo.option.ConnectionUserName</name>
        <value>用户名</value>
    </property>
    <property>
        <name>javax.jdo.option.ConnectionPassword</name>
        <value>密码</value>
    </property>
 
  			<!-- hive命令行 可以显示select后的表头 -->
  		 <property>
                <name>hive.cli.print.header</name>
                <value>true</value>
        </property>
  			<!-- hive命令行 可以显示当前数据库信息 -->
        <property>
                <name>hive.cli.print.current.db</name>
                <value>true</value>
        </property>
	<!--  默认数据仓库是在/user/hive/warehouse路径下
	<property>
		<name>hive.metastore.warehouse.dir</name>
		<value>/user/hive/warehouse</value>
	</property>
	-->
</configuration>

2、修改配置后,需要将mysql的驱动包导入到hive的lib目录下

cp mysql-connector-java-5.1.46.jar /home/hadoop/app/hive/lib/

3、然后在MySQL创建存放上面配置的数据库Hadoop_Hive

4、初始化元数据到mysql数据库命令

/root/app/hive/bin/schematool -initSchema -dbType mysql

5、在Hadoop_Hive库可看到生成的表文件
在这里插入图片描述

3、测试

创建数据文件user.txt

vim  /root/tmp/user.txt
1,zhangshang,22
2,lisi,33
3,jaychou,44  

启动hive的shell, 创建表, 并导入数据文件user.txt到Hive的表

[root@localhost bin]# pwd
/root/app/hive/bin
[root@localhost bin]# /root/app/hive/bin/hive
hive (default)> create table user(id int, name string) ROW FORMAT DELIMITED FIELDS TERMINATED BY ',';
hive (default)> show tables;
tab_name
user
hive (default)> load data local inpath '/root/tmp/user.txt' overwrite into table user;
hive (default)> select * from user;
OK
user.id user.name
1       zhangshang
2       lisi
3       jaychou

这时hdfs下/user/hive/warehouse 存放了刚才导入的表数据
在这里插入图片描述

4、Spark 配置

配置文件目录位置: /root/app/spark/conf

4.1 修改spark-env.sh文件

export JAVA_HOME=/root/app/jdk
export YARN_CONF_DIR=/root/app/hadoop/etc/hadoop
# 默认pyspark使用python2.7
export PYSPARK_PYTHON=/usr/local/bin/python3

4.2 修改hadoop 的yarn-site.xml文件

  • 修改后重启Hadoop
<!--是否启动一个线程检查每个任务正使用的物理内存量,如果任务超出分配值,则直接将其杀掉,默认是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>

4.3 启动spark on yarn

先启动Hadoop

[root@localhost conf]# spark-shell --master yarn
2020-11-13 03:39:48 WARN  Utils:66 - Your hostname, localhost.localdomain resolves to a loopback address: 127.0.0.1; using 192.168.43.120 instead (on interface enp0s3)
2020-11-13 03:39:48 WARN  Utils:66 - Set SPARK_LOCAL_IP if you need to bind to another address
2020-11-13 03:39:49 WARN  NativeCodeLoader:62 - Unable to load native-hadoop library for your platform... using builtin-java classes where applicable
Setting default log level to "WARN".
To adjust logging level use sc.setLogLevel(newLevel). For SparkR, use setLogLevel(newLevel).
2020-11-13 03:39:59 WARN  Client:66 - Neither spark.yarn.jars nor spark.yarn.archive is set, falling back to uploading libraries under SPARK_HOME.
Spark context Web UI available at http://192.168.43.120:4040
Spark context available as 'sc' (master = yarn, app id = application_1605205114390_0001).
Spark session available as 'spark'.
Welcome to
      ____              __
     / __/__  ___ _____/ /__
    _\ \/ _ \/ _ `/ __/  '_/
   /___/ .__/\_,_/_/ /_/\_\   version 2.4.0
      /_/
         
Using Scala version 2.11.12 (Java HotSpot(TM) 64-Bit Server VM, Java 1.8.0_144)
Type in expressions to have them evaluated.
Type :help for more information.

scala> 

4.4 访问 hive 元数据

1、将Hive的配置文件hive-site.xml 导入 到soark/conf目录下

ln -s /root/app/hive/conf/hive-site.xml /root/app/spark/conf/hive-site.xml

2、导入mysql的驱动包到spark/jars目录下

cp mysql-connector-java-5.1.46.jar /root/app/spark/jars/

3、启动spark, 访问读取Hive创建的user表

[root@localhost conf]# spark-shell --master yarn
Spark context Web UI available at http://192.168.43.120:4040
Spark context available as 'sc' (master = yarn, app id = application_1605210525882_0001).
Spark session available as 'spark'.
Welcome to
      ____              __
     / __/__  ___ _____/ /__
    _\ \/ _ \/ _ `/ __/  '_/
   /___/ .__/\_,_/_/ /_/\_\   version 2.4.0
      /_/
         
Using Scala version 2.11.12 (Java HotSpot(TM) 64-Bit Server VM, Java 1.8.0_144)
Type in expressions to have them evaluated.
Type :help for more information.

scala> var df = spark.sql("select * from user")
scala> df.show()
+---+----------+                                                                
| id|      name|
+---+----------+
|  1|zhangshang|
|  2|      lisi|
|  3|   jaychou|
+---+----------+

5、Ooize 配置

  • 依赖于MySql 和 Hadoop

5.1 构建Oozie 依赖包libext目录

1、创建libext目录
2、解压自带的hadooplibs压缩包
3、复制解压后的hadooplibs压缩包内的hadooplib-2.6.0-cdh5.7.6.oozie-4.1.0-cdh5.7.6文件夹下面所有的jar包到libext目录下
4、将mysql驱动包 和 Oozie UI界面展示插件包 ext-2.2.zip都导入到libext目录下

[root@localhost oozie]# pwd
/root/app/oozie
[root@localhost oozie]# mkdir libext
[root@localhost oozie]# tar -zxvf oozie-hadooplibs-4.1.0-cdh5.7.6.tar.gz
[root@localhost oozie]# cp -ra oozie-4.1.0-cdh5.7.6/hadooplibs/hadooplib-2.6.0-cdh5.7.6.oozie-4.1.0-cdh5.7.6/* libext/
[root@localhost oozie]# cp /root/download/mysql-connector-java-5.1.46.jar /root/app/oozie/libext/
[root@localhost oozie]# cp /root/download/ext-2.2.zip /root/app/oozie/libext/

5.2 修改配置文件 conf/oozie-site.xml

  • 配置mysql的连接信息 和 依赖的hadoop 位置
	<!--  Mysql连接配置 -->
    <property>
        <name>oozie.service.JPAService.jdbc.driver</name>
        <value>com.mysql.jdbc.Driver</value>
    </property>
    <property>
        <name>oozie.service.JPAService.jdbc.url</name>
        <value>jdbc:mysql://www.burukeyou.com:3306/Hadoop_Ooize?createDatabaseIfNotExist=true</value>
    </property>

    <property>
        <name>oozie.service.JPAService.jdbc.username</name>
        <value>root</value>
    </property>

    <property>
        <name>oozie.service.JPAService.jdbc.password</name>
        <value>123456</value>
    </property>

    <property>
        <name>oozie.processing.timezone</name>
        <value>GMT+0800</value>
    </property>

   <!-- hadoop配置文件位置  -->
    <property>
        <name>oozie.service.HadoopAccessorService.hadoop.configurations</name>
        <value>*=/root/app/hadoop/etc/hadoop</value>
    </property>

5.3 修改hadoop的配置文件core-site.xml

  • root与linux当前登陆用户名一致
  • 重启hadoop
<!-- 配置该root用户允许通过代理访问的主机节点-->
<property>
	<name>hadoop.proxyuser.root.hosts</name>
	<value>*</value>
</property>

<!-- 配置该root用户允许代理的用户所属组-->
<property>
	<name>hadoop.proxyuser.root.groups</name>
 	<value>*</value>
</property>

5.4 上传共享jar包到HDFS

  • 使用oozie-setup.sh命令将Oozie自带的oozie-sharelib压缩包上传到HDFS
[root@localhost oozie]# pwd
/root/app/oozie
[root@localhost oozie]# bin/oozie-setup.sh sharelib create -fs hdfs:/127.0.0.1:9000 -locallib oozie-sharelib-4.1.0-cdh5.7.6-yarn.tar.gz
SLF4J: See http://www.slf4j.org/codes.html#multiple_bindings for an explanation.
SLF4J: Actual binding is of type [org.slf4j.impl.SimpleLoggerFactory]
the destination path for sharelib is: /user/root/share/lib/lib_20201113112644
[root@localhost oozie]# hadoop fs -ls /user/root/share/lib/lib_20201113112644
20/11/13 11:31:59 WARN util.NativeCodeLoader: Unable to load native-hadoop library for your platform... using builtin-java classes where applicable
Found 10 items
drwxr-xr-x   - root supergroup          0 2020-11-13 11:28 /user/root/share/lib/lib_20201113112644/distcp
drwxr-xr-x   - root supergroup          0 2020-11-13 11:28 /user/root/share/lib/lib_20201113112644/hcatalog
drwxr-xr-x   - root supergroup          0 2020-11-13 11:27 /user/root/share/lib/lib_20201113112644/hive
drwxr-xr-x   - root supergroup          0 2020-11-13 11:29 /user/root/share/lib/lib_20201113112644/hive2
drwxr-xr-x   - root supergroup          0 2020-11-13 11:27 /user/root/share/lib/lib_20201113112644/mapreduce-streaming
drwxr-xr-x   - root supergroup          0 2020-11-13 11:28 /user/root/share/lib/lib_20201113112644/oozie
drwxr-xr-x   - root supergroup          0 2020-11-13 11:27 /user/root/share/lib/lib_20201113112644/pig
-rw-r--r--   1 root supergroup       1364 2020-11-13 11:26 /user/root/share/lib/lib_20201113112644/sharelib.properties
drwxr-xr-x   - root supergroup          0 2020-11-13 11:29 /user/root/share/lib/lib_20201113112644/spark
drwxr-xr-x   - root supergroup          0 2020-11-13 11:28 /user/root/share/lib/lib_20201113112644/sqoop

之后可以在HDFS的/user/root/share/lib/lib_20201113112644目录下看到各个组件的jar包
在这里插入图片描述

5.5 创建Oozie的数据库和表

1、在之前的mysql配置信息中创建Hadoop_Ooize数据库(也可不创建)

2、初始化Ooize数据表结构

[root@localhost oozie]#  bin/ooziedb.sh create -sqlfile oozie.sql -run
Validate DB Connection
Oozie DB has been created for Oozie version '4.1.0-cdh5.7.6'

3、查看数据库Oozie生成表结构
在这里插入图片描述

5.6 打包项目, 生成war包

  • 会自动放到/oozie/oozie-server/webapps目录下
[root@localhost oozie]# pwd
/root/app/oozie
[root@localhost oozie]# bin/oozie-setup.sh prepare-war
New Oozie WAR file with added 'ExtJS library, JARs' at /root/app/oozie/oozie-server/webapps/oozie.war
INFO: Oozie is ready to be started
[root@localhost oozie]# ls /root/app/oozie/oozie-server/webapps
oozie.war  ROOT

5.7 启动Oozie

  • 一个叫Bootstrap的进程就被启动了
[root@localhost oozie]# pwd
/root/app/oozie
[root@localhost oozie]# bin/oozied.sh start
[root@localhost oozie]# jps
22547 SecondaryNameNode
22071 DataNode
23449 ResourceManager
21787 NameNode
23627 NodeManager
32044 Bootstrap
10765 JobHistoryServer
445 Jps

访问Ooziew界面,在11000端口
在这里插入图片描述

6 Hue 安装

6.1 安装环境依赖

yum install -y asciidoc cyrus-sasl-devel cyrus-sasl-gssapi cyrus-sasl-plain gcc gcc-c++ krb5-devel libffi-devel libxml2-devel libxslt-devel make openldap-devel python-devel sqlite-devel gmp-devel openssl openssl-devel mysql-devel

ps:

  • hue的编译需要很多依赖,如果报错缺什么就yum install什么

具体见官网:

Table 1. Required Dependencies

RedhatUbuntu 10.04Ubuntu 12.04/14.04
gccgccgcc
g++g++g++
libxml2-devellibxml2-devlibxml2-dev
libxslt-devellibxslt-devlibxslt-dev
cyrus-sasl-devellibsasl2-devlibsasl2-dev
cyrus-sasl-gssapilibsasl2-modules-gssapi-mitlibsasl2-modules-gssapi-mit
mysql-devellibmysqlclient-devlibmysqlclient-dev
python-develpython-devpython-dev
python-setuptoolspython-setuptoolspython-setuptools
sqlite-devellibsqlite3-devlibsqlite3-dev
antantant
libsasl2-devcyrus-sasl-devellibsasl2-dev
libsasl2-modules-gssapi-mitcyrus-sasl-gssapilibsasl2-modules-gssapi-mit
libkrb5-devkrb5-devellibkrb5-dev
libtidy-0.99-0libtidylibtidy-0.99-0 (For unit tests only)
mvnmvn (From maven2 package or tarball)mvn (From maven2/maven3 package or tarball)
openldap-dev / libldap2-devopenldap-devellibldap2-dev

6.2 修改hue.ini配置文件

修改hue/desktop/conf/conf/hue.ini文件

[desktop]
  # 会话存储密钥,随便填,越长越好
  secret_key= 8fasdjfiasjdfkasdfsatd7f
	
	# hue的访问地址和端口
  http_host=0.0.0.0
  http_port=8888
  
  is_hue_4=true
  
  # 时区设置,很重要!!!
  time_zone=Asia/Shanghai
   
  # Webserver runs as this user 
  server_user=root
  server_group=root
  
   # This should be the Hue admin and proxy user
  default_user=root
  default_hdfs_superuser=root
  
[[database]] 
      # 数据库类型
      # 1. mysql
      # 2. postgresql
      # 3. oracle
      engine=mysql
      # 数据库服务器ip地址
      host=www.burukeyou.com
      # 1. MySQL: 3306
      # 2. PostgreSQL: 5432
      # 3. Oracle Express Edition: 1521
      port=3306
      # 数据库连接用户名密码
      user=root
      password=123456
       # 访问数据库名
      name=Hadoop_Hue

ps:

  • 先准备好配置的数据库
  • 配置文件的数据库配置信息很多地方都有,这里是要[[database]]下的

6.3 编译

进入根目录执行 make apps

[root@localhost hue]# pwd
/root/app/hue
[root@localhost hue]# make apps

执行成功后可在数据库看到Hue生成的数据表

在这里插入图片描述

6.4 启动Hue

执行 build/env/bin/supervisor 命令

[root@localhost hue]# pwd
/root/app/hue
[root@localhost hue]# build/env/bin/supervisor
starting server with options:
{'daemonize': False,
 'host': '0.0.0.0',
 'pidfile': None,
 'port': 8888,
 'server_group': 'root',
 'server_name': 'localhost',
 'server_user': 'root',
 'ssl_certificate': None,
 'ssl_certificate_chain': None,
 'ssl_cipher_list': 'ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:DHE-DSS-AES128-GCM-SHA256:kEDH+AESGCM:ECDHE-RSA-AES128-SHA256:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA:ECDHE-ECDSA-AES128-SHA:ECDHE-RSA-AES256-SHA384:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA:ECDHE-ECDSA-AES256-SHA:DHE-RSA-AES128-SHA256:DHE-RSA-AES128-SHA:DHE-DSS-AES128-SHA256:DHE-RSA-AES256-SHA256:DHE-DSS-AES256-SHA:DHE-RSA-AES256-SHA:AES128-GCM-SHA256:AES256-GCM-SHA384:AES128-SHA256:AES256-SHA256:AES128-SHA:AES256-SHA:AES:CAMELLIA:DES-CBC3-SHA:!aNULL:!eNULL:!EXPORT:!DES:!RC4:!MD5:!PSK:!aECDH:!EDH-DSS-DES-CBC3-SHA:!EDH-RSA-DES-CBC3-SHA:!KRB5-DES-CBC3-SHA',
 'ssl_private_key': None,
 'threads': 50,
 'workdir': None}

访问 8888 端口
然后注册超级管理员的用户名密码即可.
ps:

  • 建议把注册用户名写成root,与linux登陆用户一致,可以避免很多权限问题
    因为hdfs很多文件的所有者都是属于linux当前登陆用户

在这里插入图片描述

6.5 与Hadoop 集成

1 、修改hadoop的core-site.xml

<!-- 配置该root用户允许通过代理访问的主机节点-->
<property>
	<name>hadoop.proxyuser.root.hosts</name>
	<value>*</value>
</property>

<!-- 配置该root用户允许代理的用户所属组-->
<property>
	<name>hadoop.proxyuser.root.groups</name>
 	<value>*</value>
</property>

2、修改hadoop的hdfs-site.xml

<!-- 是否开启web形式访问hdfs -->
<property>
	<name>dfs.webhdfs.enabled</name>
	<value>true</value>
</property>

3、修改 hue.ini

 [[hdfs_clusters]]
    [[[default]]]
      # HDFS访问位置
      fs_defaultfs=hdfs://localhost:9000
      webhdfs_url=http://localhost:50070/webhdfs/v1
      # hadoop的配置的位置
      hadoop_conf_dir=/root/app/hadoop/etc/hadoop
      # hadoop位置
	  hadoop_hdfs_home=/root/app/hadoop
	   # hadoop的bin位置
      hadoop_bin=/root/app/hadoop/bin
			
 [[yarn_clusters]]

    [[[default]]]
      # ResourceManager的位置和端口
      resourcemanager_host=localhost
      resourcemanager_port=8032
      # ResourceManager的web访问地址
	  resourcemanager_api_url=http://localhost:8088
	  # jobHistory的web访问地址
	  history_server_api_url=http://localhost:19888

重启 hadoop 和 Hue

之后hue就可以访问hadoop的东西了,比如访问HDFS

在这里插入图片描述

其他

  • 打开hue界面对hdfs的访问的一些按钮
  • 修改hue.ini
[filebrowser]
  # Location on local filesystem where the uploaded archives are temporary stored.
  archive_upload_tempdir=/tmp

  # Show Download Button for HDFS file browser.
  show_download_button=false

  # Show Upload Button for HDFS file browser.
  show_upload_button=false

  # Flag to enable the extraction of a uploaded archive in HDFS.
  enable_extract_uploaded_archive=true

6.6 与Hive 集成

1、修改hue/desktop/conf/conf/hue.ini文件

[beeswax]
  # hive服务所在地址,比如你的metastore服务或者hiveserver在哪个服务器
  hive_server_host=localhost
  hive_server_port=10000

  # Hive 配置文件所在位置
  hive_conf_dir=/root/app/hive/conf

  # Timeout in seconds for thrift calls to Hive service
  server_conn_timeout=120

  # auth_username=root
  # auth_password=123456

 

2、启动Hive的hiveserver2服务

root@localhost hive]# pwd
/root/app/hive
[root@localhost hive]# hive --service hiveserver2

3、重启Hue

4、测试Hive查询

  • 如果出现提示权限不够执行失败,则暴力把hdfs的/tmp目录改为777权限
  • [root@localhost ~]# hadoop fs -chmod -R +rwx /tmp

在这里插入图片描述

6.7 与数据库集成(mysql/oracle/postgresql)

  • 支持mysql、 oracle, postgresql

1、修改hue/desktop/conf/conf/hue.ini文件

 [[databases]]

 # mysql, oracle, or postgresql configuration.
    [[[mysql]]]
      # Name to show in the UI.
      ## nice_name="My SQL DB"

      # For MySQL and PostgreSQL, name is the name of the database.
      # For Oracle, Name is instance of the Oracle server. For express edition
      # this is 'xe' by default.
      name=数据库名字

      # Database backend to use. This can be:
      # 1. mysql
      # 2. postgresql
      # 3. oracle
      engine=mysql

      # 数据库ip地址
      host=www.burukeyou.com

      # 数据库端口
      # 1. MySQL: 3306
      # 2. PostgreSQL: 5432
      # 3. Oracle Express Edition: 1521
      port=3306

      # 数据库用户名和密码
      user=root
      password=123456

2、重启Hue

6.8 与Hbase集成

1、启动Habse和Hbase的ThriftServer 服务

  • Hue访问HBase的数据是使用thrift的方式
  • 默认HBase的thrift服务没有开启,所有需要手动额外开启thrift 服务。默认使用的是9090端口
[root@localhost hbase]# pwd
/root/app/hbase
[root@localhost hbase]# bin/hbase-daemon.sh start thrift
starting thrift, logging to /root/app/hbase/logs/hbase-root-thrift-localhost.localdomain.out
[root@localhost hbase]# jps
12802 SecondaryNameNode
22370 HRegionServer
11827 NameNode
13459 NodeManager
13302 ResourceManager
25497 Jps
12268 DataNode
22172 HMaster
25245 ThriftServer
18559 QuorumPeerMain

2、配置hue的hue.ini文件


[hbase]
  # 
  hbase_clusters=(Cluster|localhost:9090)

  # HBase配置文件位置
  hbase_conf_dir=/root/app/hbase/conf

3、重启Hue
访问Hbase查看student表
在这里插入图片描述

6.9 与Spark 和 Spark SQL 集成

1、修改livy配置文件livy.conf

[root@localhost conf]# pwd
/root/app/livy/conf
[root@localhost conf]# ll
总用量 24
-rw-r--r--. 1 root root 3859 1月   7 2020 livy-client.conf.template
-rw-r--r--. 1 root root 7590 1月   7 2020 livy.conf.template
-rw-r--r--. 1 root root 1847 1月   7 2020 livy-env.sh.template
-rw-r--r--. 1 root root 1139 1月   7 2020 log4j.properties.template
-rw-r--r--. 1 root root 1321 1月   7 2020 spark-blacklist.conf.template
[root@localhost conf]# cp livy.conf.template livy.conf
[root@localhost conf]# ll
总用量 32
-rw-r--r--. 1 root root 3859 1月   7 2020 livy-client.conf.template
-rw-r--r--. 1 root root 7590 11月 15 15:31 livy.conf
-rw-r--r--. 1 root root 7590 1月   7 2020 livy.conf.template
-rw-r--r--. 1 root root 1847 1月   7 2020 livy-env.sh.template
-rw-r--r--. 1 root root 1139 1月   7 2020 log4j.properties.template
-rw-r--r--. 1 root root 1321 1月   7 2020 spark-blacklist.conf.template
[root@localhost conf]# vim livy.conf

# livy服务端口
livy.server.port = 8998
# spark启动模式
livy.spark.master = yarn
# spark的运行模式
livy.spark.deploy-mode = client

2、修改spark配置

3、配置 hue.ini

[notebook]
	[[interpreters]]
    	# Define the name and how to connect and execute the language.
     	[[[sparksql]]]
       		name=SparkSql
       		# 连接spark sql 的方式
       		interface=hiveserver2

[spark]
  # Host address of the Livy Server.
  livy_server_host=localhost

  # Port of the Livy Server.
  livy_server_port=8998

  # Configure Livy to start in local 'process' mode, or 'yarn' workers.
  livy_server_session_kind=yarn

  # Whether Livy requires client to perform Kerberos authentication.
  security_enabled=false

  # Host of the Sql Server
  sql_server_host=localhost

  # Port of the Sql Server
  sql_server_port=10000

4、启动spark 的thriftserver

[root@localhost sbin]# pwd
/root/app/spark/sbin
[root@localhost sbin]# ./start-thriftserver.sh

5、执行Spqrk SQL
在这里插入图片描述

6、启动 LivyServer

[root@localhost livy]# pwd
/root/app/livy
[root@localhost livy]# bin/livy-server
og4j:WARN No appenders could be found for logger (org.apache.livy.server.AccessManager).
log4j:WARN Please initialize the log4j system properly.
log4j:WARN See http://logging.apache.org/log4j/1.2/faq.html#noconfig for more info.
[root@localhost sbin]# jps
16369 LivyServer
12802 SecondaryNameNode
22370 HRegionServer
11827 NameNode
13459 NodeManager
13302 ResourceManager
19499 Jps
12268 DataNode
22172 HMaster
27228 SparkSubmit
25245 ThriftServer
18559 QuorumPeerMain

7、执行spark程序

选择scala编辑后, 会启动一个livy-session-0的spark程序
在这里插入图片描述
然后编写spark程序
在这里插入图片描述

6.10 与OOzie集成

1、修改hue.ini

[liboozie]
  # oozie 运行url地址
  oozie_url=http://localhost:11000/oozie
  # 指定oozie 在hdfs上的 存放 workflows/coordinator 数据的工作目录
  remote_deployement_dir=/user/root/oozie_work
[oozie]
	# 是否允许定时调度
	enable_cron_scheduling=true
	#  指定 Oozie workflows or coodinators 作业的最大数量
	oozie_jobs_count=100
	#  Flag to enable the saved Editor queries to be dragged and dropped into a workflow.
	enable_document_action=true
	#  Flag to enable Oozie backend filtering instead of doing it at the page level in Javascript. Requires Oozie 4.3+.
    enable_oozie_backend_filtering=true
    # Flag to enable the Impala action.
    enable_impala_action=false

2、重启启动Ooize 和Hue

oozied.sh start
build/env/bin/supervisor

3、查看workflow
在这里插入图片描述

10、打赏

如果觉得文章有用,你可鼓励下作者

在这里插入图片描述

  • 3
    点赞
  • 22
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值