Mac上安装Spark3.0.0以及Hadoop

配置环境

1. java环境
若是已经配置,进行下一步;如果没有,请查看:Mac配置Java开发环境

2. 免密SSH

a) 修改主机名

终端输入:

hostname

可查验当前主机名,如果返回 localhost,说明以前已经修改置成功。

修改主机名(若主机名已经是localhost,忽略此步骤):

sudo scutil --set HostName localhost

b) 配置免密(若已经配置了免密,忽略此步骤)

终端输入:

ssh localhost

如果返回 Last login: Mon Nov 11 14:46:03 2019,说明以前已经配置成功。

配置免密(若已经配置了免密,忽略此步骤):
首先生成rsa文件:

ssh-keygen -t rsa

生成authorized_keys文件:

cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys

授权公钥到本地,避免每次登陆询问密码。

再此执行 ssh localhost,成功即可。
若是失败并且内容如下:

ssh: connect to host localhost port 22: Connection refused

解决:打开远程登录。
第一种方法终端执行:

sudo systemsetup -f -setremotelogin on

第二种方法,打开设置,点击共享,并勾选 远程登录

最后再执行 ssh localhost,成功即可。

3. 配置Hadoop
a) 使用以下命令安装hadoop:
brew install hadoop

或者官网下载
下载解压之后,放入 /usr/local 文件夹下,此处下载的是 hadoop-3.2.1,hadoop根目录下的文件可能和brew安装的不大一样,配置的时候对比找到相应的文件。

b) 配置hadoop

修改/etc/hadoop/hadoop-env.sh

#修改前
# export HADOOP_OPTS="-Djava.net.preferIPv4Stack=true”

#修改后
export HADOOP_OPTS="$HADOOP_OPTS -Djava.net.preferIPv4Stack=true -Djava.security.krb5.realm= -Djava.security.krb5.kdc="
export JAVA_HOME="/Library/Java/JavaVirtualMachines/jdk1.8.0_181.jdk/Contents/Home" #改为自己JDK目录

修改/etc/hadoop/core-site.xml,配置hdfs地址和端口号

<configuration>
    <property>
         <name>hadoop.tmp.dir</name>
    <value>/usr/local/hadoop-3.2.1/hdfs/tmp</value>
        <description>A base for other temporary directories.</description>
      </property>
      <property>
         <name>fs.default.name</name>
         <value>hdfs://localhost:8020</value>
      </property>
</configuration>

修改/etc/hadoop/mapred-site.xml,设置map-reduce中 jobtracker的地址和端口号

<configuration>
    <property>
      <name>mapred.job.tracker</name>
      <value>localhost:8021</value>
    </property>
</configuration>

修改/etc/hadoop/hdfs-site.xml,设置hdfs的默认备份方式,默认3,需要修改成1

<configuration>
    <property>
     <name>dfs.replication</name>
     <value>1</value>
    </property>
</configuration>

格式化HDFS,在/hadoop-3.2.1/bin 下执行

hdfs namenode -format

然后在/hadoop-3.2.1/sbin 下执行,启动hdfs(关闭执行 ./stop-dfs.sh)

./start-dfs.sh    

运行结果如下:

Starting namenodes on [localhost]
Starting datanodes
Starting secondary namenodes [account.jetbrains.com]

此时访问:http://localhost:9870 即可看到

http://localhost:9870

继续执行启动 yarn 的命令(关闭执行 ./stop-yarn.sh)

./start-yarn.sh

此时打开 JobTracker,访问 http://localhost:8088 即可看到
http://localhost:8088

Specific Node Information,访问 http://localhost:8042 即可看到
http://localhost:8042

哈哈哈,有个更便捷的方法,可以开启/关闭上面三项服务:

./start-all.sh    ##启动Hadoop 
./stop-all.sh     ##停止Hadoop

每次都要在/hadoop-3.2.1/sbin 下才能开启进程,现在我们可以在 /etc/profile 文件加上:

export HADOOP_HOME=/usr/local/hadoop-3.2.1  #你Hadoop的安装路径
export PATH=$PATH:$HADOOP_HOME/sbin:$HADOOP_HOME/bin

保存强制退出,开启新的终端后,直接运行上述的任何启动命令即可。

4. 配置Spark

a) 配置scala
使用brew下载

brew install scala

会自动放入 /usr/local/Cellar 目录下

scala官网下载,解压后放入 /usr/local 目录下即可

编辑 /etc/profile 文件

sudo vim /etc/profile

添加(注意填入自己的scala路径,如上述下载后解压 是 /usr/local/scala):

export SCALA_HOME=/usr/local/Cellar/scala/2.13.0 
export PATH=$PATH:$SCALA_HOME/bin

使配置生效:

source /etc/profile

然后终端输入:

scala

如下图即成功
scala成功安装

b)配置Spark
Spark官网下载,此处选择Spark release版本 3.0.0-preview,然后再选择package类型 Pre-built for Apache Hadoop 3.2 and later,最后下载.tgz文件。解压后放入 /usr/local 目录下即可。

更改Spark文件夹名称(太长):

sudo mv ./spark-3.0.0-preview-bin-hadoop3.2/ ./spark3.0.0

编辑 /etc/profile 文件,添加:

export SPARK_HOME=/usr/local/spark3.0.0
export PATH=$PATH:$SPARK_HOME/bin

使配置生效:

source /etc/profile

进入/spark3.0.0/conf/文件夹下执行以下命令,复制一份spark-env:

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

然后编辑 spark-env.sh 文件

vim spark-env.sh

加入以下内容

export SCALA_HOME=/usr/local/Cellar/scala #注意自己的scala路径

export SPARK_MASTER_IP=localhost

export SPARK_WORKER_MEMORY=4g

此时,已经配置完成。输入

spark-shell

结果如下图:
成功启动spark

简单使用

启动 /spark3.0.0/sbin 下的 start-all.sh ,再输入 spark-shell,进入scala编码环境
启动并进入shell

读取README.md文件内容,进行 count() 和 first() 操作,此处count计算总行数,first即是第一行内容

val textFile = sc.textFile("file:///usr/local/spark3.0.0/README.md”)

textFile.count()
textFile.first()

在这里插入图片描述

过滤出含有“Spark”的行

val linesWithSpark = textFile.filter(line => line.contains("Spark”))

linesWithSpark.count()

在这里插入图片描述
找出单词数最多的行,两种方式

 textFile.map(line => line.split(" ").size).reduce((a, b) => if(a>b) a else b)

import java.lang.Math
textFile.map(line => line.split(" ").size).reduce((a, b) => Math.max(a, b))

在这里插入图片描述
Hadoop MapReduce 数据流模式,Spark 同样适用,下面单词统计

val wordCounts = textFile.flatMap(line => line.split(" ")).map(word => (word, 1)).reduceByKey((a,b) => a+ b)

wordCounts.collect()

在这里插入图片描述在这里插入图片描述

当然还可以通过IDEA进行Java编程,或者用scala和python,看个人喜好以及公司要求。Spark3.0.0下有对应不同语言的示例,可以进行参考。

参考:
mac下Hadoop的安装与使用

mac下Spark的安装与使用

=================================================================
个人博客
Github
个人公众号:Flutter小同学
个人网站

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值