Ubuntu 搭建 Hadoop + Hive 环境实例。
一、官网集群配置文档
二、版本说明
推荐使用新版本(3.x),浪子因为所在公司使用的 2.x 版本,所以采用的 2.x 的最高版本。
java-8
hadoop-2.10.x
hive-2.3.9
三、安装
-
安装 jdk
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16$ sudo apt install openjdk-8-jdk
# 查看路径(虽然使用 apt 安装不需要配置环境变量,但是 hadoop 无法识别,依然需要手动导入)
# /usr/lib/jvm/java-8-openjdk-amd64/jre/bin/java 就是安装的路径
# 如果你的 jdk 是自己上传压缩包配置的可以跳过此步骤
$ which java
/usr/bin/java
$ file /usr/bin/java
/usr/bin/java: symbolic link to /etc/alternatives/java
$ file /etc/alternatives/java
/etc/alternatives/java: symbolic link to /usr/lib/jvm/java-8-openjdk-amd64/jre/bin/java
$ file /usr/lib/jvm/java-8-openjdk-amd64/jre/bin/java
/usr/lib/jvm/java-8-openjdk-amd64/jre/bin/java: ELF 64-bit LSB pie executable, x86-64, version 1 (SYSV), dynamically linked, interpreter /lib64/ld-linux-x86-64.so.2, BuildID[sha1]=0d167f96ccfa5695cabf1b40056a77dc9bb8ab1a, for GNU/Linux 3.2.0, stripped
# 下载 oracle 驱动
cd hivepath/lib
wget https://download.oracle.com/otn-pub/otn_software/jdbc/217/ojdbc8.jar -
配置环境变量:
/etc/profile 1
2
3
4export JAVA_HOME=/usr/lib/jvm/java-8-openjdk-amd64
export HADOOP_HOME=hadooppath
export HIVE_HOME=hivepath
export PATH=$PATH:$JAVA_HOME/bin:$HADOOP_HOME/bin:$HADOOP_HOME/sbin:$HIVE_HOME/bin -
检验 Hadoop 是否安装成功:
1
2source /etc/profile
hadoop version -
修改 Hive 配置文件
cd …/hivepath/conf
cp hive-env.sh.template hive-env.shhive-env.sh 1
2# 配置一下 Hadoop 的安装路径
HADOOP_HOME=hadooppath -
添加 hive-site.xml 文件
新建 hive-site.xml
文件,添加以下内容。
hive-site.xml 1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
<configuration>
<property>
<name>javax.jdo.option.ConnectionURL</name>
<value>jdbc:oracle:thin:@*********:1521:fangweidbt</value>
</property>
<property>
<name>javax.jdo.option.ConnectionDriverName</name>
<value>oracle.jdbc.OracleDriver</value>
</property>
<property>
<name>javax.jdo.option.ConnectionUserName</name>
<value>******</value>
</property>
<property>
<name>javax.jdo.option.ConnectionPassword</name>
<value>******</value>
</property>
</configuration>
-
初始化
1
schematool -dbType oracle -initSchema
然后就可以使用了。
1 | hive |
三、Hadoop集群搭建
一般在生产环境中使用 Hadoop 都是集群部署(毕竟是大数据,数据集比较大),如果采用一台服务器存储,万一需要维护或者宕机就不能对外提供服务了。官网集群配置文档
1. 前置准备
- jdk(注意配置环境变量):
- ssh
2. 开始
-
创建服务器地址映射
/etc/hosts 1
2
3
4...
# ip hostname 域名
192.168.10.1 node1 test.com -
SSH 配置
1
2
3# 密钥生成省略,使用 ssh-key
# 复制公钥到目标主机
ssh-copy-id hostname -
集群时间同步
1
2sudo apt install ntpdate
ntpdate cn.pool.ntp.orgntp 常用服务器:https://dns.icoa.cn/ntp/
-
安装 Hadoop
1
2
3# 官网下载安装包并解压
# 复制到多台机器
scp -r /sourcepath/ root@hostname:/targetpath/ -
修改配置文件
配置文件都在 Hadoop 安装目录的 etc/hadoop/ 下。hadoop-3.3.4/etc/hadoop/hadoop-env.sh 1
2
3
4
5
6export JAVA_HOME=/path
export HDFS_NAMENODE_USER=
export HDFS_DATANODE_USER=
export HDFS_SECONDARYNAMENODE_USER=
export HDFS_RESOURCEMANAGER_USER=
export HDFS_NODEMANAGER_USER=core-site.xml 1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33<!-- 默认使用的文件系统,支持 file、HDFS、GFS、Amazon等 -->
<property>
<name>fs.defaultFS</name>
<value>hdfs://ip/name:port</value>
</property>
<!-- Hadoop 本地保存数据路径 -->
<property>
<name>hadoop.tmp.dir</name>
<value>/path</value>
</property>
<!-- 设置 HDFS Web UI 用户身份 -->
<property>
<name>hadoop.http.staticuser.user</name>
<value>user</value>
</property>
<!-- hive 用户代理 -->
<property>
<name>hadoop.proxyuser.root.hosts</name>
<value>*</value>
</property>
<property>
<name>hadoop.proxyuser.root.groups</name>
<value>*</value>
</property>
<!-- 文件系统垃圾桶保存时间 -->
<property>
<name>fs.trash.interval</name>
<value>1440</value>
</property>hdfs-site.xml 1
2
3
4
5<!-- SNN 进程运行机器位置信息 -->
<property>
<name>dfs.namenode.secondary.http-address</name>
<value>ip/hostname:port</value>
</property>mapred-site.xml 1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32<!-- MR 程序默认运行模式,yarn:集群模式 local:本地模式 -->
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
<!-- MR 程序历史服务器地址 -->
<property>
<name>mapreduce.jobhistory.address</name>
<value>ip/hostname:port</value>
</property>
<!-- MR 程序历史服务器 web 地址 -->
<property>
<name>mapreduce.jobhistory.webapp.address</name>
<value>ip/hostname:port</value>
</property>
<property>
<name>yarn.app.mapreduce.am.env</name>
<value>HADOOP_MAPRED_HOME=${HADOOP_HOME}</value>
</property>
<property>
<name>mapreduce.map.env</name>
<value>HADOOP_MAPRED_HOME=${HADOOP_HOME}</value>
</property>
<property>
<name>mapreduce.reduce.env</name>
<value>HADOOP_MAPRED_HOME=${HADOOP_HOME}</value>
</property>yarn-site.xml 1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40<!-- yarn 集群主角色运行机器位置 -->
<property>
<name>yarn.resourcemanager.hostname</name>
<value>ip/hostname</value>
</property>
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
<!-- 是否对容器实施物理内存限制 -->
<property>
<name>yarn.nodemanager.pmem-check-enabled</name>
<value>false</value>
</property>
<!-- 是否对容器实施虚拟内存限制 -->
<property>
<name>yarn.nodemanager.vmem-check-enabled</name>
<value>false</value>
</property>
<!-- 开启日志 -->
<property>
<name>yarn.log.aggregation-enabled</name>
<value>true</value>
</property>
<!-- yarn 历史服务器地址 -->
<property>
<name>yarn.log.server.url</name>
<value>http://ip|name/jobhistory/logs</value>
</property>
<!-- 历史日志保存时间 7 天 -->
<property>
<name>yarn.log-aggregation.retain-seconds</name>
<value>604800</value>
</property>workers 1
域名
-
集群启动
首次运行初始化:hdfs namenode -format