安装
Mac上有Homebrew神器,安装这些东西都是一条命令的事情,麻烦的是配置。首先在Mac上安装Homebrew和Java。然后通过下面的命令,分别安装Hadoop、Hive、Spark以及可能需要用到的Scala和sbt。
|
|
配置和使用
安装很简单,配置很麻烦,主要是一开始很多参数都不知道是什么意思,就是跟着别人教程改,现在了解了其中一些参数的意思,但还是有一些不了解,所以遇到了很多坑。下面所有的配置都是针对伪分布式配置的,就是实际上就只有你本地一台电脑,但是假装是分布式的集群。
Hadoop配置
到目录/usr/local/Cellar/hadoop/[your_version]/libexec/etc/hadoop下:
修改core-site.xml这个文件中tag\
的value,这个tag是指定Hadoop的存放临时文件的路径,默认值是/tmp/hadoop-${user.name},但是在Mac上,tmp这个目录的会在电脑重启后自动清除,所以这会造成每次重启电脑都会导致Hadoop的文件丢失而无法正常启动,每次都得先format,而且hdfs上的数据会丢失。所以一定要把这个值设置成一个不会自动清除的路径。我自己就在当前目录下新建了一个文件夹tmpdir,设置成了/usr/local/Cellar/hadoop/2.8.0/libexec/etc/hadoop/tmpdir。 找到hdfs-site.xml或者自己新建一个这个文件,将如下内容添加进去。
123456<configuration><property><name>dfs.replication</name><value>1</value></property></configuration>
这个地方设置的参数的意思是一个文件在hdfs中保存多少份备份,可以用来防止数据意外丢失。
如果要使用yarn模式,还有一些东西需要配置,参见官方教程。但是这个教程有一个地方没有说清楚,导致reduce会卡住不动,应该是因为reduce的工作节点找不到map工作节点导致的,参考了这篇博客的方法解决了,但是我不懂其中的原理。做法很简单,就是在/etc/hosts中添加一行
1127.0.0.1 你的计算机名
你的Mac的计算机名一般可以在系统偏好设置->共享->电脑名称下面那行小字找到,一般为your_username-MacBook-Pro.local。
Hadoop使用
具体教程可以参见官方教程,下面简单介绍一下:
第一次使用需要format:
1$ hadoop namenode -format
这个命令具体执行了什么我也不知道,反正就是初始化,只需要执行一次(如果参考上一节设置好了tmpdir)。
到目录/usr/local/Cellar/hadoop/your_version/sbin下执行:
12./start-all.sh #启动Hadoop./stop-all.sh #停止HadoopHadoop的Web UI是用浏览器访问http://localhost:8088/。
Hive配置
参考了这篇博客,用的是内嵌模式(embedded),该模式使用Derby服务器存储(完全不知道这些是什么)。
到目录/usr/local/Cellar/hive/your_version/libexec/conf下:
配置hive-env.sh文件
1$ cp hive-env.sh.template hive-env.sh
然后修改该文件的相应内容:
|
|
配置hive-site.xml,修改该文件的相应内容:
12345<property><name>hive.metastore.warehouse.dir</name><value>/user/hive/warehouse</value><description>location of default database for the warehouse</description></property>
这里设置的路径其实是hdfs中的路径,是仓库在hdfs上的路径。
|
|
其中databaseName可以是任何绝对路径,上面只是我指定的metastore的读取位置,如果不设置的话,默认会在hive命令执行的目录下去读取,如果没有metastore文件就会新建一个,这个会导致你在很多目录下都新建了不同的数据库,指定一个绝对路径的话可以保证你每次无论在哪个路径下执行hive都能连接到同一个数据库。
Hive使用
- 在目录/usr/local/Cellar/hive/your_version/bin下,执行
schematool -dbType derby -initSchema
来初始化(derby模式是这样的)。 - 然后在任何路径下(如果按照上一节设置了metastore的读取路径),执行
$ hive
命令就可以打开hive的命令行窗口了。但是上面所设置的derby模式只能同时连接一个客户,也就是说如果你在一个窗口打开了hive,你在另一窗口再用hive命令就会报错。mysql模式可以参考这篇博客。
Spark配置
Spark没什么可配置的,如果你要在Spark中使用Hive的话,就要把上面提到的core-site.xml、hdfs-site.xml、hive-site.xml放到Spark的设置目录/usr/local/Cellar/apache-spark/your_version/libexec/conf下。如果要用yarn-cluster模式运行要连接Hive的程序,就在在spark-submit命令中加入参数–files,然后在后面加上hive-site.xml的路径。这个参数是把文件发送到各个节点上。(这里我突然有个疑问,derby模式下是不允许多用户连接hive的,那cluster模式下有多个节点都要连接hive那会出什么问题?这个地方我还是不太明白,但是我用上面这个方法去运行我的程序时没发现这样的问题。对这里面的具体机制完全不了解,这些东西的配置真的好复杂。)
Spark使用
使用的话可以使用spark-shell,也可以用spark-submit,还可以用/usr/local/Cellar/apache-spark/your_version/libexec/sbin路径下的脚本start-all.sh来启动spark,并用浏览器访问http://localhost:8080来进入Spark的Web UI。