Bootstrap

24年某马最新大数据相关软件安装文档

文章目录

需要安装包软件—>关注+私信

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&amp;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一起进步吧!!!

悦读

道可道,非常道;名可名,非常名。 无名,天地之始,有名,万物之母。 故常无欲,以观其妙,常有欲,以观其徼。 此两者,同出而异名,同谓之玄,玄之又玄,众妙之门。

;