文章目录
需要安装包软件—>关注+私信
CentOS7环境安装文档
前期准备工作
1、通过VMWare安装纯净版CentOS7
2、使用CRT连接虚拟机
一、基础环境配置(不需要操作,以后工作中需要配置)
1.主机名称修改: /etc/hostname
echo node1 > /etc/hostname
2.修改域名解析文件: /etc/hosts
后续搭建集群时使用域名访问电脑
在平时使用www.baidu.com域名访问时,最终会同dns服务器将域名解析为ip地址访问
echo '192.168.88.100 node1.itcast.cn node1' >> /etc/hosts
echo '192.168.88.101 node2.itcast.cn node2' >> /etc/hosts
echo '192.168.88.102 node3.itcast.cn node3' >> /etc/hosts
3.关闭防火墙(重点,必须要做)
systemctl stop firewalld.service
4.禁用防火墙(重点,必须要做)
systemctl disable firewalld.service
5.关闭SELinux: /etc/selinux/config
(重点,必须要做)
setenforce 0
sed -i "s/enforcing/disabled/" /etc/selinux/config
普及:Shell脚本中的sed命令 => 查找、替换、删除操作
替换操作:
sed -i 正则表达式 要替换的源文件
正则表达式
s/旧关键词/新关键词/
6.时钟同步 (重点,必须要做)
ntpdate ntp4.aliyun.com
# 内部服务器不允许上网,内部搭建一个时钟服务器 同步内部
ntpdate 192.168.88.3
7.设置静态ip地址: /etc/sysconfig/network-scripts/ifcfg-ens33
(大数据虚拟机不需要做,因为已经提前配置好了)
sed -i "s/dhcp/static/" /etc/sysconfig/network-scripts/ifcfg-ens33
echo 'IPADDR="192.168.88.100"' >> /etc/sysconfig/network-scripts/ifcfg-ens33
echo 'PREFIX="24"' >> /etc/sysconfig/network-scripts/ifcfg-ens33
echo 'GATEWAY="192.168.88.2"' >> /etc/sysconfig/network-scripts/ifcfg-ens33
echo 'DNS1="8.8.8.8"' >> /etc/sysconfig/network-scripts/ifcfg-ens33
8.创建软件安装目录
mkdir /export
cd /export
mkdir data logs server software
9.重启系统
init 6或者reboot
二、Java环境安装
1.java文件上传解压: jdk-8u65-linux-x64.tar.gz
,注意:上传文件位置为 /export/server目录
cd /export/server
tar zxvf /export/server/jdk-8u65-linux-x64.tar.gz
2.修改环境变量
echo 'export JAVA_HOME=/export/server/jdk1.8.0_65' >> /etc/profile
echo 'export PATH=$PATH:$JAVA_HOME/bin' >> /etc/profile
echo 'export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar' >> /etc/profile
source /etc/profile
3.验证
java -version
三、Mysql安装
1.上传mysql压缩包(mysql-5.7.29-1.el7.x86_64.rpm-bundle.tar
)解压,注意:上传文件位置为 /export/server目录下
cd /export/server
mkdir mysql5.7
tar xvf mysql-5.7.29-1.el7.x86_64.rpm-bundle.tar -C mysql5.7
cd mysql5.7
2.卸载mariadb-libs
rpm -e --nodeps mariadb-libs
3.rpm安装mysql
rpm -ivh mysql-community-common-5.7.29-1.el7.x86_64.rpm mysql-community-libs-5.7.29-1.el7.x86_64.rpm mysql-community-client-5.7.29-1.el7.x86_64.rpm mysql-community-server-5.7.29-1.el7.x86_64.rpm
4.初始化服务和修改文件权限
mysqld --initialize
chown mysql:mysql /var/lib/mysql -R
5.启动服务并设置开机自启
systemctl start mysqld.service
systemctl enable mysqld.service
6.登录Mysql
Pass=$(grep 'A temporary password' /var/log/mysqld.log |awk '{print $NF}')
mysql -uroot -p"$Pass"
7.修改mysql密码及配置远程登录,注意:该操作是在mysql中进行
alter user user() identified by "hadoop";
use mysql;
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'hadoop' WITH GRANT OPTION;
FLUSH PRIVILEGES;
8.退出mysql
exit;
四、zookepper安装
1.上传zookepper压缩包(zookeeper-3.4.6.tar.gz
)解压,注意:上传文件位置为 /export/server目录
cd /export/server
tar xvf /export/server/zookeeper-3.4.6.tar.gz
mv zookeeper-3.4.6 zookeeper
2.添加环境变量
echo 'export ZOOKEEPER_HOME=/export/server/zookeeper' >> /etc/profile
echo 'export PATH=$PATH:$ZOOKEEPER_HOME/bin' >> /etc/profile
source /etc/profile
问题:如果配置完成后,如何查看环境变量是否配置成功
echo $PATH
以上操作完成后,把/export/server同步到其他所有的机器上,针对其他的两台机器也要进行环境变量配置。
[root@node1 ~] # scp -r /export/server/zookeeper root@node2:/export/server/
[root@node1 ~] # scp -r /export/server/zookeeper root@node3:/export/server/
# 以下命令需要在node2和node3中在执行一遍
echo 'export ZOOKEEPER_HOME=/export/server/zookeeper' >> /etc/profile
echo 'export PATH=$PATH:$ZOOKEEPER_HOME/bin' >> /etc/profile
source /etc/profile
3.创建数据目录
mkdir -p /export/data/zkdata
echo 1 > /export/data/zkdata/myid
# 注意:!!!!!!!!!
# 注意:!!!!!!!!!
# 注意:!!!!!!!!!
# 搭建集群时,还需要在创建完node2虚拟机上执行
echo 2 > /export/data/zkdata/myid
# 搭建集群时,还需要在创建完node3虚拟机上执行
echo 3 > /export/data/zkdata/myid
4.修改配置文件(注意:在Linux操作系统中,几乎所有软件都有配置)
mv /export/server/zookeeper/conf/zoo_sample.cfg /export/server/zookeeper/conf/zoo.cfg
sed -i "s#^dataDir.*#dataDir=/export/data/zkdata#" /export/server/zookeeper/conf/zoo.cfg
# 配置2n+1个节点
echo 'server.1=node1:2888:3888' >> /export/server/zookeeper/conf/zoo.cfg
echo 'server.2=node2:2888:3888' >> /export/server/zookeeper/conf/zoo.cfg
echo 'server.3=node3:2888:3888' >> /export/server/zookeeper/conf/zoo.cfg
在zookeeper集群中所有节点都会开启3888端口,3888端口用来leader发生故障时,投票选举出新的leader。
所有节点都会与其它节点的3888端口建立TCP连接
但只有leader才会开启2888端口,其它节点都会与leader2888端口建立TCP连接, 其主要功能是接收其它follwoer和observer节点发送过来的写事务并执行。
SSH:22
FTP:21
MySQL:3306
ZooKeeper:2181
5.zookeeper服务操作
# 启动
zkServer.sh start
# 停止
zkServer.sh stop
# 查看状态
zkServer.sh status
## 注意启动时需要三台机器都执行启动服务
6.查看运行的java服务
jps
显示Java程序的后台进程。
7.集群搭建说明
在node1的机器上配置完成后,需要将node1中的zookeeper目录复制到node2和node3的对应目录下,同时需要将基础环境配置步骤在node2和node3上重新执行一遍
集群之间还需要配置免密登录
注意:克隆完成后需要修改机器名和ip地址
8.集群免密登录
# 创建密钥
[root@node1 ~]# ssh-keygen
[root@node2 ~]# ssh-keygen
[root@node3 ~]# ssh-keygen
# 拷贝密钥到其他机器
[root@node1 ~]# ssh-copy-id node1
[root@node1 ~]# ssh-copy-id node2
[root@node1 ~]# ssh-copy-id node3
五、hadoop安装
1.上传hadoop压缩包(hadoop-3.3.0-Centos7-64-with-snappy.tar.gz
)解压,注意:上传文件位置为 /export/server目录
cd /export/server
tar zxvf /export/server/hadoop-3.3.0-Centos7-64-with-snappy.tar.gz
2.配置环境变量
echo 'export HADOOP_HOME=/export/server/hadoop-3.3.0' >> /etc/profile
echo 'export PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin' >> /etc/profile
source /etc/profile
3.手动修改配置文件(3和4二选一)
进入
/export/server/hadoop-3.3.0/etc/hadoop
目录下进行修改
① hadoop-env.sh文件
#设置JAVA_HOME环境变量,保证Hadoop可以找到Java运行环境
export JAVA_HOME=/export/server/jdk1.8.0_241
#以上配置完成后,在文件最后在添加
export HDFS_NAMENODE_USER=root
export HDFS_DATANODE_USER=root
export HDFS_SECONDARYNAMENODE_USER=root
export YARN_RESOURCEMANAGER_USER=root
export YARN_NODEMANAGER_USER=root
② core-site.xml文件
<!-- 设置默认使用的文件系统 Hadoop支持file、HDFS、GFS、ali|Amazon云等文件系统 -->
<property>
<name>fs.defaultFS</name>
<value>hdfs://node1:8020</value>
</property>
<!-- 设置Hadoop本地保存数据路径 -->
<property>
<name>hadoop.tmp.dir</name>
<value>/export/data/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>
③ hdfs-site.xml文件
<!-- 设置SNN进程运行机器位置信息 -->
<property>
<name>dfs.namenode.secondary.http-address</name>
<value>node2:9868</value>
</property>
④ 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>
<!-- 历史服务器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>
⑤ 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>
⑥ workers文件
node1
node2
node3
4.使用配置文件替换(3和4二选一)
上传配置文件压缩包(
hadoop-config.tar
)解压,注意:上传文件位置为 /export/server目录
tar xvf /export/server/hadoop-config.tar
mv -f /export/server/hadoop-config/* /export/server/hadoop-3.3.0/etc/hadoop/
rm /export/server/hadoop-config* -rf
5.集群搭建说明(node1)
需要将node1中的Hadoop文件复制到node2和node3的对应位置
scp可以进行主机的文件复制拷贝
scp -r /export/server/hadoop-3.3.0 root@node2:/export/server/
scp -r /export/server/hadoop-3.3.0 root@node3:/export/server/
6.hadoop集群启动
① 数据初始化(格式化)
注意: 初始化操作必须在node1中执行
hdfs namenode -format
特别注意:这个指令只在第一次搭建集群式需要进行格式化操作,以后就不需要在执行这条命令了。
生产环境下执行此命令:直接枪毙!!!
由于此命名实际上是格式化Hadoop的数据目录,只需要在第一次搭建时执行一次即可,以后一定不要随便执行命令。
② 脚本启动和关闭
start-all.sh
stop-all.sh
http://192.168.88.161:9870
7.常见错误汇总
① JAVA_HOME找不到?
问题原因:/export/server/hadoop-3.3.0/etc/hadoop/hadoop-env.sh没有配置JAVA_HOME
解决方案:
55行添加 export JAVA_HOME=/export/server/jdk1.8.0_241
重新启动即可!
② 配置文件出错,导致启动报错
问题原因:导致以上Hadoop集群无法启动的主要原因在于hdfs-site.xml文件写错了
解决方案:查看错误文件名称,查看错误行号
以上错误已经说明,代表etc/hadoop的配置文件hdfs-site.xml文件有错误 => 错误行号22第2个字符
③ 在Windows电脑中,是否可以通过别名来实现对Hadoop集群的访问呢?
答:也是可以的,但是需要配置域名IP映射文件
C:\Windows\System32\drivers\etc
找到hosts文件
更改方式特别有趣,首先把hosts文件拖到桌面,更改以后,在拖回来就修改成功了!
配置完成后保存即可,如何验证是否配置成功呢?
④ Hadoop集群启动成功后,无法上传文件
大多数的原因是因为安全模式处于开启状态,一般情况下,首次启动Hadoop,需要等待一段时间以后才能上传。namenode 和 datanode心跳检测(3s),一般情况下namenode必须要保证datanode3个节点必须完全启动以后才能上传 => safemode(安全模式)
也有一种可能,大家没有进行初始化操作,也可能会导致文件无法上传!
还有一种情况:因为我们在配置文件中,指定的WebUI端口为node1:9870,HDFS在上传过程中默认校检你主机的名称是不是node1,如果你的文件来自于node1主机就允许上传,反之就不允许你上传!
解决方案:
在Windows电脑中,按Windows键 + R,输入drivers,然后回车
进入etc目录,找到hosts文件,然后拖动到桌面
⑤ 只有namenode,没有datanode
生产环境环境看日志,看看具体哪里报错了
根据日志提示解决问题
学习环境,直接删掉Hadoop的数据目录,重新格式化
node1/node2/node3:
rm -rf /export/data/hadoop-3.3.0/*
关闭Hadoop集群
stop-all.sh
在node1节点重新初始化:
hdfs namenode -format
重新启动集群,所有datanode全部恢复
start-all.sh
六、Hive的安装 hive安装一台即可 也可以安装多台
1.上传安装包 解压
cd /export/server/
tar zxvf /export/server/apache-hive-3.1.2-bin.tar.gz
2.解决Hive与Hadoop之间guava版本差异
rm -rf /export/server/apache-hive-3.1.2-bin/lib/guava-19.0.jar
cp /export/server/hadoop-3.3.0/share/hadoop/common/lib/guava-27.0-jre.jar /export/server/apache-hive-3.1.2-bin/lib/
3. 配置环境变量
echo 'export HIVE_HOME=/export/server/apache-hive-3.1.2-bin' >> /etc/profile
echo 'export PATH=$PATH:$HIVE_HOME/bin:$HIVE_HOME/sbin' >> /etc/profile
source /etc/profile
4. 修改配置文件
① hive-env.sh
- 修改文件名称
cd /export/server/apache-hive-3.1.2-bin/conf
mv hive-env.sh.template hive-env.sh
- 写入数据
echo 'export HADOOP_HOME=/export/server/hadoop-3.3.0' >> /export/server/apache-hive-3.1.2-bin/conf/hive-env.sh
echo 'export HIVE_CONF_DIR=/export/server/apache-hive-3.1.2-bin/conf' >> /export/server/apache-hive-3.1.2-bin/conf/hive-env.sh
echo 'export HIVE_AUX_JARS_PATH=/export/server/apache-hive-3.1.2-bin/lib' >> /export/server/apache-hive-3.1.2-bin/conf/hive-env.sh
② hive-site.xml
- 打开文件
vim hive-site.xml
- 复制粘贴如下内容
<configuration>
<!-- 存储元数据mysql相关配置 -->
<property>
<name>javax.jdo.option.ConnectionURL</name>
<value>jdbc:mysql://node1:3306/hive3?createDatabaseIfNotExist=true&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>root</value>
</property>
<property>
<name>javax.jdo.option.ConnectionPassword</name>
<value>hadoop</value>
</property>
<!-- H2S运行绑定host -->
<property>
<name>hive.server2.thrift.bind.host</name>
<value>node1</value>
</property>
<!-- 远程模式部署metastore metastore地址 -->
<property>
<name>hive.metastore.uris</name>
<value>thrift://node1:9083</value>
</property>
<!-- 关闭元数据存储授权 -->
<property>
<name>hive.metastore.event.db.notification.api.auth</name>
<value>false</value>
</property>
</configuration>
5.上传mysql jdbc驱动到 /export/server/apache-hive-3.1.2-bin/lib/
下
mysql-connector-java-5.1.32.jar
6.初始化元数据
schematool -initSchema -dbType mysql -verbos
#初始化成功会在mysql中创建74张表
7.在hdfs创建hive存储目录
hadoop fs -mkdir /tmp
hadoop fs -mkdir -p /user/hive/warehouse
hadoop fs -chmod g+w /tmp
hadoop fs -chmod g+w /user/hive/warehouse
8.启动hive
① 启动metastore服务
#前台启动 关闭ctrl+c
/export/server/apache-hive-3.1.2-bin/bin/hive --service metastore
#前台启动开启debug日志
/export/server/apache-hive-3.1.2-bin/bin/hive --service metastore --hiveconf hive.root.logger=DEBUG,console
#后台启动 进程挂起 关闭使用jps+ kill -9
nohup /export/server/apache-hive-3.1.2-bin/bin/hive --service metastore &
② 启动hiveserver2服务
nohup /export/server/apache-hive-3.1.2-bin/bin/hive --service hiveserver2 &
#注意 启动hiveserver2需要一定的时间 不要启动之后立即beeline连接 可能连接不上
若有错误与不足请指出,关注DPT一起进步吧!!!