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 即可看到
继续执行启动 yarn 的命令(关闭执行 ./stop-yarn.sh)
./start-yarn.sh
此时打开 JobTracker,访问 http://localhost:8088 即可看到
Specific Node Information,访问 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
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
启动 /spark3.0.0/sbin 下的 start-all.sh ,再输入 spark-shell,进入scala编码环境
读取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小同学
个人网站