hadoop集群及hive搭建
hadoop集群及hive搭建
一、hadoop集群规划:
安装VMvare,使用三台centos 7虚拟机进行集群搭建,每台虚拟机的规划
主机名 | ip | 用户 | hdfs | yarn |
node1 | 待定 | node1 | NameNode、DataNode | NodeManager、ResourceManager |
node2 |
待定 | node2 | DataNode、SecondaryNameNode | NodeManager |
node3 | 待定 | node3 | DataNode | NodeManager |
jdk:https://www.oracle.com/cn/java/technologies/javase/javase8-archive-downloads.html
hadoop:http://archive.apache.org/dist/hadoop/core/
mysql:https://dev.mysql.com/downloads/file/?id=509630
hive:https://dlcdn.apache.org/hive/hive-3.1.2/
jar包:
链接:https://pan.baidu.com/s/16-IFEQrEPWSUzx16_f43Ag
提取码:tf3j
二、网络配置
2.1 、ip映射
默认没有vim编辑器,可以执行命令进行安装(出现提示,输入y即可)
vim install vim
打开hosts文件,新增三条与主机的映射关系(三台主机都要修改)
vim /etc/hosts 192.168.52.128 node1.itcast.cn node1 192.168.52.129 node2.itcast.cn node2 192.168.52.130 node3.itcast.cn node3
打开hostname文件,修改源ip
node1服务
vim /etc/hostname
修改为 node1
nide2服务
vim /etc/hostname
修改为 node2
nide3服务
vim /etc/hostname
修改为 node3
2.2、关闭禁用防火墙
关闭防火墙
systemctl stop firewalld.service
禁用防火墙
systemctl disable firewalld.service
查看当前状态(出现dead表示成功)
systemctl status firewalld.service
2.3、设置ssh免密登录
ssh node1(进行ssh登录测试)
ssh-keygen
4个回车 生成公钥、私钥
ssh-copy-id node1 ssh-copy-id node2 ssh-copy-id node3
2.4、集群时间同步
如果未发现命令进行安装
yum install ntpdate ntpdate ntp5.aliyun.com
2.5、jdk安装配置
创建统一工作目录
mkdir -p /export/server/
软件安装目录
mkdir -p /export/data/
数据存储路径
jdk安装配置环境配置
将jdk安装包上传到 /export/server/
将压缩包解压到当前目录
tar -zxvf jdk-8u291-linux-x64.tar.gz
将无用的安装包删除
rm -rf jdk-8u291-linux-x64.tar.gz
配置环境变量
vim /etc/profile
在文件最后面加上
export JAVA_HOME=/export/server/jdk1.8.0_291 export PATH=$PATH:$JAVA_HOME/bin
重新加载profile文件
source /etc/profile
测试jdk是否配置成功
java -version
scp -r /export/server/jdk1.8.0_291/ root@node2:/export/server/ scp -r /export/server/jdk1.8.0_291/ root@node3:/export/server/ scp /etc/profile root@node2:/etc/profile scp /etc/profile root@node3:/etc/profile
2.6、Hadoop安装配置
将jdk安装包上传到 /export/server/
将压缩包解压到当前目录
tar -zxvf hadoop-3.3.0.tar.gz
将无用的安装包删除
rm -rf hadoop-3.3.0.tar.gz
<1>、配置hadoop-env.sh
进入到/export/server/hadoop-3.3.0/etc/hadoop目录下
export JAVA_HOME=/export/server/jdk1.8.0_291 export HDFS_NAMENODE_USER=root export HDFS_DATENODE_USER=root export HDFS_SECONDARYNAMENODE_USER=root export YARN_RESOURCEMANAGER_USER=root export YARN_NODEMANAGER_USER=root
<2>、配置core-site.xml文件
<!-- 设置默认使用的文件系统 hadoop支持file、HDFS、GPS、ali|Amozor云等文件系统 --> <property> <name>fs.defaultFS</name> <value>hdfs://node1:8020</value> </property> <!-- 设置Hadoop本地保存数据路径 --> <property> <name>hadoop.tmp.dir</name> <value>/export/server/hadoop-3.3.0</value> </property> <!-- 设置HDFS web UI用户身份 --> <property> <name>hadoop.http.staticuser.user</name> <value>root</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>
<3>、配置hdfs-site.xml文件
<!-- 设置SNN进程运行机器位置信息 --> <property> <name>dfs.namenode.secondary.http-address</name> <value>node2:9868</value> </property>
<4>、配置mapred-site.xml文件
<!-- 设置MR程序默认运行模式:yarn 集群模式local本地模式 --> <property> <name>mapreduce.framework.name</name> <value>yarn</value> </property> <!-- MR程序历史服务地址 --> <property> <name>mapreduce.jobhistory.address</name> <value>node1:10020</value> </property> <!-- MR程序历史服务器web端地址 --> <property> <name>mapreduce.jobhistory.webapp.address</name> <value>node1:19888</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>
<5>、配置yarn-site.xml文件
<!-- 设置YARN集群主角色运行机器位置 --> <property> <name>yarn.resourcemanager.hostname</name> <value>node1</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-enable</name> <value>true</value> </property> <!-- 设置yarn历史服务端地址 --> <property> <name>yarn.log.server.url</name> <value>http://node1:19888/jobhistory/logs</value> </property> <!-- 历史日志保存的时间7天 --> <property> <name>yarn.log-aggregation.retain-seconds</name> <value>604800</value> </property>
<6>、配置works文件
node1.itcast.cn
node2.itcast.cn
node3.itcast.cn
将hadoop配置远程copy到其他机器
cd /export/server scp -r hadoop-3.3.0 root@node2:$PWD scp -r hadoop-3.3.0 root@node3:$PWD
<7>、添加hadoop环境变量
export HADOOP_HOME=/export/server/hadoop-3.3.0 export PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin
<8>、hadoop文件初始化 (首次启动,在node1服务上)
hdfs namenode -format
出现以下信息说明初始化成功
Storage directory /export/server/hadoop-3.3.0/dfs/name has been successfully formatted.
注意:无法启动在hadoop/sbin目录下,将start-dfs.sh,stop-dfs.sh文件头添加以下内容
HDFS_DATANODE_USER=root HADOOP_SECURE_DN_USER=hdfs HDFS_NAMENODE_USER=root HDFS_SECONDARYNAMENODE_USER=root
还有,start-yarn.sh,stop-yarn.sh文件头添加以下内容
YARN_RESOURCEMANAGER_USER=root HADOOP_SECURE_DN_USER=yarn YARN_NODEMANAGER_USER=root
查看hadoop web,是否配置成功
Linux服务ip:9870
Linux服务ip:8088
三、mysql安装配置
卸载 mariadb
rpm -qa | grep -i mariadb rpm -e --nodeps mariadb-libs-5.5.64-1.el7.x86_64 rpm -qa | grep mysql
mysql安装
将mysql-5.7.37-1.el7.x86_64.rpm-bundle.tar上传到软件安装目录
解压
tar -xvf mysql-5.7.37-1.el7.x86_64.rpm-bundle.tar
安装
yum install mysql-community-{libs,client,common,server}-*.rpm
出现选项,输入y
启动mysql服务
systemctl start mysqld
更改MySQL服务的数据编码
vim /etc/my.cnf
最下面一行加入
character-set-server=utf8
重新启动服务
systemctl restart mysqld
显示mysql日志
cat /var/log/mysqld.log
查看mysql临时密码
grep -i "temporary password" /var/log/mysqld.log
登录mysql,用临时密码登录
mysql -uroot -p
然后输入密码
进入数据库后,更改密码,不然无法进行操作
更改密码前,先更改mysql密码安全级别,默认长度
set global validate_password_policy=0; set global validate_password_length=4;
然后更改mysql密码
alter user root@localhost identified by '123456';
然后测试MySQL语句能否使用
show databases;
成功后输入:exit;退出mysql
然后重新登录,输入新密码,登录成功
重新登录mysql,设置客户端访问
grant all privileges on *.* to 'root'@'%' identified by '123456' with grant option; flush privileges;
四、安装配置hive
将apache-hive-3.1.2-bin.tar.gz安装包上传服务器
将文件解压到/export/server/目录
cd /export/server
tar -zxvf apache-hive-3.1.2-bin.tar.gz
解决hive与hadoop之间guava版本差异
cd /export/server/apache-hive-3.1.2-bin/ rm -rf lib/guava-19.0.jar cp /export/server/hadoop-3.3.0/share/hadoop/common/lib/guava-27.0-jre.jar ./lib/
进入到/export/server/apache-hive-3.1.2-bin/conf/目录
cd /export/server/apache-hive-3.1.2-bin/conf/
修改hive-env.sh配置文件
mv hive-env.sh.template hive-env.sh vim hive-env.sh
添加以下内容
export HADOOP_HOME=/export/server/hadoop-3.3.0 export HIVE_CONF_DIR=/export/server/apache-hive-3.1.2-bin/conf export HIVE_AUX_JARS_PATH=/export/server/apache-hive-3.1.2-bin/lib
配置元数据库信息
vim hive-site.xml
添加以下内容
<configuration> <!-- 配置连接串 --> <property> <name>javax.jdo.option.ConnectionURL</name> <!-- 数据库名称:hive --> <!-- createDatabaseIfNotExist=true:当数据库不存在的时候,自动帮你创建 --> <value>jdbc:mysql://localhost:3306/hive?characterEncoding=UTF-8&useSSL=false</value> </property> <!-- mysql的driver类 --> <property> <name>javax.jdo.option.ConnectionDriverName</name> <value>com.mysql.jdbc.Driver</value> </property> <!-- 用户名 --> <property> <name>javax.jdo.option.ConnectionUserName</name> <value>root</value> </property> <!-- 密码 --> <property> <name>javax.jdo.option.ConnectionPassword</name> <value>123456</value> </property> <property> <name>hive.cli.print.current.db</name> <value>true</value> </property> <property> <name>hive.server2.thrift.port</name> <value>10000</value> </property> <property> <name>hive.server2.thrift.bind.host</name> <value>node1</value> </property> <!-- 远程模式部署metastore metastore地址 --> <property> <name>hive.metastore.uris</name> <value>thrift://master:9083</value> </property> <!-- 关闭元数据存储授权 --> <property> <name>hive.metastore.event.db.notification.api.auth</name> <value>false</value> </property> <!-- 解决mysql无法执行DML语句的问题 --> <!-- 事务服务端配置 --> <property> <name>hive.compactor.initiator.on</name> <value>true</value> </property> <property> <name>hive.compactor.worker.threads</name> <value>1</value> </property> <!-- 事务客户端配置 --> <property> <name>hive.support.concurrency</name> <value>true</value> </property> <property> <name>hive.enforce.bucketing</name> <value>true</value> </property> <property> <name>hive.exec.dynamic.partition.mode</name> <value>nonstrict</value> </property> <property> <name>hive.txn.manager</name> <value>org.apache.hadoop.hive.ql.lockmgr.DbTxnManager</value> </property> </configuration>
数据库和hive安装完成后,将mysql连接jar包上传到/export/server/apache-hive-3.1.2-bin/lib目录下
初始化元数据
bin/schematool -initSchema -dbType mysql -verbos
配置hive环境变量
export HIVE_HOME=/export/server/apache-hive-3.1.2-bin export PATH=$PATH:$HIVE_HOME/bin
创建hive存储目录
hadoop fs -mkdir -p /user/hive/warehouse hadoop fs -mkdir -p /tmp hadoop fs -chmod g+w /user/hive/warehouse hadoop fs -chmod g+w /tmp
服务启动:
nohup /export/server/apache-hive-3.1.2-bin/bin/hive --service metastore & nohup /export/server/apache-hive-3.1.2-bin/bin/hive --service hiveserver2 &