您的位置:首页 > 运维架构

Ubuntu16.04下Anaconda,spark,Hadoop的安装

2017-04-01 16:25 471 查看
       最近准备参加天池的比赛,会用到spark,之前在win7上折腾了一番,果断放弃了...准备直接用Linux了。VMware,Ubuntu安装的相关问题,前篇博客有写。

问题1:输入python显示的是python2.7,不能切换至python3.6

1、网上下载Anaconda for Linux,64bit。

2、打开终端:sudo bashAnaconda3-4.3.1-Linux-x86_64.sh 进行安装。盯着它安装吧,因为后面会提示你是否bin添加到用户的环境变量中去,yes就可以了,然后基本都没问题。

     我没注意,然后就没yes,系统默认[no],所以后期需要手动添加路径。

3、用sudo gedit ~/.bashrc,文件最后输入export PATH=/home/用户名/anaconda2/bin:$PATH,save,terminal里报错,gedit错误,我不太懂啊,决定试试vim

4、vim需要下载,sudo apt-get install vim

5、然后sudo vim ~/.bashrc用键盘下键一直跳到文章最末,输入export PATH=/home/用户名/anaconda2/bin:$PATH

6、再打开terminal,输入source~/.bashrc保存

7、重开terminal后,键入python,显示的是python3.6

8、python2和python3可以直接切换,这点很好。

问题二:装jdk,输入java-version,显示未装jdk

1、其实就是环境变量没设好,奈何自己是小白。。步骤如下

2、下载 jdk-8u121-linux-x64.tar.gz,可以在windows上下载,然后直接拖到ubuntu上就可以了。我放在了Downloads里面。

3、就地解压,右击,选Extract Here,得一解压文件jdk1.8.0_121

4、新建文件夹 sudo mkdir /usr/lib/jdk

5、打开terminal,来到Downloads文件夹下:cd Downloads

6、将解压文件移至jdk文件夹下:sudomv jdk1.8.0_121 /usr/lib/jdk

7、配置环境变量:sudo gedit ~/.bashrc

8、在文章最末输入:

            export JAVA_HOME=/usr/lib/jdk/jdk1.8.0_121

            export JRE_HOME=${JAVA_HOME}/jre

            export CLASSPATH=.:${JAVA_HOME}/lib:${JRE_HOME}/lib

            export PATH=${JAVA_HOME}/bin:${JRE_HOME}/bin:$PATH  
9、右键 open terminal,输入source~/.bashrc保存

10、输入:java -version,显示java 1.8.0版本信息

11、成功安装。


问题3:安装scala,方法同上,但是输入scala后显示未安装

1、直接输入sudo apt install scala,就可以了,如此简单~ 

2、   :quit 退出scala环境

问题4:spark安装

        我安装的是spark2.1.0-bin-hadoop2.7,python3.6.0,貌似这两者不适用。

1、(1)sudo mkdir /usr/lib/spark

     (2)cd /Downloads

   
e576
  (3)sudo mv spark2.1.0-bin-hadoop2.7 /usr/lib/spark

     (4)可以用 whereis
spark2.1.0-bin-hadoop2.7查看其是否移动成功,or 用cd /usr/lib/spark,再输入:ls,检查文件夹是否存在

环境变量如前面一样设置

                    export SPARK_HOME=/usr/lib/spark/spark-2.1.0-bin-hadoop2.7

                    export PATH=${SPARK_HOME}/bin:$PATH

2、在python3.6环境中import pyspart时出错。

  解决方法:将Spark中的pySpark模块增加的Python环境中,如下:

PYTHONPATH=${SPARK_HOME}/python/:$(echo ${SPARK_HOME}/python/lib/py4j-*-src.zip):${PYTHONPATH}


       若配置为:export PYTHONPATH=${SPARK_HOME}/python/lib/py4j-0.10.4-src.zip:$PYTHONPATH,还是无法导入pyspart,具体原因我也不知道,有知道的可以告诉下我,谢谢。
          

3、终端中输入:pyspark

4、报错:

TypeError: namedtuple() missing 3 required keyword-only arguments: 'verbose', 'rename', and 'module'


5、建议先删除ubuntu上的spark文件夹,在windows上对saprk-hadoop进行一些更改后再移至ubuntu上去,将spark-2.1.0-bin-hadoop2.7解压至桌面(该文件夹里面不要再包含一个spark-2.1.0-bin-hadoop2.7了)。这里需得更改两个文件:

6、打开链接https://github.com/apache/spark/blob/master/python/pyspark/cloudpickle.py,保存到自己电脑名为cloudpickle.py

7、打开https://github.com/apache/spark/blob/master/python/pyspark/serializers.py,保存到自己电脑名为serializers.py

8、打开文件夹  ‘spark-2.1.0-bin-hadoop2.7\python\pyspark’ ,将上述两个文件移入,覆盖原文件。

9、再移至ubuntu,重复 1,环境变量不需要重置。

10、输入pyspark,我这里出现了一个错误:SyntaxError: 'return' outside function,是复制粘贴时出现的错误,在windows上打开那连个修改的文件,检查最后一行,缩进问题,修改下保存,再重复9。

11、显示  welcome to spark,大大的spark字母。成功

       总的来说,初次使用,粗心太多,耗时太多,谨记!

Hadoop的安装(不新建hadoop用户)

    建议看厦门大学数据实验室的ubuntu上的Hadoop的安装教程http://dblab.xmu.edu.cn/blog/install-hadoop/,一步步来准没错!

主要配置hadoop/etc/hadoop    下的三个文件,添加内容如下:

core-site.xml文件   

<configuration>
<property>
<name>hadoop.tmp.dir</name>
<value>file:/usr/lib/hadoop/tmp</value>
<description>Abase for other temporary directories.</description>
</property>
<property>
<name>fs.defaultFS</name>
<value>hdfs://localhost:9000</value>
</property>
</configuration>
红色标出的要填写你自己电脑上hadoop的安装位置!
hdfs-site.xml文件:

<configuration>
<property>
<name>dfs.replication</name>
<value>1</value>
</property>
<property>
<name>dfs.namenode.name.dir</name>
<value>file:/usr/lib/hadoop/tmp/dfs/name</value>
</property>
<property>
<name>dfs.datanode.data.dir</name>
<value>file:/usr/local/hadoop/tmp/dfs/data</value>
</property>
</configuration>
还有一个hadoop-env.sh文件,下面第3点有讲到。

其余情况:

1、配置了SSH免密登录

2、所有配置完成后,执行 NameNode 的格式化:    ./bin/hdfs namenode -format

   显示错误:cannot create  hadoop/tmp 一个文件 ,用 ls -l  命令查看一下,发现是权限问题,无w权限  。

   解决方法: 赋权限:sudo  chmod -R  a+w  usr/lib/hadoop

3、问题:执行./sbin/start-dfs.sh显示错误:JAVA_HOME is not set and could not be found.

    解决方法:编辑文件hadoop-env.sh                   gedit   /usr/lib/hadoop/etc/hadoop/hadoop-env.sh   ,将其中的JAVA_HOME设置为绝对路径,如:export JAVA_HOME=/usr/lib/java/jdk1.8.1,然后使用source命令使其生效即可。

后续:装了双系统,环境配置好后,运行pyspark,显示 Permission denied。用 ls -l  命令查看目录权限,发现spark的权限不是777,所以下一步赋权限:sudo  chmod -R  777  目录名,即可

YARN

YARN 是从 MapReduce 中分离出来的,负责资源管理与任务调度。YARN 运行于 MapReduce 之上,提供了高可用性、高扩展性,需配置两个文件

先:

cp ./etc/hadoop/mapred-site.xml.template ./etc/hadoop/mapred-site.xml


然后再进行编辑,同样使用 gedit 编辑会比较方便些
gedit ./etc/hadoop/mapred-site.xml


<configuration>
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
</configuration>

接着修改配置文件 yarn-site.xml

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

配置后用 source 使其生效时会报错,不用管它,我是关了终端再开,再启动,没错

然后就可以启动 YARN 了(需要先执行过
./sbin/start-dfs.sh
):

在/usr/lib/hadoop 目录下  ./sbin/start-yarn.sh,然后由 jps 命令查看,有六个进程



后续:装了双系统,环境配置好后,运行pyspark,显示 Permission denied。用 ls -l  命令查看目录权限,发现spark的权限不是777,所以下一步赋权限:sudo  chmod -R  777  目录名,即可

选一个特定文件夹运行pyspark,因为它会产生日志文件


hadoop 的安装(新建hadoop用户)

这里安装步骤不做过多详述,详细请借鉴厦大的教程:http://dblab.xmu.edu.cn/blog/install-hadoop/


问题1:JAVA_HOME配置好了,依然显示错误:JAVA_HOME is not set and could not be found.

解决:在 /etc/profile 中增加路径

export HADOOP_HOME=/usr/local/hadoop
export HADOOP_COMMON_LIB_NATIVE_DIR=$HADOOP_HOME/lib/native

问题2:Unable to load native-hadoop library for your platform

在网上搜寻了很多方法,这个博客亲测有用:http://blog.csdn.net/xichenguan/article/details/38797331

就是说:就是注意3个地方:

1)OS位数,JDK位数,Hadoop本地库位数要一致

2)配置java.library.path能够找到Hadoop的本地库。

增加路径:

export HADOOP_COMMON_LIB_NATIVE_DIR=$HADOOP_HOME/lib/native export HADOOP_OPTS="-Djava.library.path=${HADOOP_HOME}/lib/native" 

3)Hadoop自己要找的本地库的名字是libhadoop.so这个文件,确保有这个文件,这个文件时libhadoop.so.1.0.0这个文件的软链接,libhdfs.so也是同样的情况
     我当时不太信,怕删错,然后就去之前虚拟机里安装成功了hadoop(也就是不新建hadoop用户的安装), 目录 /usr/local/hadoop/lib/native 下 执行了 ls  -l 命令查看了,发现的确,需要有两个非空软链接。

    就是说我现在的 native 目录下,libhadoop.so 、libhdfs.so 都不是软连接文件,那么,删了它们,再用 ln  -s 命令,创建libhadoop.so.1.0.0 和 libhdfs.0.0.0 的软链接,建好后
ls -l 查看,如下:



     建好后,再启动 hadoop还是现实 warn ,重启下就好了,多个用户在线时,重启命令为:systemtml reboot







内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: