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 11月 12 16:54 hadoop -> /root/app/manager/hadoop_manager/hadoop-2.6.0-cdh5.7.6
lrwxrwxrwx. 1 root root 52 11月 13 00:17 hbase -> /root/app/manager/hbase_manager/hbase-1.2.0-cdh5.7.6
lrwxrwxrwx. 1 root root 50 11月 12 17:10 hive -> /root/app/manager/hive_manager/hive-1.1.0-cdh5.7.6
lrwxrwxrwx. 1 root root 49 11月 15 01:48 hue -> /root/app/manager/hue_manager/hue-3.9.0-cdh5.14.0
lrwxrwxrwx. 1 root root 43 11月 12 16:01 jdk -> /root/app/manager/java_manager/jdk1.8.0_144
lrwxrwxrwx. 1 root root 42 11月 15 15:28 livy -> /root/app/manager/other_manager/livy-0.7.0
drwxr-xr-x. 10 root root 177 11月 13 03:31 manager
lrwxrwxrwx. 1 root root 52 11月 13 01:23 oozie -> /root/app/manager/oozie_manager/oozie-4.1.0-cdh5.7.6
lrwxrwxrwx. 1 root root 44 11月 13 03:32 scala -> /root/app/manager/scala_manager/scala-2.12.6
lrwxrwxrwx. 1 root root 57 11月 12 16:58 spark -> /root/app/manager/spark_manager/spark-2.4.0-bin-hadoop2.6
lrwxrwxrwx. 1 root root 51 11月 13 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&useUnicode=true&characterEncoding=UTF-8&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
Redhat | Ubuntu 10.04 | Ubuntu 12.04/14.04 |
---|---|---|
gcc | gcc | gcc |
g++ | g++ | g++ |
libxml2-devel | libxml2-dev | libxml2-dev |
libxslt-devel | libxslt-dev | libxslt-dev |
cyrus-sasl-devel | libsasl2-dev | libsasl2-dev |
cyrus-sasl-gssapi | libsasl2-modules-gssapi-mit | libsasl2-modules-gssapi-mit |
mysql-devel | libmysqlclient-dev | libmysqlclient-dev |
python-devel | python-dev | python-dev |
python-setuptools | python-setuptools | python-setuptools |
sqlite-devel | libsqlite3-dev | libsqlite3-dev |
ant | ant | ant |
libsasl2-dev | cyrus-sasl-devel | libsasl2-dev |
libsasl2-modules-gssapi-mit | cyrus-sasl-gssapi | libsasl2-modules-gssapi-mit |
libkrb5-dev | krb5-devel | libkrb5-dev |
libtidy-0.99-0 | libtidy | libtidy-0.99-0 (For unit tests only) |
mvn | mvn (From maven2 package or tarball) | mvn (From maven2/maven3 package or tarball) |
openldap-dev / libldap2-dev | openldap-devel | libldap2-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、打赏
如果觉得文章有用,你可鼓励下作者