此节主要讲述 hdfs 的基本使用和 Spark 编译及其遇到的坑。
编译 spark 是个很复杂的过程。
(1)方式一(推荐使用此种方法):使用 make-distribution.sh 进行编译:
在 $SPARK_HOME 目录下,输入并允许如下命令:
./dev/make-distribution.sh --name 2.6.0-cdh5.7.0 --tgz
-Phadoop-2.6 -Phive -Phive-thriftserver
–Dhadoop.version=2.6.0-cdh5.7.0
(2)方式二:使用 Maven 单独编译时:
在命令行输入如下命令:
这次编译出现了 N 多问题,搞了大半个月终于成功了,然后就把这个编译成功的源码一直保留着,下次再其他地方都用这个。感觉改其他的环境比重新编译 Spark 源码要容易。当然有时候编译时一次就编译通过了,这个还有时候看人品。
(1)出现如下错误
错误中所指网址如下所示:
大概意思是Maven有问题,当在使用插件时未给出明确版本并且Maven未能确定此插件的最新版本时出错。但是我改了下pom.xml文件,修改了hadoop版本为我电脑安装的版本,一点效果都没有,还是一样的错误呀!!!
解决方法:注释掉/home/hadoop/source/spark-2.1.0/dev/make-distribution.sh其中几段语句!!!
(2)出现如下问题是需要改为阿里巴巴镜像仓库:
解决办法:改用阿里巴巴镜像仓库;
在maven安装目录的conf目录下的setting.xml里面添加如下:
(3)出现如下错误:
maven 编译出错 Failed to execute goal org.apache.maven.plugins:maven-clean-plugin:2.5:clean
解决方法:一般是由于启动了另一个tomcat进程或者运行了多个shell.exe进程。直接关掉前面那个shell cmd即可。
(4)编译时出现各种问题(之前是记录在 word 里面的,后面拷贝到这里格式好像有点乱)
bug一:
bug 二:
bug 三:
在 spark 目录下,在 pom.xml 里面的添加如下:
cloudera
https://repository.cloudera.com/artifactory/cloudera-repos/
还是不行,然后把spark文件重新官网下载,重新解压缩包,还是各种出问题,查了各种网站,还是各种不行。
最后没办法,修改了jdk的版本和maven版本,然后在/home/hadoop/spark-2.1.0/pom.xml文件添加编译所需的cloudera软件包依赖:<参考博客https://blog.csdn.net/panguoyuan/article/details/74330519?utm_source=blogxgwz8>
cloudera-repo
Cloudera Repository
https://repository.cloudera.com/artifactory/cloudera-repos
true
false
cdh5.7.0
2.6.0-cdh5.7.0
1.2.4-cdh5.7.0
3.4.5-cdh5.7.0
(怀疑原先是没有添加下面的 profile依赖导致了错误。)
然后先编译:mvn -Pyarn -Dhadoop.version=2.6.0-cdh5.7.0 -Phive -Phive-thriftserver -DskipTests clean package
此步骤成功编译完,但是没有生成可执行的软件包,按如下步骤生成:
(1)修改make-distribution.sh脚本
在/home/hadoop/source/spark-2.1.0/dev/make-distribution.sh文件下,注释掉"${BUILD_COMMAND[@]}"
(2)开始构建:在spark-2.1.0目录下运行:
./dev/make-distribution.sh --name 2.6.0-cdh5.7.0 --tgz -Pyarn -Phadoop-2.6 -Phive -Phive-thriftserver -Dhadoop.version=2.6.0-cdh5.7.0
最后终于编译成功,且生成了编译成功后的 spark 压缩包 spark-2.1.0-bin-2.6.0-cdh5.7.0.tar(下载地址https://download.csdn.net/download/ocean111best/11084912)
总结:编译过程可能遇到很多问题,尝试把jdk版本和maven版本升高一些,编译完成功一个后可以一直留着,下次在其他地方改其他的环境。
首先启动 hadoop,然后它的基本操作如下:
hdfs dfs 或者hadoop fs
1、创建文件:vi hello.txt
2、查看文件:cat hello.txt
3、查看hadoop根目录文件:hadoop fs -ls /
4、将文件上传到hadoop中:hadoop fs -put hello.txt /
5、查看内容:hadoop fs -text /hello.txt
6、创建文件夹:hadoop fs -mkdir /test
7、创建递归文件夹:hadoop fs -mkdir -p /test/a/b
8、查看目录:hadoop fs -ls /test
9、将本地的hello.txt拷贝到hadoop指定文件夹下,并重命名:hadoop fs -copyFromLocal hello.txt /test/a/b/h.txt
10、递归查看所有的文件:hadoop fs -ls -R /
11、查看内容:hadoop fs -cat /test/a/b/h.txt
12、将HDFS里的内容拷贝到本地当前目录:hadoop fs -get /test/a/b/h.txt h.txt
13、删除文件(无法删除文件夹):hadoop fs -rm /hello.txt
14、删除文件夹:hadoop fs -rm -R /test