使用的版本:
scala 2.11.7
hadoop 2.6.0
spark 1.4.0
一. 搭建hadoop
1.下载三个软件包
2. 将软件包上传到master和slave结点上(Xshell传输,点->按钮向右传输)
3. 修改hosts文件(根目录的/etc/hosts),将三个机器的机器名称及IP地址都写入里面
4.
关闭防火墙 service iptables stop(如果不关防火墙,则有可能造成无法登陆本身的结点)
5. .ssh无秘钥配置(这里很重要),最后要能连上自己,也能无密码登陆slave结点,命令是
ssh-keygen -t dsa -P '' -f ~/.ssh/id_dsa
cat id_dsa.pub >> authorized_keys(三个结点上分别都要执行)
scp root@master:~/.ssh/id_dsa.pub ./master_dsa.pub(这两句分别是在两个slave 结点上执行)
cat master_dsa.pub >> authorized_keys
这样master结点就可以连接slave结点了
6. 配置hadoop中的core-site.xml、hdfs-site.xml、mapred-site.xml.template、yarn-site.xml
7. 配置yarn-env.sh, hadoop-env.sh,export JAVA_HOME 注意: echo $JAVA_HOME 可以查看jdk安装位置
8. namenode格式化 ./bin/hdfs namenode -format
9. 启动hdfs和yarn,
./sbin/start-dfs.sh
./sbin/start-yarn.sh(一定要加sbin,不然找不到结点)
master:50070查看HDFS集群
master:8088 查看yarn
master:4040 spark查看job
master:19888 查看jobhistory
发现slave结点上datanode没有启动,这时发现是slaves文件里面没有修改,将两个slave结点的名称写进去,
则datanode被启动
在传送jdk时,使用scp命令,如果不加-r,则会出现jdk is not a regular file这样的错误
将namenode格式化前,然后将dfs文件夹删掉,重新建一个dfs文件夹,然后再进行格式化。
注意目录要写正确
启动hadoop时,提示中有奇怪的路径。经察看,发现是jdk安装路径的问题。
发现无法启动datanode,发现是slave文件忘记写。
二. 安装scala(所有节点都安装)
1. 在官网上下载scala
2. 解压和安装
tar -xvf scala-2.11.7.tgz
3.
增加SCALA_HOME环境变量配置
在/etc/profile下增加:
export JAVA_HOME=/home/spark/opt/java/jdk1.8.0_05
export CLASSPATH=.:$JAVA_HOME/jre/lib:$JAVA_HOME/lib:$JAVA_HOME/lib/tools.jar
export SCALA_HOME=/home/spark/opt/scala-2.11.7
export HADOOP_HOME=/home/spark/opt/hadoop-2.6.0
PATH=$PATH:$HOME/bin:$JAVA_HOME/bin:${SCALA_HOME}/bin
然后
source /etc/profile生效
4. 验证scala: scala -version
三. 搭建spark
1. 下载spark(先确定使用hadoop版本,然后再确定spark版本,可直接使用prebuild版本,不需再编译)
2. master主机配置:
在/etc/profile中增加SPARK_HOME:
export JAVA_HOME=/home/spark/opt/java/jdk1.8.0_05
export CLASSPATH=.:$JAVA_HOME/jre/lib:$JAVA_HOME/lib:$JAVA_HOME/lib/tools.jar
export SCALA_HOME=/home/spark/opt/scala-2.11.7
export HADOOP_HOME=/home/spark/opt/hadoop-2.6.0
export SPARK_HOME=/home/spark/opt/spark-1.2.0-bin-hadoop2.4
PATH=$PATH:$HOME/bin:$JAVA_HOME/bin:${SCALA_HOME}/bin:${SPARK_HOME}/bin:
${HADOOP_HOME}/bin
然后source /etc/profile生效
3. 修改conf/slaves文件,在其中增加两个节点的名称
4. 配置spark-env.sh:
export JAVA_HOME=usr/intern/java/jdk1.8.0_05
export SCALA_HOME=/usr/intern/scala-2.11.7
export SPARK_MASTER_IP=10.10.108.202:8085(这里可以不写端口号,这样就是默认8080)
export SPARK_WORKER_MEMORY=2g
export HADOOP_CONF_DIR=/root/spark_install/hadoop-2.6.0/etc/hadoop
5. worker节点配置
完成配置后,将spark目录copy slave机器 scp -r ~/spark_install/spark-1.4.0 [email protected]:~/spark_install/ 再用相同的命令发送到slave节点
6. 启动spark
./sbin/start-all.sh master:8085察看spark集群,注意要看看datanode是不是全
./sbin/stop-all.sh
在启动spark后,进入bin目录,可以spark-shell启动一个Application,然后再运行命令,运行spark里面的example master:4040 可以察看job
PATH后增加:${SCALA_HOME}/bin
注意:PATH如果不包含vim安装位置时,会找不到vim命令
PATH的书写方法:export PATH=$PATH:${SCALA_HOME}/bin或将$PATH加在最后,
但要在前面加:
netstat -ano | grep 8080 查看8080端口是否被占用
出现问题:只启动了Master结点上的worker,没有启动slave结点上的worker,后发现是没有配slaves这个文件
出现问题:端口8080被tomcat占用,因而无法启动worker,察看logs下的日志,发现是端口占用的问题。因而在sbin/start-master.sh将端口改为8085,spark的web页面就可以登上了.
去掉安全模式 bin/hadoop dfsadmin -safemode leave
查看jdk安装位置 java -version一定要确定jdk正确
每次将namenode格式化前,要将每个节点(包括master和slave)都删除掉dfs和tmp文件夹,再新建这两个文件夹,在dfs文件夹中新建data和name两个文件夹。