spark环境,hadoop集群搭建

spark环境,hadoop集群搭建

环境准备

因为Ubuntu服务器在国外,可能国内访问下载速度较慢,因此可以换成阿里源,通过以下命令对源进行更换

阿里源地址:http://mirrors.aliyun.com/ubuntu/dists/

在这里插入图片描述

查看当前系统的代号

lsb_release -a

在这里插入图片描述

# 1、备份原来的源
cp -ra /etc/apt/sources.list /etc/apt/sources.list.bak
# 2、修改/etc/apt/sources.list文件,可将原来的内容删除或注释
deb http://mirrors.aliyun.com/ubuntu/ focal main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ focal main restricted universe multiverse

deb http://mirrors.aliyun.com/ubuntu/ focal-security main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ focal-security main restricted universe multiverse

deb http://mirrors.aliyun.com/ubuntu/ focal-updates main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ focal-updates main restricted universe multiverse

deb http://mirrors.aliyun.com/ubuntu/ focal-proposed main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ focal-proposed main restricted universe multiverse

deb http://mirrors.aliyun.com/ubuntu/ focal-backports main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ focal-backports main restricted universe multiverse

# 3、更新缓存并升级
sudo apt-get update
sudo apt-get upgrade

1、安装maven

在 Ubuntu 使用apt安装 Maven 非常简单直接。

升级软件包索引,并且输入下面的命令,安装 Maven:

sudo apt update
sudo apt install maven

想要验证安装是否成功,运行mvn -version

mvn -version

在这里插入图片描述

安装maven时如果没有jdk默认会把jdk也安装了。

2、安装Java

如果java没有安装,则可以通过以下命令进行安装:

(1) 查找合适的openjdk版本:

apt-cache search openjdk

在这里插入图片描述

(2)安装自己想要的jdk版本

sudo apt-get install openjdk-8-jdk

配置JAVA_HOME环境变量

vim ~/.bashrc
JAVA_HOME=/usr/lib/jvm/java-11-openjdk-amd64
export JRE_HOME=$JAVA_HOME/jre
export CLASSPATH=.:$JAVA_HOME/lib:$JRE_HOME/lib
export PATH=.:$JAVA_HOME/bin:$PATH

然后使环境变量生效

source ~/.bashrc

输入java进行测试

在这里插入图片描述

3、安装配置python

(1) 安装依赖包

$ sudo apt-get update
$ sudo apt-get install software-properties-common

(2) 添加 deadsnakes PPA 源

$ sudo add-apt-repository ppa:deadsnakes/ppa

Press [ENTER] to continue or Ctrl-c to cancel adding it.

(3) 安装 python 3.8

$ sudo apt-get update
$ sudo apt-get install python3.8

$ python3.8 -V
Python 3.8.2

或者下载python3.8压缩包解压安装即可亦或是通过wget获取压缩包解压安装

wget https://www.python.org/ftp/python/3.8.1/Python-3.8.1.tar.xz

4、安装配置SSH

集群、单节点模式都需要用到 SSH 登陆(类似于远程登陆,你可以登录某台 Linux 主机,并且在上面运行命令),Ubuntu 默认已安装了 SSH client,此外还需要安装 SSH server:

sudo apt-get install openssh-server

Shell 命令

安装后,可以使用如下命令登陆本机:

ssh localhost

Shell 命令

此时会有如下提示(SSH首次登陆提示),输入 yes 。然后按提示输入密码 hadoop,这样就登陆到本机了。

SSH首次登陆提示

配置SSH

利用 ssh-keygen 生成密钥,并将密钥加入到授权中:

cd ~/.ssh/                     # 若没有该目录,请先执行一次ssh localhost
ssh-keygen -t rsa              # 会有提示,都按回车就可以
cat ./id_rsa.pub >> ./authorized_keys  # 加入授权

5、安装hadoop

下载Hadoop压缩包

# 通过wget命令下载Hadoop压缩包
wget https://mirrors.tuna.tsinghua.edu.cn/apache/hadoop/common/hadoop-2.10.1/hadoop-2.10.1.tar.gz
# 通过tar -zxvf 对压缩包进行解压
tar -zxvf hadoop-2.10.1.tar.gz

在这里插入图片描述

配置hadoop要修改环境变量

vim ~/.bashrc
export HADOOP_HOME=/usr/local/Hadoop-2.10.1
export CLASSPATH=.:{JAVA_HOME}/lib:${HADOOP_HOME}/sbin:$PATH
export PATH=.:${HADOOP_HOME}/bin:${HADOOP_HOME}/sbin:$PATH

接着要配置一下hadoop的JAVA_HOME路径

# 首先切换到配置文件的路径所在
cd /home/hadoop//hadoop-2.10.1/etc/hadoop/
# 编辑修改配置文件
export JAVA_HOME=/usr/lib/jvm/java-11-openjdk-amd64

在这里插入图片描述

然后保存退出即可。

在hadoop根目录下运行命令检查hadoop版本及是否安装成功

./bin/hadoop version

在这里插入图片描述

6、hadoop伪分布式搭建

Hadoop 可以在单节点上以伪分布式的方式运行,Hadoop 进程以分离的 Java 进程来运行,节点既作为 NameNode 也作为 DataNode,同时,读取的是 HDFS 中的文件。

Hadoop 的配置文件位于 /usr/local/hadoop/etc/hadoop/ 中,伪分布式需要修改2个配置文件 core-site.xmlhdfs-site.xml 。Hadoop的配置文件是 xml 格式,每个配置以声明 property 的 name 和 value 的方式来实现。

修改配置文件 core-site.xml (通过 gedit 编辑会比较方便: gedit ./etc/hadoop/core-site.xml),将当中的

<configuration>
</configuration>
<configuration>
    <property>
        <name>hadoop.tmp.dir</name>
        <value>file:/home/hadoop/hadoop-2.10.1/tmp</value>
        <description>Abase for other temporary directories.</description>
    </property>
    <property>
        <name>fs.defaultFS</name>
        <value>hdfs://localhost:9000</value>
    </property>
</configuration>

同样的,修改配置文件 hdfs-site.xml

<configuration>
    <property>
        <name>dfs.replication</name>
        <value>1</value>
    </property>
    <property>
        <name>dfs.namenode.name.dir</name>
        <value>file:/home/hadoop/hadoop-2.10.1/tmp/dfs/name</value>
    </property>
    <property>
        <name>dfs.datanode.data.dir</name>
        <value>file:/home/hadoop/hadoop-2.10.1/tmp/dfs/data</value>
    </property>
</configuration>

配置完成后,执行 NameNode 的格式化:

cd /usr/local/hadoop
./bin/hdfs namenode -format

在这里插入图片描述

接着开启 NameNode 和 DataNode 守护进程。

cd /usr/local/hadoop
./sbin/start-dfs.sh  #start-dfs.sh是个完整的可执行文件,中间没有空格

在这里插入图片描述

启动完成后,可以通过命令 jps 来判断是否成功启动,

在这里插入图片描述

成功启动后,可以访问 Web 界面 http://localhost:50070 查看 NameNode 和 Datanode 信息,还可以在线查看 HDFS 中的文件。

在这里插入图片描述

7、安装配置Spark

下载Spark包

下载地址:https://download.csdn.net/download/EngineerofAI/19854667

配置环境

sudo vim /etc/profile
# 添加
SPARK_HOME=/home/wangsiyao/spark

在这里插入图片描述

配置完成后,再通过bin目录下的pyspark进行启动,看是否出现异常

./pyspark

在这里插入图片描述

pyspark启动成功,无异常。

8、搭建hadoop集群

集群/分布式模式需要修改 /usr/local/hadoop/etc/hadoop 中的5个配置文件,更多设置项可点击查看官方说明,这里仅设置了正常启动所必须的设置项: slaves、core-site.xmlhdfs-site.xmlmapred-site.xmlyarn-site.xml

1, 文件 slaves,将作为 DataNode 的主机名写入该文件,每行一个,默认为 localhost,所以在伪分布式配置时,节点即作为 NameNode 也作为 DataNode。分布式配置可以保留 localhost,也可以删掉,让 Master 节点仅作为 NameNode 使用。

本教程让 Master 节点仅作为 NameNode 使用,因此将文件中原来的 localhost 删除,只添加一行内容:Slave1。

2, 文件 core-site.xml 改为下面的配置:

<configuration>     
    <property>      
        <name>fs.defaultFS</name>     
        <value>hdfs://Master:9000</value>   
    </property>     
    <property>             
        <name>hadoop.tmp.dir</name>     
        <value>file:/usr/local/hadoop/tmp</value>   
        <description>Abase for other temporary directories.</description>   
    </property>
</configuration>

XML

3, 文件 hdfs-site.xml,dfs.replication 一般设为 3,但我们只有一个 Slave 节点,所以 dfs.replication 的值还是设为 1:

<configuration>      
    <property>             
        <name>dfs.namenode.secondary.http-address</name>      
        <value>Master:50090</value>     
    </property>     
    <property>         
        <name>dfs.replication</name>   
        <value>1</value>     
    </property>   
    <property>         
        <name>dfs.namenode.name.dir</name>    
        <value>file:/usr/local/hadoop/tmp/dfs/name</value>    
    </property>   
    <property>        
        <name>dfs.datanode.data.dir</name>          
        <value>file:/usr/local/hadoop/tmp/dfs/data</value>    
    </property>
</configuration>

XML

4, 文件 mapred-site.xml (可能需要先重命名,默认文件名为 mapred-site.xml.template),然后配置修改如下:

<configuration>       
    <property>              
        <name>mapreduce.framework.name</name>  
        <value>yarn</value>      
    </property>     
    <property>           
        <name>mapreduce.jobhistory.address</name>       
        <value>Master:10020</value>    
    </property>     
    <property>            
        <name>mapreduce.jobhistory.webapp.address</name>     
        <value>Master:19888</value>   
    </property>
</configuration>

XML

5, 文件 yarn-site.xml

<configuration>      
    <property>             
        <name>yarn.resourcemanager.hostname</name>      
        <value>Master</value>     
    </property>   
    <property>             
        <name>yarn.nodemanager.aux-services</name>        
        <value>mapreduce_shuffle</value>   
    </property>
</configuration>

XML

配置好后,将 Master 上的 /usr/local/Hadoop 文件夹复制到各个节点上。因为之前有跑过伪分布式模式,建议在切换到集群模式前先删除之前的临时文件。在 Master 节点上执行:

cd /usr/localsudo rm -r ./hadoop/tmp     # 删除 Hadoop 临时文件sudo rm -r ./hadoop/logs/*   # 删除日志文件tar -zcf ~/hadoop.master.tar.gz ./hadoop   # 先压缩再复制cd ~scp ./hadoop.master.tar.gz Slave1:/home/hadoop

Shell 命令

在 Slave1 节点上执行:

sudo rm -r /usr/local/hadoop    # 删掉旧的(如果存在)sudo tar -zxf ~/hadoop.master.tar.gz -C /usr/localsudo chown -R hadoop /usr/local/hadoop

Shell 命令

同样,如果有其他 Slave 节点,也要执行将 hadoop.master.tar.gz 传输到 Slave 节点、在 Slave 节点解压文件的操作。

首次启动需要先在 Master 节点执行 NameNode 的格式化:

hdfs namenode -format       # 首次运行需要执行初始化,之后不需要

Shell 命令

CentOS系统需要关闭防火墙

CentOS系统默认开启了防火墙,在开启 Hadoop 集群之前,需要关闭集群中每个节点的防火墙。有防火墙会导致 ping 得通但 telnet 端口不通,从而导致 DataNode 启动了,但 Live datanodes 为 0 的情况。

在 CentOS 6.x 中,可以通过如下命令关闭防火墙:

sudo service iptables stop   # 关闭防火墙服务sudo chkconfig iptables off  # 禁止防火墙开机自启,就不用手动关闭了

Shell 命令

若用是 CentOS 7,需通过如下命令关闭(防火墙服务改成了 firewall):

systemctl stop firewalld.service    # 关闭firewallsystemctl disable firewalld.service # 禁止firewall开机启动

Shell 命令

如下图,是在 CentOS 6.x 中关闭防火墙:

在这里插入图片描述

CentOS6.x系统关闭防火墙

接着可以启动 hadoop 了,启动需要在 Master 节点上进行:

start-dfs.shstart-yarn.shmr-jobhistory-daemon.sh start historyserver

Shell 命令

start-dfs.sh
start-yarn.sh
mr-jobhistory-daemon.sh start historyserver

通过命令 jps 可以查看各个节点所启动的进程。正确的话,在 Master 节点上可以看到 NameNode、ResourceManager、SecondrryNameNode、JobHistoryServer 进程,如下图所示:

在这里插入图片描述

在 Slave 节点可以看到 DataNode 和 NodeManager 进程,如下图所示:

在这里插入图片描述

缺少任一进程都表示出错。另外还需要在 Master 节点上通过命令 hdfs dfsadmin -report 查看 DataNode 是否正常启动,如果 Live datanodes 不为 0 ,则说明集群启动成功。例如我这边一共有 1 个 Datanodes:

在这里插入图片描述

也可以通过 Web 页面看到查看 DataNode 和 NameNode 的状态:http://master:50070/。如果不成功,可以通过启动日志排查原因。

伪分布式、分布式配置切换时的注意事项

1, 从分布式切换到伪分布式时,不要忘记修改 slaves 配置文件;
2, 在两者之间切换时,若遇到无法正常启动的情况,可以删除所涉及节点的临时文件夹,这样虽然之前的数据会被删掉,但能保证集群正确启动。所以如果集群以前能启动,但后来启动不了,特别是 DataNode 无法启动,不妨试着删除所有节点(包括 Slave 节点)上的 /usr/local/hadoop/tmp 文件夹,再重新执行一次 hdfs namenode -format,再次启动试试。

9、执行分布式实例

执行分布式实例过程与伪分布式模式一样,首先创建 HDFS 上的用户目录:

hdfs dfs -mkdir -p /user/hadoop

Shell 命令

将 /usr/local/hadoop/etc/hadoop 中的配置文件作为输入文件复制到分布式文件系统中:

hdfs dfs -mkdir inputhdfs dfs -put /usr/local/hadoop/etc/hadoop/*.xml input

Shell 命令

通过查看 DataNode 的状态(占用大小有改变),输入文件确实复制到了 DataNode 中,如下图所示:

通过Web页面查看DataNode的状态通过Web页面查看DataNode的状态

接着就可以运行 MapReduce 作业了:

hadoop jar /usr/local/hadoop/share/hadoop/mapreduce/hadoop-mapreduce-examples-*.jar grep input output 'dfs[a-z.]+'

Shell 命令

运行时的输出信息与伪分布式类似,会显示 Job 的进度。

可能会有点慢,但如果迟迟没有进度,比如 5 分钟都没看到进度,那不妨重启 Hadoop 再试试。若重启还不行,则很有可能是内存不足引起,建议增大虚拟机的内存,或者通过更改 YARN 的内存配置解决。

在这里插入图片描述

同样可以通过 Web 界面查看任务进度 http://master:8088/cluster,在 Web 界面点击 “Tracking UI” 这一列的 History 连接,可以看到任务的运行信息,如下图所示:

在这里插入图片描述

执行完毕后的输出结果:

在这里插入图片描述

关闭 Hadoop 集群也是在 Master 节点上执行的:

stop-yarn.shstop-dfs.shmr-jobhistory-daemon.sh stop historyserver

Shell 命令

此外,同伪分布式一样,也可以不启动 YARN,但要记得改掉 mapred-site.xml 的文件名。

至此,Hadoop集群搭建完成,通过测试实例可以验证Hadoop集群是否安装成功。

Reference

厦门大学大数据实验室http://dblab.xmu.edu.cn/blog/install-hadoop-cluster/

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小枫学IT

如果觉得有用的话,可以支持一下

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值