Scala-2.13.0 安装及配置

分類 编程语言, scala

Scala 简介

Scala 是一门多范式(multi-paradigm)的编程语言,设计初衷是要集成面向对象编程和函数式编程的各种特性。

Scala 运行在Java虚拟机上,并兼容现有的Java程序。

Scala 源代码被编译成Java字节码,所以它可以运行于JVM之上,并可以调用现有的Java类库。

准备工作

环境

1
2
JDK:1.8  
Scala:Scala-2.13.0

依赖环境

Scala 语言可以运行在Window、Linux、Unix、 Mac OS X等系统上。

Scala是基于java之上,大量使用java的类库和变量,必须使用Scala之前必须先安装 Java

安装 JDK

CentOs7.3 安装 JDK1.8

安装

确保你本地以及安装了 JDK 1.8 以上版本,并且设置了 JAVA_HOME 环境变量及 JDK 的bin目录。

下载解压

解压缩文件包,可将其移动至/lib/下:

1
2
3
4
5
su hadoop
cd /home/hadoop/
wget https://downloads.lightbend.com/scala/2.13.0-M2/scala-2.13.0-M2.tgz
sudo tar -zxvf scala-2.13.0-M2.tgz -C /lib/
sudo mv /lib/scala-2.13.0-M2/ /lib/scala

环境变量

如果是对所有的用户都生效就修改vi /etc/profile 文件
如果只针对当前用户生效就修改 vi ~/.bahsrc 文件

1
sudo vi /etc/profile
1
2
3
#scala
export SCALA_HOME=/lib/scala
export PATH=${SCALA_HOME}/bin:$PATH

使环境变量生效,运行 source /etc/profile使/etc/profile文件生效

验证

:wq!保存退出,重启终端,执行 scala 命令,输出以下信息,表示安装成功:

1
scala
1
2
3
4
5
6
Welcome to Scala 2.13.0-M2 (Java HotSpot(TM) 64-Bit Server VM, Java 1.8.0_144).
Type in expressions for evaluation. Or try :help.

scala> scala> println("Hello World!")
Hello World!
scala>

留言與分享

Hadoop简介

2003-2004年,Google公开了部分GFS和Mapreduce思想的细节,以此为基础Doug Cutting等人用了2年业余时间实现了DFS和Mapreduce机制,一个微缩版:Nutch

Hadoop 于 2005 年秋天作为 Lucene的子项目 Nutch的一部分正式引入Apache基金会。2006 年 3 月份,Map-Reduce 和 Nutch Distributed File System (NDFS) 分别被纳入称为 Hadoop 的项目中

Hadoop

分布式存储系统HDFS (Hadoop Distributed File System )

  • 分布式存储系统
  • 提供了 高可靠性、高扩展性和高吞吐率的数据存储服务

分布式计算框架MapReduce

  • 分布式计算框架
  • 具有 易于编程、高容错性和高扩展性等优点。

HDFS优点

高容错性

  • 数据自动保存多个副本
  • 副本丢失后,自动恢复

适合批处理

  • 移动计算而非数据
  • 数据位置暴露给计算框架

适合大数据处理

  • GB 、TB 、甚至PB 级数据
  • 百万规模以上的文件数量
  • 10K+ 节点

可构建在廉价机器上

  • 通过多副本提高可靠性
  • 提供了容错和恢复 机制

HDFS缺点

低延迟数据访问

  • 比如毫秒级
  • 低延迟与高吞吐率

小文件存取

  • 占用NameNode 大量内存
  • 寻道时间超过读取时间

并发写入、文件随机修改

  • 一个文件只能有一个写者
  • 仅支持append

准备工作

环境

1
2
3
4
5
6
7
JDK:1.8  
Hadoop Release:2.7.4
centos:7.3

node1(master) 主机: 192.168.252.121
node2(slave1) 从机: 192.168.252.122
node3(slave2) 从机: 192.168.252.123

安装 JDK

CentOs7.3 安装 JDK1.8

SSH 免秘钥

CentOs7.3 Hadoop 用户 ssh 免密登录

创建用户

建议创建一个单独的用户Hadoop以从Unix文件系统隔离Hadoop文件系统

1
2
3
4
$ useradd hadoop
$ passwd hadoop
New password:
Retype new password:

授权 root 权限,在root下面加一条hadoophadoop ALL=(ALL) ALL

1
2
3
4
5
$ chmod 777 /etc/sudoers
$ vi /etc/sudoers
root ALL=(ALL) ALL
hadoop ALL=(ALL) NOPASSWD:ALL
$ pkexec chmod 0440 /etc/sudoers

免秘钥登录

安装

下载解压

在 ndoe1 上操作

1
2
3
4
su hadoop
cd /home/hadoop/
wget https://mirrors.tuna.tsinghua.edu.cn/apache/hadoop/common/hadoop-2.7.4/hadoop-2.7.4.tar.gz
tar -zxvf hadoop-2.7.4.tar.gz

环境变量

如果是对所有的用户都生效就修改vi /etc/profile 文件
如果只针对当前用户生效就修改 vi ~/.bahsrc 文件

1
sudo vi /etc/profile
1
2
3
#hadoop
export PATH=${HADOOP_HOME}/bin:$PATH
export HADOOP_HOME=/home/hadoop/hadoop-2.7.4/

使环境变量生效,运行 source /etc/profile使/etc/profile文件生效

配置Hadoop

进入hadoop 配置文件目录

1
cd /home/hadoop/hadoop-2.7.4/etc/hadoop/

编辑 hadoop-env.sh 文件,找到 JAVA_HOME 改为 JDK 的安装目录

1
sudo vi hadoop-env.sh
1
export JAVA_HOME=/lib/jvm

修改 core-site.xml

打开 core-site.xml文件并对其进行编辑,如下图所示。

1
vi core-site.xml
1
2
3
4
5
6
7
8
9
10
<configuration>
<property>
<name>fs.defaultFS</name>
<value>hdfs://node1:9000</value>
</property>
<property>
<name>hadoop.tmp.dir</name>
<value>file:/home/hadoop/hadoop-2.7.4/tmp</value>
</property>
</configuration>

修改 hdfs-site.xml

打开hdfs-site.xml文件并对其进行编辑,如下图所示。

1
vi hdfs-site.xml
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
<configuration>
<property>
<name>dfs.namenode.secondary.http-address</name>
<value>node1:50090</value>
</property>
<property>
<name>dfs.replication</name>
<value>2</value>
</property>
<property>
<name>dfs.namenode.name.dir</name>
<value>file:/home/hadoop/hadoop-2.7.4/tmp/dfs/name</value>
</property>
<property>
<name>dfs.datanode.data.dir</name>
<value>file:/home/hadoop/hadoop-2.7.4/tmp/dfs/data</value>
</property>
</configuration>

修改 mapred-site.xml

目录下么没有这个文件,这有一个模板,我们需要先拷贝一份

1
2
cp mapred-site.xml.template mapred-site.xml
vi mapred-site.xml
1
2
3
4
5
6
7
8
9
10
11
12
13
14
<configuration>
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
<property>
<name>mapreduce.jobhistory.address</name>
<value>node1:10020</value>
</property>
<property>
<name>mapreduce.jobhistory.webapp.address</name>
<value>node1:19888</value>
</property>
</configuration>

修改 yarn-site.xml

1
vi yarn-site.xml
1
2
3
4
5
6
7
8
9
10
11
12
13
<configuration>

<!-- Site specific YARN configuration properties -->

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

配置集群

复制节点

将 hadoop-2.7.4 文件夹重打包后复制到其他子节点

1
2
3
4
5
cd /home/hadoop/

tar zcvf hadoop.tar.gz hadoop-2.7.4
scp hadoop.tar.gz hadoop@node2:/home/hadoop/
scp hadoop.tar.gz hadoop@node3:/home/hadoop/

在其他子节点 解压

1
tar -zxvf hadoop.tar.gz

配置slaves文件

修改(Master主机)node1/etc/hadoop/slaves该文件指定哪些服务器节点是datanode节点。删除locahost,添加所有datanode节点的主机名

1
2
3
4
5
cd /home/hadoop/hadoop-2.7.4/etc/hadoop/

[hadoop@node1 hadoop]$ cat slaves
node2
node3

集群操作

Format

格式化namenode和datanode并启动,(在master上执行就可以了 不需要在slave上执行)

1
2
3
4
cd /home/hadoop/hadoop-2.7.4/bin

./hadoop namenode -format
./hadoop datanode -format

启动 hadoop

关闭防火墙

1
systemctl stop firewalld.service
1
2
3
4
5
6
cd /home/hadoop/hadoop-2.7.4/sbin


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

或者

1
2
3
./start-all.sh

./mr-jobhistory-daemon.sh start historyserver

查看进程服务

查看启动进程,缺少以下任一进程都表示出错

1
2
3
4
5
$ jps
2528 NameNode
2720 SecondaryNameNode
2872 ResourceManager
3151 JobHistoryServer

查看端口占用情况

1
netstat -tnlp | grep java

访问node1

1
2
3
http://192.168.252.121:50070

http://192.168.252.121:8088

图片描述

图片描述

图片描述

停止 hadoop

1
cd /home/hadoop/hadoop-2.7.4/sbin
1
./stop-all.sh

或者 jps 查看进程kill

留言與分享

  • 第 1 頁 共 1 頁
作者的圖片

Kein Chan

這是獨立全棧工程師Kein Chan的技術博客
分享一些技術教程,命令備忘(cheat-sheet)等


全棧工程師
資深技術顧問
數據科學家
Hit廣島觀光大使


Tokyo/Macau