大数据环境搭建-Hadoop与Spark

2022-06-04 17:21:15 浏览数 (1)

前言

本文环境软件版本

名称

版本

JDK

1.8.0_221

Scala

2.12.15

Spark

3.1.3

Hadoop

2.7.7

注意

一定要保证开发环境和部署的环境保持一致!否则运行时会报各种错误。

基础环境配置

https://cloud.tencent.com/developer/article/2015911

Hadoop

官网:https://hadoop.apache.org/releases.html

下载

https://archive.apache.org/dist/hadoop/common/hadoop-2.7.7/

服务器中运行

代码语言:javascript复制
wget https://archive.apache.org/dist/hadoop/common/hadoop-2.7.7/hadoop-2.7.7.tar.gz

或者使用百度云下载

链接:https://pan.baidu.com/s/1OPzD9V_mBnBz06JQ3X5DSA

提取码:psvm

解压

代码语言:javascript复制
tar -zxvf hadoop-2.7.7.tar.gz
mkdir -p /data/tools/bigdata/
mv hadoop-2.7.7 /data/tools/bigdata/
cd /data/tools/bigdata/hadoop-2.7.7

配置环境变量

代码语言:javascript复制
cd /etc/profile.d/

创建配置文件

代码语言:javascript复制
vi /etc/profile.d/my_env.sh

内容设置为

代码语言:javascript复制
#HADOOP_HOME
export HADOOP_HOME=/data/tools/bigdata/hadoop-2.7.7
export PATH=$PATH:$HADOOP_HOME/bin
export PATH=$PATH:$HADOOP_HOME/sbin

配置生效

代码语言:javascript复制
source /etc/profile

查看是否生效

代码语言:javascript复制
echo $HADOOP_HOME

修改配置文件

注意

本文是伪分布式部署

进入配置文件目录

代码语言:javascript复制
cd /data/tools/bigdata/hadoop-2.7.7/etc/hadoop

hadoop-env.sh

将原本的JAVA_HOME 替换为绝对路径就可以了

代码语言:javascript复制
#export JAVA_HOME=${JAVA_HOME}

export JAVA_HOME=/usr/java/jdk1.8.0_221-amd64

注意

虽然系统已经设置JAVA_HOME,但是运行时依旧无法找到,所以配置的绝对路径

core-site.xml

代码语言:javascript复制
<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>

<configuration>
    <property>
        <name>hadoop.tmp.dir</name>
        <value>file:/data/tools/bigdata/hadoop-2.7.7/tmp</value>
        <description></description>
    </property>
    <property>
        <name>fs.defaultFS</name>
        <value>hdfs://master:9000</value>
    </property>
</configuration>

hdfs-site.xml

代码语言:javascript复制
<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>

<configuration>
    <property>
        <name>dfs.replication</name>
        <value>1</value>
    </property>    
    <property>
        <name>dfs.namenode.name.dir</name>
        <value>file:/data/tools/bigdata/zdata/dfs/name</value>
    </property>
    <property>
        <name>dfs.datanode.data.dir</name>
        <value>file:/data/tools/bigdata/zdata/dfs/data</value>
    </property> 
</configuration>

mapred-site.xml

代码语言:javascript复制
<?xml version="1.0"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>

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

yarn-site.xml

代码语言:javascript复制
<?xml version="1.0"?>
<configuration>
  <property> 
    <name>yarn.resourcemanager.hostname</name> 
    <value>master</value> 
  </property>
  <property> 
    <name>yarn.nodemanager.aux-services</name> 
    <value>mapreduce_shuffle</value> 
  </property>
</configuration>

剔除警告(可选):

log4j.properties

添加

代码语言:javascript复制
log4j.logger.org.apache.hadoop.util.NativeCodeLoader=ERROR

启动/停止

代码语言:javascript复制
sudo chmod -R 755 $HADOOP_HOME

rm -rf $HADOOP_HOME/tmp
hdfs namenode -format

这个操作主要是创建fsimage和edits文件。

只要看到信息中有一句关键:

INFO common.Storage: Storage directory /data/tools/bigdata/hadoop-2.7.7/tmp/dfs/name has been successfully formatted. 则格式化成功.

运行

代码语言:javascript复制
sh $HADOOP_HOME/sbin/start-all.sh

输入

代码语言:javascript复制
jps

如图

访问

我的服务器的IP为 192.168.160.130

HDFS监控页面查询:

http://192.168.160.130:50070/

查看文件可以访问这个地址

http://192.168.160.130:50070/explorer.html#/

Yarn监控页面查询:

http://192.168.160.130:8088/cluster

停止

代码语言:javascript复制
sh $HADOOP_HOME/sbin/stop-all.sh

端口说明:

端口

作用

8088

cluster and all applications

50070

Hadoop NameNode

50090

Secondary NameNode

50075

DataNode

停止所有服务

代码语言:javascript复制
sh $HADOOP_HOME/sbin/stop-all.sh

测试

代码语言:javascript复制
mkdir -p /data/hadooptest/input
cd /data/hadooptest/input
vi 1.txt

随便添加一些文本

代码语言:javascript复制
1111
2222
333
333
444
55
55
55

复制文件到hadoop中

代码语言:javascript复制
hadoop fs -mkdir /data/
hadoop fs -mkdir /data/input
hadoop fs -rm -r /data/input/1.txt
hadoop fs -rm -r /data/output
hadoop fs -put /data/hadooptest/input/1.txt /data/input/

测试

代码语言:javascript复制
cd /data/tools/bigdata/hadoop-2.7.7
hadoop jar share/hadoop/mapreduce/hadoop-mapreduce-examples-2.7.7.jar wordcount /data/input/ /data/output
hadoop fs -text /data/output/*

结果

它就把统计给生成了

注册为服务

添加服务

代码语言:javascript复制
cd /etc/init.d
vi hadoop

内容如下:

代码语言:javascript复制
#!/bin/bash
#chkconfig:35 95 1
#description:script to start/stop hadoop
su - root <<!
case $1 in
start)
sh /data/tools/bigdata/hadoop-2.7.7/sbin/start-all.sh
;;
stop)
sh /data/tools/bigdata/hadoop-2.7.7/sbin/stop-all.sh
;;
*)
echo "Usage:$0(start|stop)"
;;
esac
exit
!

注意

路径要使用完整路径,不能使用类似于$HADOOP_HOME/sbin/stop-all.sh的路径。

赋予权限

代码语言:javascript复制
sudo chmod  x hadoop

设置开机启动

代码语言:javascript复制
sudo chkconfig --add hadoop
chkconfig hadoop on

启动服务

代码语言:javascript复制
service hadoop start

查看hadoop服务

代码语言:javascript复制
chkconfig --list hadoop

安装Scala

https://www.scala-lang.org/download/2.12.15.html

链接:https://pan.baidu.com/s/16pVpTWrgg-NAfFXUw1nUQg

提取码:psvm

tgz(推荐)

代码语言:javascript复制
tar zxvf scala-2.12.15.tgz
mkdir -p /data/tools/bigdata/
mv scala-2.12.15 /data/tools/bigdata/
cd /data/tools/bigdata/scala-2.12.15

环境变量

创建配置文件

代码语言:javascript复制
vi /etc/profile.d/my_env.sh

内容设置为

代码语言:javascript复制
# Scala
export SCALA_HOME=/data/tools/bigdata/scala-2.12.15
export PATH=$PATH:$SCALA_HOME/bin

配置生效

代码语言:javascript复制
source /etc/profile

查看是否生效

代码语言:javascript复制
echo $SCALA_HOME

查看安装结果

代码语言:javascript复制
scala -version

rpm

安装

代码语言:javascript复制
chmod 755 scala-2.12.15.rpm
rpm -ivh scala-2.12.15.rpm

查看安装结果

代码语言:javascript复制
scala -version

查看安装位置

代码语言:javascript复制
rpm -ql scala | more

卸载

代码语言:javascript复制
rpm -e scala

Spark

http://archive.apache.org/dist/spark/spark-3.1.3/

下载这个

或者

链接:https://pan.baidu.com/s/1MdyzVWEhef6HheUVcymhcQ

提取码:psvm

解压

解压

代码语言:javascript复制
tar zxvf spark-3.1.3-bin-hadoop2.7.tgz
mkdir -p /data/tools/bigdata/
mv spark-3.1.3-bin-hadoop2.7 /data/tools/bigdata/
cd /data/tools/bigdata/spark-3.1.3-bin-hadoop2.7

进入conf目录,复制并重命名spark-env.sh.templatelog4j.properties.template

代码语言:javascript复制
cd conf/
cp spark-env.sh.template spark-env.sh 
cp log4j.properties.template log4j.properties

配置环境变量

修改环境变量

代码语言:javascript复制
cd /etc/profile.d/

创建配置文件

代码语言:javascript复制
vi /etc/profile.d/my_env.sh

内容设置为

代码语言:javascript复制
# JAVA
export JAVA_HOME=/usr/java/jdk1.8.0_221-amd64
# HADOOP
export HADOOP_HOME=/data/tools/bigdata/hadoop-2.7.7
export HADOOP_CONF_DIR=/data/tools/bigdata/hadoop-2.7.7/etc/hadoop
export PATH=$PATH:$HADOOP_HOME/bin
export PATH=$PATH:$HADOOP_HOME/sbin
# SCALA
export SCALA_HOME=/data/tools/bigdata/scala-2.12.15
# SPARK
export SPARK_HOME=/data/tools/bigdata/spark-3.1.3-bin-hadoop2.7
export SPARK_WORKER_MEMORY=1G
export SPARK_MASTER_IP=master

配置生效

代码语言:javascript复制
source /etc/profile

查看是否生效

代码语言:javascript复制
echo $SPARK_HOME

启动

启动spark

代码语言:javascript复制
cd /data/tools/bigdata/spark-3.1.3-bin-hadoop2.7
./sbin/start-all.sh

查看

代码语言:javascript复制
jps

结果

访问

http://192.168.160.130:8080/

相关端口

  1. Spark Master Web端口号:8080(类比于Hadoop的NameNode Web端口号:9870(50070))
  2. Spark Master内部通信服务端口号:7077 (类比于Hadoop(高版本)的8020(9000)端口)
  3. Spark历史服务器端口号:18080 (类比于Hadoop历史服务器端口号:19888)
  4. Spark查看当前Spark-shell运行任务情况端口号:4040
  5. Hadoop YARN任务运行情况查看端口号:8088

测试

代码语言:javascript复制
./bin/spark-submit --class org.apache.spark.examples.SparkPi --master local[*] ./examples/jars/spark-examples_2.11-2.1.1.jar 100

结果

22/04/18 18:43:22 INFO DAGScheduler: Job 0 finished: reduce at SparkPi.scala:38, took 2.324649 s Pi is roughly 3.141697114169711

注册为服务

添加服务

代码语言:javascript复制
cd /etc/init.d
vi spark

内容如下:

代码语言:javascript复制
#!/bin/bash
#chkconfig:35 95 1
#description:script to start/stop hadoop
su - root <<!
case $1 in
start)
sh /data/tools/bigdata/spark-3.1.3-bin-hadoop2.7/sbin/start-all.sh
;;
stop)
sh /data/tools/bigdata/spark-3.1.3-bin-hadoop2.7/sbin/stop-all.sh
;;
*)
echo "Usage:$0(start|stop)"
;;
esac
exit
!

注意

路径要使用完整路径,不能使用类似于$HADOOP_HOME/sbin/stop-all.sh的路径。

赋予权限

代码语言:javascript复制
sudo chmod  x spark

设置开机启动

代码语言:javascript复制
sudo chkconfig --add spark
chkconfig spark on

启动服务

代码语言:javascript复制
service spark start

查看hadoop服务

代码语言:javascript复制
chkconfig --list spark

0 人点赞