Hadoop伪分布式集群与Hive
·
Hadoop伪分布式集群与Hive
文章目录
Hadoop伪分布式集群与Hive
1. Hadoop介绍:
hadoop是一个使用Java开发的大数据框架,主要解决两个问题:大数据的存储、大数据的计算。
1.1 大数据
数据量级是PB以上的数据。 1PB=1024TB
大数据的存储:分布式存储
大数据的计算:分布式计算
1.2 Hadoop模块
- common : 公共模块,主要提供工具类。主要是为下面的三个模块提供支持。
- hdfs : 分布式文件系统。主要解决分布式存储问题。hadoop至今仍大量应用的模块。
- namenode : 名称节点
- datenode : 数据节点
- secondarynamenode : 辅助名称节点
- yarn : 分布式调度模块。主要用来将计算模型(mapreduce、spark、pig、hive)。
- resourcemanager : yarn主节点
- nodemanager : yarn的子节点
- mapreduce :计算模型,聚合与化简。现在基本没人用了。使用HiveQL 、 Pig、 spark 替代了。
1.3 Hadoop实用脚本
启动脚本
- start-all.sh : 同时启动hdfs和yarn
- start-dfs.sh : 启动hdfs
- star-yarn.sh : 启动yarn
关闭脚本
- stop-all.sh : 关闭hdfs和yarn
- stop-dfs.sh : 关闭hdfs
- stop-yarn.sh : 关闭yarn
1.4 Hadoop的集群模式
- 本地模式
- 伪分布式 : 测试环境,用最小的代价复刻生产环境的功能。
- 完全分布式 : 生产环境,最少一台namenode、三台datanode、一台secondary namenode。
2. Hadoop搭建过程
2.1 上传各种安装包
java运行环境: jdk-8u91-linux-x64.rpm
hadoop安装包:hadoop-2.7.3.tar.gz
2.2 安装Java的运行环境
1.安装java的rpm包
rpm -ivh jdk-8u91-linux-x64.rpm
制作符号连接
ln -s jdk1.8.0_91 jdk
2.配置java的环境变量
#1. 编辑系统配置文件 /etc/profile 或 ~/.bash_profile 设置PATH变量
vi /etc/profile
# Java
export JAVA_HOME=/usr/java/jdk
export PATH=$PATH:$JAVA_HOME/bin:$JAVA_HOME/jre/bin
#2. 使/etc/profile立即生效
source /etc/profile
#3. 测试Java是否安装成功
java -version
2.3 准备工作
搭建一个Hadoop的伪分布式测试环境。只需要一台服务器即可。
#1. 设置主机名
hostname master
#2. IP固定
vi /etc/sysconfig/network-scripts/ifcfg-ens33
BOOTPROTO="static"
IPADDR="192.168.177.133"
NETMASK="255.255.255.0"
GATEWAY="192.168.177.2"
DNS1="114.114.114.114"
DNS2="8.8.8.8"
ONBOOT="yes"
service network restart
#3. 设置IP域名
vi /etc/hosts
192.168.177.201 master
192.168.177.202 slave1
192.168.177.203 slave1
192.168.177.204 slave1
#4. 设置ssh无密码连接
ssh master
ssh-keygen -t rsa
ssh-copy-id master
2.4 安装hadoop
2.4.1 解压缩
#1. 解压缩hadoop.2.7.3.tar.gz
tar -xvf hadoop-2.7.3.tar.gz
#2. 建立符号连接
ln -s hadoop-2.7.3 hadoop
2.4.2 设置hadoop的环境变量
#1. 编辑/etc/profile
vi /etc/profile
#2. 输入以下内容到尾部
# Hadoop
export HADOOP_HOME=/opt/soft/hadoop
export PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin
#3. 环境变量立即生效
source /etc/profile
2.4.3 设置hadoop-env.sh
#1. 打开文件
vi $HADOOP_HOME/etc/hadoop/hadoop-env.sh
#2. 修改第25行内容
export JAVA_HOME=/usr/java/jdk
2.4.4 修改hadoop的配置文件
- core-site.xml : common模块的配置
<!-- 指定namenode节点所在机器的IP, 9000端口是hdfs的通信端口 -->
<!-- namenode通过该端口发号命令给datanode -->
<property>
<name>fs.defaultFS</name>
<value>hdfs://master:9000</value>
</property>
<!-- 存放hadoop运行过程中的临时文件 -->
<!-- 如果没有tmp目录,则创建 : mkdir -p $HADOOP_HOME/tmp -->
<property>
<name>hadoop.tmp.dir</name>
<value>/opt/soft/hadoop/tmp</value>
</property>
- hdfs-site.xml : 配置hdfs
<!-- 副本数量: 1个 -->
<property>
<name>dfs.replication</name>
<value>1</value>
</property>
- yarn-site.xml
<!-- 指定mapreduce计算模型默认调度器为yarn -->
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
- mapred-site.xml
<!-- 指定运行mapreduce时,yarn的主节点 -->
<property>
<name>yarn.resourcemanager.hostname</name>
<value>master</value>
</property>
<!-- shuffle : 分发算法 -->
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
2.4.5 测试是否搭建成功
#1. 初始化namenode
hdfs namenode -format
#2. 启动hdfs
start-dfs.sh
#3. 启动yarn
start-yarn.sh
#4. 查看进程
jps
#5. 观察端口开放端口
netstat -ntlp | grep 50070
#6. 防火墙开放端口
firewall-cmd --zone=public --add-port=50070/tcp --permanent
firewall-cmd --zone=public --add-port=8088/tcp --permanent
firewall-cmd --reload
#7. windows浏览器中访问hdfs的webUI
http://192.168.177.133:50070
#8. windows浏览器访问yarn的webUI
http://192.168.177.133:8088
搭建Hive数仓
1. Hive介绍
Hive是基于hadoop的HDFS模块的数据仓库,我们使用Hive替代MapReduce作为大数据计算模型。
2. Hive搭建过程
2.1 上传安装Hive所需要的安装包:
2.2 安装Mysql数据库:
2.2.1 安装Mysql自动配置的库
yum -y install autoconf
2.2.2 删除Mysql的残留文件
rpm -qa | grep mariadb
rpm -e --nodeps mariadb-libs
2.2.3 创建Mysql的用户&用户组
useradd mysql
2.2.4 解压缩Mysql的安装包:
#1. 将Mysql的tar.gz压缩包移动到/usr/local目录下
mv /opt/soft/mysql-5.6.35-linux-glibc2.5-x86_64.tar.gz /usr/local/
#2. 解压缩mysql包, 并创建Mysql的符号连接
cd /usr/local/
tar -xvf mysql-5.6.35-linux-glibc2.5-x86_64.tar.gz
ln -s mysql-5.6.35-linux-glibc2.5-x86_64 mysql
2.2.5 编写Mysql配置文件/etc/my.cnf
#1. 编辑my.cnf
vi /etc/my.cnf
#2. 在文件中添加以下内容:
[mysql]
default-character-set=utf8
socket=/var/lib/mysql/mysql.sock
[mysqld]
skip-name-resolve
bind-address=0.0.0.0
port=3306
socket=/var/lib/mysql/mysql.sock
basedir=/usr/local/mysql
datadir=/usr/local/mysql/data
max_connections=200
character-set-server=utf8
default-storage-engine=INNODB
lower_case_table_names=1
max_allowed_packet=16M
2.2.6 创建必要的文件或目录
#1. 通信文件
mkdir -p /var/lib/mysql
touch /var/lib/mysql/my.sock
#2. 数据目录
mkdir -p /usr/local/mysql/data
#3. 授权
chown mysql:mysql -R /var/lib/mysql
chown mysql:mysql -R /usr/local/mysql-5.6.35-linux-glibc2.5-x86_64
chmod 777 /etc/my.cnf
2.2.7 安装Mysql
#1. 进入到Mysql主目录
cd /usr/local/mysql
#2. 执行安装脚本
./scripts/mysql_install_db --user=mysql
2.2.8 设置Mysql的开机自启动
在安装Mysql之后,在/usr/local/mysql目录下有support-files(支持文件)。有一个mysql.server文件是Mysql的服务脚本。
#1. 将mysql.server文件复制到/etc/rc.d/init.d/目录下,就可以通过service命令控制Mysql服务
cp /usr/local/mysql/support-files/mysql.server /etc/rc.d/init.d/mysqld
#2. 手动启动、关闭、查看Mysql服务
service mysqld start 启动Mysql服务
service mysqld stop 关闭Mysql服务
service mysqld status 查看Mysql服务的状态
#3. 验证Mysqld服务是否开启
netstat -nltp | grep 3306
#4. 设置Mysql的环境变量
vi /etc/profile
底部输入:
export MYSQL_HOME=/usr/local/mysql
export PATH=$PATH:$MYSQL_HOME/bin
source /etc/profile
#5. 登录Mysql命令行 , 直接回车,进入Mysql命令行
mysql -u root -p
2.2.9 对Mysql进行初始化
#1. 设置Mysql的root用户密码
use mysql;
update user set authentication_string=password('root') where user='root';
SET PASSWORD FOR 'root'@'localhost' = PASSWORD('root');
#2. 打开Mysql远程连接
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'root' WITH GRANT OPTION;
FLUSH PRIVILEGES ;
#3. 端口开放
iptables : iptables -t filter -I INPUT -p tcp --dport 3306 -j ACCEPT
firewall : firewall-cmd --zone=public --add-port=3306/tcp --permanent
firewall-cmd --reload
2.2.10 通过Navicat远程连接Mysql数据库,建库
-
远程连接
-
创建hive数据库
Mysql下的hive数据库后期作为Hive的元数据库(metadata database)
2.3 安装Hive
2.3.1 解压Hive
tar -xvf apache-hive-2.1.1-bin.tar.gz
2.3.2 配置Hive的环境变量
#1. 编辑/etc/profile
vi /etc/profile
#2 在下方加入以下内容
export HIVE_HOME=/opt/soft/hive
export PATH=$PATH:$HIVE_HOME/bin
#3. 立即生效
source /etc/profile
2.3.3 修改hive-site.xml配置文件
- 将Mysql连接包复制到Hive目录下的lib目录
cp /opt/soft/mysql-connector-java-5.1.27-bin.jar /opt/soft/hive/lib/
- 配置Hive-site.xml
cd /opt/soft/hive/conf
cp hive-default.xml.template hive-site.xml
- 设置Mysql数据库连接信息
【注意】 搜索=左边的单词,该单词在中,修改
# 设置Mysql连接驱动
javax.jdo.option.ConnectionDriverName = com.mysql.jdbc.Driver
# 设置Mysql的连接字符串
javax.jdo.option.ConnectionURL = jdbc:mysql://master:3306/hive
# 设置Mysql的登录用户名
javax.jdo.option.ConnectionUserName = root
# 设置Mysql的登录密码
javax.jdo.option.ConnectionPassword = root
-
Hive的本地临时文件目录配置(log日志)
手动创建Hive的临时目录:
mkdir -p /opt/soft/hive/tmp
hive.exec.local.scratchdir = /opt/soft/hive/tmp
- 设置Hive在HDFS中保存数据使用的目录warehouse
#1. 在hdfs上面创建warehouse
hdfs dfs -mkdir -p /root/hive/warehouse
hdfs dfs -chmod 777 /root/hive
hdfs dfs -chmod 777 /root/hive/warehouse
#2. 在hive-site中修改设置
# hive主目录设置
hive.exec.scratchdir = /root/hive
# hive文件目录设置
hive.metastore.warehouse.dir = /root/hive/warehouse
- 将hive-site.xml中出现的所有${system:user.name} 改为root 2个位置
将hive-site.xml中出现的所有${system:java.io.tmpdir} 改为/root/hive 3个位置
- 修改hive下载路径
hive.downloaded.resources.dir=/root/hive/_resources
-- 示例:
<property>
<name>hive.downloaded.resources.dir</name>
<value>/root/hive/_resources</value>
</property>
2.3.4 设置hive-env.sh
#1. 在/opt/soft/hive/conf目录下复制hive-env.sh
cp /opt/soft/hive/conf/hive-env.sh.template /opt/soft/hive/conf/hive-env.sh
#2. 修改内容
# Set HADOOP_HOME to point to a specific hadoop install directory
HADOOP_HOME=/opt/soft/hadoop
# Hive Configuration Directory can be controlled by:
export HIVE_CONF_DIR=/opt/soft/hive/conf
# Folder containing extra ibraries required for hive compilation/execution can be controlled by:
export HIVE_AUX_JARS_PATH=/opt/soft/hive/lib
2.3.5 初始化hive
schematool -dbType mysql -initSchema
2.3.6 验证Hive是否安装成功
hive
更多推荐
所有评论(0)