avatar

目录
hadoop+spark配置

首先需要Linux系统,本次安装以Ubuntu为例

  • 用到的软件,安装包版本为:

    nanortual box6.0.2

    hadoop-2.7.7.tar.gz
    jdk-8u221-linux-x64.tar.gz
    scala-2.13.1.tgz
    spark-2.4.4-bin-without-hadoop.tgz

    版本略有不同详情请下载官网推荐搭配,也可以去各大镜像站下载

更换Ubuntu软件源

由于Ubuntu软件源在国外,这里更换阿里云镜像源

最小化安装Ubuntu和nanortual box安装增强功能需要,若不在意,可忽略

1.备份

bash
1
sudo cp /etc/apt/source.list /etc/apa/source.list.bak

2.编辑

bash
1
sudo nano /etc/apt/source.list

3.修改内容

bash
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
deb http://mirrors.aliyun.com/ubuntu/ bionic main restricted universe multiverse

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

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

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

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

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

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

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

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

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

4.软件更新

bash
1
sudo apt-get update

5.更新软件包

bash
1
sudo apt-get upgrade

hadoop的安装

​ 准备好安装包,如果是在Ubuntu直接下载的可直接开始下一步,若是在Windows上下载,请用xftp上传至Ubuntu你自己的目录,这里我们上传至用户根目录

并且已经配置好ssh免密登录

开始安装

jdk安装

解压安装包到~目录下

bash
1
tar -zxvf jdk-8u221-linux-x64.tar.gz
  • JDK 环境变量(推荐复制一份 .bashrc文件备份)
bash
1
2
sudo cp ~/.bashrc ~/.bashrc.bat          #备份
nano ~/.bashrc #打开文件

​ 内容的末尾添加如下代码(注意:等号两侧不要有空格)

bash
1
2
3
4
export JAVA_HOME=~/jdk的根目录
export JRE_HOME=${JAVA_HOME}/jre
export CLASSPATH=$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar:.
export PATH=${JAVA_HOME}/bin:$PATH
  • 重置生效
bash
1
source ~/.bashrc
  • 检验是否安装成功
bash
1
java –version

​ 出现版本信息则安装成功

hadoop安装
Code
1
tar -zxvf hadoop-2.7.7.tar.gz

​ 设置环境变量

Code
1
nano ~/.bashrc

​ 在打开文件的末尾添加以下两行代码,保存并退出。

bash
1
2
3
export HADOOP_HOME=~/hadoop 

export PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin

​ 使配置生效。

bash
1
source ~/.bashrc
  • 验证 Hadoop 环境变量配置是否正确的方法如下
bash
1
2
3
4
5
6
7
8
9
whereis hdfs 

hdfs: /home/hadoop/hadoop-2.7.3/bin/hdfs /home/hadoop/hadoop-2.7.3/bin/hdfs.cmd

whereis start-all.sh

start-all: /home/hadoop/hadoop-2.7.3/sbin/start-all.sh /home/hadoop/hadoop-2.7.3/

sbin/start-all.cmd

​ 修改主机名 (也可以不用更改,但一定记得查看主机名,并记住)

  • 查看 Ubuntu 操作系统的主机名,参考下面的命令。
bash
1
hostname
  • 用 nano 命令编辑/etc/hostname 文件。
bash
1
sudo nano /etc/hostname

主机名自行修改

  • 重启 Ubuntu 操作系统,使修改生效。
bash
1
sudo reboot

​ 在文件末尾添加一下内容,下面的 IP 地址根据实际的 IP 地址修改。

​ 通过以下查询当前主机的IP地址

bash
1
ifconfig
  • 将你查询到的IP地址添加入hosts(最好不要用10.0.0.15 注意切换虚拟机的网络设置,用桥接网卡,其他的另行尝试)

    修改/etc/hosts 文件。

bash
1
nano /etc/hosts

添加的内容为:

你的IP地址(刚刚通过ifconfig查询的地址) 你的主机名

  • 进入 Hadoop 配置文件所在目录。
bash
1
cd ${HADOOP_HOME}/etc/hadoop
  • 配置 hadoop-env.sh

添加 JAVA_HOME=你的jdk目录

  • 配置 core-site.xml

    主要内容为configuration标签里的内容

用 nano 命令打开 core-site.xml。

bash
1
nano core-site.xml
  • 参考以下内容进行修改,修改完保存退出
xml
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
<?xml version="1.0" encoding="UTF-8"?> 

<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>

<configuration>

<property>

<name>fs.defaultFS</name>

<value>hdfs://你的主机名:8020</value>

<!-- 以上 ip 地址或主机名要按实际情况修改 -->

</property>

<property>

<name>hadoop.tmp.dir</name>

<value>/home/hadoop/hadoop/tmp</value>

</property>

</configuration>

配置说明:

fs.defaultFS 属性指定默认文件系统的 URI 地址,一般格式为“hdfs://host:port”。其中,host

可以设置为 Ubuntu 操作系统的 IP 地址以及主机名称中的任意一个,这里设置为主机名;port 如

果不配置,则使用默认端口号 8020。

hadoop.tmp.dir 指定 Hadoop 的临时工作目录,设置为/home/<用户名>/hadoop/tmp,<用户名>

请根据实际情况修改。注意:一定要配置 hadoop.tmp.dir,否则默认的 tmp 目录在/tmp 下,重启

Ubuntu 操作系统时 tmp 目录下的 dfs/name 文件夹会被删除,造成没有 NameNode。

  • 配置 hdfs-site.xml

用 nano 命令打开 hdfs-site.xml。

bash
1
nano hdfs-site.xml

修改成以下内容,保存退出。

xml
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
<?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>

</configuration>

dfs.replication 的默认值是 3,因为伪分布式只有一个节点,所以值设置为 1。

  • 配置 mapred-site.xml

复制 mapred-site.xml.template,生成 mapred-site.xml。

bash
1
cp mapred-site.xml.template mapred-site.xml

用 nano 命令打开 mapred-site.xml。

bash
1
nano mapred-site.xml

修改成以下内容,保存退出。

xml
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
<?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

​ 用 nano 命令打开 yarn-site.xml。

bash
1
nano yarn-site.xml

修改成以下内容,保存退出。

xml
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
<?xml version="1.0"?> 

<configuration>

<property>

<name>yarn.resourcemanager.hostname</name>

<value>最好用IP地址防止意外</value>

<!-- 以上主机名或 IP 地址按实际情况修改 -->

</property>

<property>

<name>yarn.nodemanager.aux-sernanoces</name>

<value>mapreduce_shuffle</value>

</property>

</configuration>
  • 格式化 HDFS

​ 格式化的过程是创建初始目录和文件系统结构的过程。执行以下命令格式化 HDFS。

bash
1
hdfs namenode -format

注意:格式化只需进行一次,下次启动不要再次格式化,否则会少 DataNode 进程。

  • 启动hadoop
bash
1
2
start-all.sh                               #启动
stop-all.sh #关闭

查看jps

bash
1
jps

有以下内容则考虑下一步

bash
1
2
3
4
5
6
7
8
9
NameNode 

DataNode

SecondaryNameNode

ResourceManager

NodeManager

​ 如果某个主机少了某个进程,应该到相应主机去找对应的 log 查看原因,log 存放在 ${HADOOP_HOME}/logs 目录下。例如,若少了 DataNode 进程,那么就切换到${HADOOP_ HOME}/logs 目录下,查看 DataNode 相关的 log,找到含有“WARN”“Error”“Exception”等的 关键字句,通过上网搜索关键字句找到解决问题的办法。

  • 查看网页

虚拟机查看:

localhost:8088 localhost:50070

成功打开则配置完成

spark配置

scala安装

  • 解压Scala的安装包,解压命令:
bash
1
tar -zvxf scala-2.13.1.tgz
  • 重新执行命令:
bash
1
source ~/.bashrc
  • 配置环境变量,在 ~/.bashrc文件中添加如下内容:
bash
1
nano ~/.bashrc
  • 打开后添加

​ export SCALA_HOME=scala的目录 # 配置SCALA_HOME
​ export PATH=$PATH:$SCALA_HOME/bin # 添加bin目录到PATH

  • scala启动
bash
1
2
scala         #启动
:quit #退出

spark安装

  • 解压spark
Code
1
tar -zvxf spark-2.3.3-bin-hadoop2.7.tgz

​ 配置环境变量,在 ~/.bashrc文件中添加如下内容:

bash
1
2
export SPARK_HOME=spark目录    # 配置SPARK_HOME
export PATH=$PATH:$SPARK_HOME/bin # 添加bin目录到PATH

​ 重新执行命令: source ~/.bashrc

  • 复制模板文件,将在Spark的conf目录中的spark-env.sh.template、log4j.properties.template、slaves.template三个文件拷贝为spark-env.sh、log4j.properties、slaves到同一目录下(conf文件夹),注意把.template去掉,然后Spark启动时就会对文件中的配置项进行读取,否则找不到配置。命令如下:
Code
1
2
3
4
cd $SPARK_HOME/conf
sudo cp spark-env.sh.template spark-env.sh // Spark环境相关
sudo cp log4j.properties.template log4j.properties // Spark日志相关
sudo cp slaves.template slaves // Spark集群节点
  • 修改spark-env.sh 添加以下参考内容
bash
1
2
3
4
5
6
7
8
9
export SCALA_HOME=scala目录
export JAVA_HOME=jdk目录
export HADOOP_HOME=hadoop目录
export HADOOP_CONF_DIR=$HADOOP_HOME/hadoop/etc/hadoop
export SPARK_MASTER_IP=localhost
export SPARK_LOCAL_DIRS=spark目录
#export SPARK_DRIVER_MEMORY=512M
export SPARK_MASTER_PORT=7077
export SPARK_DIST_CLASSPATH=$($HADOOP_HOME/bin/hadoop classpath)
  • 设置spark-2.3.3-bin-hadoop2.7文件夹可读可写可执行权限,命令:
bash
1
sudo chmod 777 spark-2.3.3-bin-hadoop2.7/
  • 通过以下命令来检查
bash
1
spark-shell

出现版本号,且没有错误,网页打开localhost:4040

  • 启动spark集群
bash
1
2
3
4
#进入spark sbin目录
cd $SPARK_HOME/sbin
#启动集群
./start-all.sh

无报错,打开localhost:8080 则spark配置完成

  • 可能遇到的问题

启动scala报错 java.lang.NumberFormatException: For input string: “0x100”

解决方法如下:

bash
1
2
3
sudo nano ~/.bashrc
# 在环境变量中导入
export TERM=xterm-color

spark适用

文章作者: 止戈-
文章链接: http://vchamps.cn/2020/03/10/hadoop-spark%E9%85%8D%E7%BD%AE/
版权声明: 本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 Ever-Wu