Hadoop-Hive-Spark-离线环境搭建

devtools/2024/10/18 7:48:56/

一、版本描述

apache-hive-2.3.9-bin.tar.gz

hadoop-2.7.0.tar.gz

spark-2.4.0-bin-hadoop2.7.tgz

下载链接:

https://archive.apache.org/dist/spark/spark-2.4.0/spark-2.4.0-bin-hadoop2.7.tgz

https://archive.apache.org/dist/hadoop/common/hadoop-2.7.0/hadoop-2.7.0.tar.gz

https://dlcdn.apache.org/hive/hive-2.3.9/apache-hive-2.3.9-bin.tar.gz

https://archive.apache.org/dist/hadoop/zookeeper/zookeeper-3.3.2/zookeeper-3.3.2.tar.gz

 二、创建安装用户

各个节点都需要执行

useradd hhs

passwd hhs

Apache_20240416

 三、配置域名映射

各个节点都需要执行

vi /etc/hosts

ip1 hostname1

ip2 hostname2

......

ipn hostnamen

四、配置无密钥登录

每个节点切换到 hhs 用户生成密钥

su - hhs

ssh-keygen -t rsa

输入命令后全部回车

执行命令后会在~目录下生成.ssh文件夹,里面包含id_rsa和id_rsa.pub两个文件

cd .ssh

cp id_rsa.pub authorized_keys

依次将authorized_keys 复制到其他节点并把该节点的id_rsa.pub 添加到 authorized_keys

再将包含所有节点的 authorized_keys 放到每个节点的 /home/hhs/.ssh 下

scp authorized_keys hhs@目标hostname:/home/hhs/.ssh

五、关闭防火墙

各个节点使用root用户执行

systemctl status firewalld

systemctl stop firewalld

六、关闭selinux

各个节点使用root用户执行

cat /etc/selinux/config

vi /etc/selinux/config

SELINUX=enforcing 改为 SELINUX=disabled

七、调整操作系统最大数限制

各个节点使用root用户执行(重启生效)

vi /etc/security/limits.conf

* soft nofile 65535
* hard nofile 1024999
* soft nproc 65535
* hard noroc 65535
* soft memlock unlimited
* hard memlock unlimited

如果不修改,计算数据量增大时会报 打开的文件数过多 错误 ,因为linux处处皆文件,所以也会限制socket打开的数量,当各个节点数据传输增大时就会导致整个错暴漏出来

测试

ulimit -a

八、操作系统内核调优-网络部分

各个节点使用root用户执行

vi /etc/sysctl.conf

net.ipv4.ip_local_port_range = 1000 65534
net.ipv4.tcp_fin_timeout=30
net.ipv4.tcp_timestamps=1
net.ipv4.tcp_tw_recycle=1

如果 小文件特别多,错误文件特别多(主要时受损的压缩文件) 这个时候就会报如下错:

23/11/28 17:11:58 WARN hdfs.DFSClient: Failed to connect to /10.183.243.230:9866 for block BP-1901849752-10.183.243.230-1672973682151:blk_1074692119_951295, add to deadNodes and continue.

java.net.BindException: Cannot assign requested address

“Cannot assign requested address.”是由于linux分配的客户端连接端口用尽,无法建立socket连接所致,虽然socket正常关闭,但是端口不是立即释放,而是处于TIME_WAIT状态,默认等待60s后才释放,端口才可以继续使用。在http查询中,需要发送大量的短连接,这样的高并发的场景下,就会出现端口不足,从而抛出Cannot assign requested address的异常。

查看当前linux系统的可分配端口

cat /proc/sys/net/ipv4/ip_local_port_range

32768 60999

当前系统的端口数范围为32768~60999, 所以能分配的端口数为28231。如果我的连接数达到了28231个,就会报如上错误。

1、修改端口范围

vi /etc/sysctl.conf

#1000到65534可供用户程序使用,1000以下为系统保留端口

net.ipv4.ip_local_port_range = 1000 65534

2、配置tcp端口的重用配置,提高端口的回收效率

vi /etc/sysctl.conf

#调低端口释放后的等待时间,默认为60s,修改为15~30s 表示如果套接字由本端要求关闭,这个参数决定了它保持在FIN-WAIT-2状态的时间。

net.ipv4.tcp_fin_timeout=30

#修改tcp/ip协议配置, 通过配置/proc/sys/net/ipv4/tcp_tw_resue, 默认为0,修改为1,释放TIME_WAIT端口给新连接使用

net.ipv4.tcp_timestamps=1

#修改tcp/ip协议配置,快速回收socket资源,默认为0,修改为1 需要开启net.ipv4.tcp_timestamps该参数才有效果

#更不为提到却很重要的一个信息是:当tcp_tw_recycle开启时(tcp_timestamps同时开启,快速回收socket的效果达到),对于位于NAT设备后面的Client来说,是一场灾难——会导到NAT设备后面的Client连接Server不稳定(有的Client能连接server,有的Client不能连接server)。也就是说,tcp_tw_recycle这个功能,是为“内部网络”(网络环境自己可控——不存在NAT的情况)设计的,对于公网,不宜使用。

net.ipv4.tcp_tw_recycle=1

九、安装 JDK 和 Scala

解压

tar -xzvf jdk-8u181-linux-x64.tar.gz

tar -xvzf scala-2.11.12.tgz

配置

vi ~/.bash_profile

#-------------java setting ----------------
export JAVA_HOME=/mnt/software/jdk1.8.0_181
export JRE_HOME=${JAVA_HOME}/jre
export CLASSPATH=.:${JAVA_HOME}/lib:${JRE_HOME}/lib
export PATH=${JAVA_HOME}/bin:$PATH
#-------------scala setting ----------------
export SCALA_HOME=/mnt/software/scala-2.11.12
export PATH=$PATH:$SCALA_HOME/bin

刷新配置

source ~/.bash_profile

验证

java -version

scala -version

十、安装ntp

各个节点使用root用户执行

cd /mnt/software/ntp

rpm -Uvh *.rpm --nodeps --force

配置

vi /etc/ntp.conf

master:

注释掉其他server

填写

server 127.127.1.0 fudge

127.127.1.0 stratum 8

限制从节点ip段信息,可以不配置

restrict 10.243.71.0 mask 255.255.255.0 nomodify notrap

slaver:

server server的hostname或ip prefer

启动、查看状态命令

systemctl status ntpd

systemctl restart ntpd

报错:

/lib64/libcrypto.so.10: version `OPENSSL_1.0.2' not found (required by /usr/sbin/ntpd)

解决

备份原有libcrypto.so.10

mv /usr/lib64/libcrypto.so.10 /usr/lib64/libcrypto.so.10_bak

从其他服务器找到对应的so文件复制到/usr/lib64目录下

cp libcrypto.so.10 /usr/lib64/libcrypto.so.10

手动同步

ntpdate -u ip

查看同步状态

ntpdc -np

ntpstat

十一、安装mysql

解压

tar -xzvf mysql-5.7.11-linux-glibc2.5-x86_64.tar.gz

重命名

mv mysql-5.7.11-linux-glibc2.5-x86_64 /usr/local/mysql

编写配置文件

vi /etc/my.cnf

[mysqld]
bind-address=0.0.0.0
port=3306
user=root
basedir=/usr/local/mysql
datadir=/mnt/data/mysql
socket=/tmp/mysql.sock
#character config
character_set_server=utf8mb4
symbolic-links=0
explicit_defaults_for_timestamp=true

初始化

cd /usr/local/mysql/bin/

./mysqld --defaults-file=/etc/my.cnf --basedir=/usr/local/mysql/ --datadir=/mnt/data/mysql/ --user=root --initialize

记录下临时密码:a9Mhhie*kKo3

移动mysql服务到启动目录

cd /usr/local/mysql/support-files

cp mysql.server /etc/init.d/mysql

chmod +x /etc/init.d/mysql

启动mysql

service mysql start

登录mysql修改密码

/usr/local/mysql/bin/mysql -uroot -p

报错

/usr/local/mysql/bin/mysql: error while loading shared libraries: libncurses.so.5: cannot open shared object file: No such file or directory

/usr/local/mysql/bin/mysql: error while loading shared libraries: libtinfo.so.5: cannot open shared object file: No such file or directory

 复制其他节点上的这两个包到指定目录

cd /mnt/software

cp libtinfo.so.5 /usr/lib64

cp libncurses.so.5 /usr/lib64

登录成功,开始修改密码并建立hive

alter user root@localhost identified by 'hhs#_20240416';
grant all privileges on *.* to 'root'@'%' identified by 'hhs#_20240416' ;
flush privileges;create database hive default character set utf8;
grant all privileges on hive.* to 'hive'@'%' identified by 'hhs#_20240416';
flush privileges;

十二、安装Hadoop

以下操作均使用hhs用户

解压

tar -xzvf hadoop-2.7.0.tar.gz

各个节点创建数据目录

mkdir -p /mnt/data/hadoop/dfs

mkdir -p /mnt/data/hadoop/dfs/name

mkdir -p /mnt/data/hadoop/dfs/data

mkdir -p /mnt/data/hadoop/tmp

1、配置Hadoop守护程序的环境

vi ~/.bash_profile

#------------hadoop setting-----------------
export HADOOP_HOME=/mnt/software/hadoop-2.7.0
export HADOOP_PREFIX=$HADOOP_HOME
export PATH=$PATH:$HADOOP_HOME/sbin:$HADOOP_HOME/bin

刷新配置

source ~/.bash_profile

测试(等配置完拷贝到其他节点一起测试)

hadoop version

配置 hadoop-env.sh

vi /mnt/software/hadoop-2.7.0/etc/hadoop/hadoop-env.sh

配置JAVA_HOME

export JAVA_HOME=/mnt/software/jdk1.8.0_181

2、配置Hadoop相关配置文件

配置 core-site.xml

vi /mnt/software/hadoop-2.7.0/etc/hadoop/core-site.xml

<configuration><property><name>fs.defaultFS</name><value>hdfs://hdfs的namenode节点域名:8020</value></property><property><name>hadoop.tmp.dir</name><value>/mnt/data/hadoop/tmp</value></property>
</configuration>

配置 hdfs-site.xml

vi /mnt/software/hadoop-2.7.0/etc/hadoop/hdfs-site.xml

<configuration><property><name>dfs.replication</name><value>3</value></property><property><name>dfs.namenode.name.dir</name><value>/mnt/data/hadoop/dfs/name</value></property><property><name>dfs.datanode.data.dir</name><value>/mnt/data/hadoop/dfs/data</value></property>
</configuration>

配置 yarn-site.xml

vi /mnt/software/hadoop-2.7.0/etc/hadoop/yarn-site.xml

<configuration><property><name>yarn.nodemanager.aux-services</name><value>mapreduce_shuffle</value></property><property><name>yarn.log-aggregation-enable</name><value>true</value></property><property><name>yarn.resourcemanager.hostname</name><value>resourcemanager节点域名</value></property><property><name>yarn.resourcemanager.address</name><value>${yarn.resourcemanager.hostname}:8032</value></property><property><name>yarn.resourcemanager.scheduler.address</name><value>${yarn.resourcemanager.hostname}:8030</value></property><property><name>yarn.resourcemanager.webapp.address</name><value>${yarn.resourcemanager.hostname}:8088</value></property><property><name>yarn.resourcemanager.webapp.https.address</name><value>${yarn.resourcemanager.hostname}:8090</value></property><property><name>yarn.resourcemanager.resource-tracker.address</name><value>${yarn.resourcemanager.hostname}:8031</value></property><property><name>yarn.resourcemanager.admin.address</name><value>${yarn.resourcemanager.hostname}:8033</value></property><property><name>yarn.nodemanager.aux-services.mapreduce.shuffle.class</name><value>org.apache.hadoop.mapred.ShuffleHandler</value></property><property><name>yarn.nodemanager.resource.memory-mb</name><value>2048</value></property><property><name>yarn.scheduler.minimum-allocation-mb</name><value>1024</value></property><property><name>yarn.scheduler.maximum-allocation-mb</name><value>30720</value></property></configuration>

配置 mapred-site.xml

cd /mnt/software/hadoop-2.7.0/etc/hadoop

cp mapred-site.xml.template mapred-site.xml

vi mapred-site.xml

<configuration><property><name>mapreduce.framework.name</name><value>yarn</value></property>
</configuration>

配置 slaves

vi slaves (写上所有节点的hostname)

3、分发的其他节点

cd /mnt/software

scp -r hadoop-2.7.0 hhs@其他节点域名:/mnt/software

4、格式化NameNode

cd /mnt/software/hadoop-2.7.0/bin

hdfs namenode -format

5、启动Hadoop集群

cd /mnt/software/hadoop-2.7.0/sbin

./start-all.sh

用jps在各个节点查看启动的进程,如果发现没有启动的角色也可以单独启动,如:

/mnt/software/hadoop-2.7.0/sbin/yarn-daemon.sh start resourcemanager

/mnt/software/hadoop-2.7.0/sbin/yarn-daemon.sh start nodemanager

/mnt/software/hadoop-2.7.0/sbin/hadoop-daemon.sh stop datanode

6、测试

1、输入数据制作并上传


vi file01.txt

Hello World Bye World

vi file02.txt

Hello Hadoop Goodbye Hadoop

hadoop fs -mkdir -p /user/hhs/input

hadoop fs -put file*.txt /user/hhs/input/

2、运行作业

cd /mnt/software/hadoop-2.7.0/share/hadoop/mapreduce

hadoop jar hadoop-mapreduce-examples-2.7.0.jar wordcount /user/hhs/input /user/hhs/output

3、结果查看
hadoop fs -cat /user/hhs/output/*

十三、安装Hive

解压

tar -xzvf apache-hive-2.3.9-bin.tar.gz

1、配置环境变量

hhs用户在各个节点操作

vi ~/.bash_profile

#------------hive setting-----------------
export HIVE_HOME=/mnt/software/apache-hive-2.3.9-bin
export PATH=$PATH:$HIVE_HOME/bin

2、创建所需目录

mkdir -p /mnt/data/hive/tmp

3、配置Hive

cd /mnt/software/apache-hive-2.3.9-bin/conf

cp hive-env.sh.template hive-env.sh

cp hive-log4j2.properties.template hive-log4j2.properties

cp hive-exec-log4j2.properties.template hive-exec-log4j2.properties

cp hive-default.xml.template hive-site.xml

配置 hive-env.sh

vi hive-env.sh

HADOOP_HOME=/mnt/software/hadoop-2.7.0
export HIVE_CONF_DIR=/mnt/software/apache-hive-2.3.9-bin/conf
export HIVE_AUX_JARS_PATH=/mnt/software/apache-hive-2.3.9-bin/lib

配置 hive-site.xml

vi hive-site.xml

修改下面name对应的属性值

<name>javax.jdo.option.ConnectionURL</name>
<value>jdbc:mysql://mysql所在节点域名:3306/hive?useSSL=false</value>

<name>javax.jdo.option.ConnectionDriverName</name>
<value>com.mysql.jdbc.Driver</value>

<name>javax.jdo.option.ConnectionUserName</name>
<value>hive</value>

 <name>javax.jdo.option.ConnectionPassword</name>
<value>hhs#_20240416</value>

<name>hive.metastore.schema.verification</name>
<value>false</value>

 将hive-site.xml 中的 添加 system:java.io.tmpdir 和 system:user.name

  <property>
          <name>system:java.io.tmpdir</name>
          <value>/mnt/data/hive/tmp</value>
  </property>
  <property>
          <name>system:user.name</name>
          <value>hhs</value>
  </property>

将MySQL的数据库连接工具包添加到Hive的“lib”目录下

cd /mnt/software

cp mysql-connector-java-5.1.47.jar /mnt/software/apache-hive-2.3.9-bin/lib

备份 hive中$HIVE_HOME/lib下面的log4j-slf4j-impl-*.jar包 到上级目录

cd /mnt/software/apache-hive-2.3.9-bin/lib

mv log4j-slf4j-impl-2.6.2.jar ..

4、分发

cd /mnt/software

scp -r apache-hive-2.3.9-bin hhs@其他节点域名:/mnt/software

5、Hive初始化

cd /mnt/software/apache-hive-2.3.9-bin/bin

./schematool -initSchema -dbType mysql        

mysql中的hive库也有了对应的表和数据

6、测试登录

如果有报错或者卡住的现象,可以使用下面的命令打出日志查看错误

hive -hiveconf hive.root.logger=debug,console

将配置好的整个hive目录分发到其他节点 (即:/mnt/software/apache-hive-2.3.9-bin)

scp -r apache-hive-2.3.9-bin hhs@节点2域名:/mnt/software
scp -r apache-hive-2.3.9-bin hhs@节点3域名:/mnt/software
......

十四、安装Spark

解压

cd /mnt/software

tar -xzvf spark-2.4.0-bin-hadoop2.7.tgz

1、配置环境变量

vi ~/.bash_profile

#------------spark setting-----------------
export SPARK_HOME=/mnt/software/spark-2.4.0-bin-hadoop2.7
export PATH=$PATH:$SPARK_HOME/bin

刷新

source ~/.bash_profile

验证

echo $SPARK_HOME

2、配置Spark

cd /mnt/software/spark-2.4.0-bin-hadoop2.7/conf

cp slaves.template slaves

cp spark-env.sh.template spark-env.sh

配置slaves

将所有的节点域名都写进去(Spark 会将在列出的每台机器上启动Spark Worker)

配置spark-env.sh

export JAVA_HOME=/mnt/software/jdk1.8.0_181
export HADOOP_HOME=/mnt/software/hadoop-2.7.0
export HADOOP_CONF_DIR=/mnt/software/hadoop-2.7.0/etc/hadoop
export HIVE_HOME=/mnt/software/apache-hive-2.3.9-bin
export HIVE_CONF_DIR=/mnt/software/apache-hive-2.3.9-bin/conf
export SCALA_HOME=/mnt/software/scala-2.11.12
export SPARK_MASTER_IP=你所选择的master域名或者ip
export SPARK_MASTER_PORT=7077
export SPARK_MASTER_WEBUI_PORT=8081

3、分发

cd /mnt/software

scp -r spark-2.4.0-bin-hadoop2.7 hhs@其他节点域名:/mnt/software

4、启动

cd /mnt/software/spark-2.4.0-bin-hadoop2.7/sbin

./start-all.sh
哪个节点执行的./start-all.sh 哪个节点就是master

5、测试

spark-shell


http://www.ppmy.cn/devtools/23422.html

相关文章

STM32使用PWM控制舵机

系列文章目录 STM32单片机系列专栏 C语言术语和结构总结专栏 文章目录 1. 舵机简介 2. 硬件连接 3. 代码实现 3.1 PWM.c 3.2 PWM.h 3.3 Servo.c 3.4 Servo.h 3.5 main.c 3.6 完整工程文件 PWM和OC输出详解&#xff1a; STM32定时器的OC比较和PWM​​​​​​​ 1. …

如果把软路由的网段更换成169.254.0.0/16会咋样?

前言 这几天有小伙伴在折腾软路由系统&#xff0c;然后问题就来了。 他咨询的是&#xff1a;为啥电脑连接软路由之后&#xff0c;无法访问软路由的管理页&#xff1f; 嗯。。。确实不是什么大事。但不注意看&#xff0c;还以为软路由没有正常获取到ip。 熟悉网络的小伙伴们都…

汕头联想 ibm x3500 M5服务器上门维修记录

汕头联想服务器现场检修&#xff1b;汕尾IBM服务器故障维修&#xff1b;揭阳戴尔服务器维修&#xff1b;汕头ERP服务器维修&#xff1b;潮阳地区各种服务器故障维修&#xff1b;各类服务器主板齐全&#xff1b; 分享一例从东莞到汕头某染料厂维修ibm system x3500 M5服务器的真…

LLaMA Factory多卡微调的实战教程

大家好,我是herosunly。985院校硕士毕业,现担任算法研究员一职,热衷于机器学习算法研究与应用。曾获得阿里云天池比赛第一名,CCF比赛第二名,科大讯飞比赛第三名。拥有多项发明专利。对机器学习和深度学习拥有自己独到的见解。曾经辅导过若干个非计算机专业的学生进入到算法…

深入浅出MySQL-05-【OPTIMIZE TABLE】

文章目录 1.用途2.如何使用3.注意事项4.查看表的碎片化程度5.替代方案6.性能影响 OPTIMIZE TABLE 是 MySQL 中的一个命令&#xff0c;用于优化表的存储。当 MySQL 表的存储空间由于删除或更新操作而变得不连续时&#xff0c;OPTIMIZE TABLE 可以帮助重新组织表数据和索引&#…

基于Springboot的火车订票管理系统

基于SpringbootVue的火车订票管理系统的设计与实现 开发语言&#xff1a;Java数据库&#xff1a;MySQL技术&#xff1a;SpringbootMybatis工具&#xff1a;IDEA、Maven、Navicat 系统展示 用户登录 首页 车次信息 火车资讯 后台登录 用户管理 车型信息管理 车次信息管理 购票…

计算机常识 | 快速格式化、擦除格式化、覆盖格式化 | 直连电脑可相互ping通

文章目录 一、快速格式化、擦除格式化、覆盖格式化二、两台没有联网的设备通过网线直接相连能够相互ping通的原因 一、快速格式化、擦除格式化、覆盖格式化 快速格式化、擦除格式化和覆盖格式化是针对计算机存储设备&#xff08;如硬盘驱动器或固态硬盘&#xff09;上数据删除和…

java spring cloud 企业电子招标采购系统源码:营造全面规范安全的电子招投标环境,促进招投标市场健康可持续发展

项目说明 随着公司的快速发展&#xff0c;企业人员和经营规模不断壮大&#xff0c;公司对内部招采管理的提升提出了更高的要求。在企业里建立一个公平、公开、公正的采购环境&#xff0c;最大限度控制采购成本至关重要。符合国家电子招投标法律法规及相关规范&#xff0c;以及审…