spark 环境搭建笔记
需要资源:
1.Ubuntu系统1
2.04版本以上
2.java jdk 1.7_075
3.scala sdk 2.10.4版本
4.hadoop 2.2.3
5.spark-1.0.1-bin-hadoop2.tgz
搭建步骤:
1.安装Ubuntu系统,并确保能够连上网。
2.安装java jdk
3.安装scala sdk
4.在三台机器中设置root用户机器密码:
具体设置方式如下:
sudo –s 进入root用户权限模式
vim /etclightdm/lightdm.conf //进入lightdm.conf修改文件(此时可能提示我们没有vim编辑器,安装vim编辑器:apt-get intall vim 安装完成后再进入lightdm.conf)将文件修改成:
[SeatDefaults]
greeter-session=unity-greeter
user-session=Ubuntu
greeter-show-manual-login=true
allow-guest=false
按下“esc”,输入“:wq”保存退出
启动root帐号:sudo passwd root更新密码,重启系统登录root账户。
6.安装ssh
Hadoop是采用ssh进行通信的,此时我们要设置密码为空,即不需要密码登录,这样免去每次通信时都输入密码,安装如下:
apt-get install ssh
输入“Y”进行安装并等待自动安装完成。启动ssh服务:/etc/init.d/ssh start
通过以下命令验证服务是否正常启动:ps –e |grep ssh
如果:ssh-agent和sshd进程都启动说明服务正常启动!
设置免密码登陆,生成私钥和公钥:
ssh-keygen –t rsa –P “”
此时在/root/.ssh中生成两个文件:id_rsa和id_ras.pub,id_rsa为私钥id_rsa.pub 为公钥,我们将公钥追加到authorized_keys中,因为authorized_keys用于保存所有允许以当前用户身份登录到ssh客户端用户的公钥内容:
cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
然后看看现在能否免密码登陆ssh:ssh localhost 后输入“yes”继续登陆
如果不需要localhost密码登陆成功表明成功登录
使用“exit”退出localhost,再次登录进localhost的时候就不需要密码了
7.安装rsync
我们的Ubuntu系统应该默认安装了rsync,我们可以通过以下命令来安装或者更新rsync:apt-get install rsync
8.安装hadoop
下载hadoop-2.2.3-bin.tar.gz
创建/usr/local/hadoop目录并把下载下来的hadoop解压到/usr/local/hadoop
具体命令:tar xzf hadoop-2.2.3-bin.tar.gz
mv hadoop-2.2.3 /usr/local/hadoop
9.在hadoop-env.sh配置java安装信息。
进入/usr/local/hadoop/hadoop-2.2.3/conf 打开hadoop-env.sh:vim hadoop-env.sh 加入JA V A_HOME=/usr/lib/java/jdk1.7.0_75
保存退出
使用source命令使hadoop-env.sh配置信息生效
source hadoop-env.sh
9.把hadoop的bin目录配置到“~/.bashrc”文件中,此时开启启动后系统自动
读取“~/.bashrc”文件
10.配置hadoop伪分布式模式:
1.修改hadoop的核心配置文件core-site.xml,主要配置HDFS的地址和端口
号;
2.修改hadoop中HDFS的配置文件hdfs-site.xml,主要是配置replication;
3.修改hadoop的MapReduce的配置文件mapred-site.xml,主要配置
JobTracker的地址和端口;
具体步骤如下:
创建如下目录:
下面开始构建具体的伪分布式的过程并进行测试:
首先配置core-site.xml文件:
进入core-site.xml文件,将内容修改成如下:
使用“:wq”命令保存退出。
接下来配置hdfs-site.xml文件,打开文件并将内容修改为如下:
配置结果:
使用“:wq”命令保存退出。
接下来修改mapred-site.xml配置文件:
修改后的mapred-site.xml配置文件的内容如下:
使用“:wq”命令保存退出。
通过上面的配置,我们完成了最简单的伪分布式配置。接下来进行hadoop的namenode格式化:
命令:hadoop namenode –format
提问时:输入“Y”完成格式化过程。
接下来启动hadoop!命令如下:
使用java自带的jps命令查询所有的守护进程:
接下来可以通过hadoop中用于监控集群状态烦人web页面查看hadoop的运行状况,具体的页面如下:
http://localhost:50030/jobtracker.jsp
http://localhost:50060/tasttracker.jsp
http://localhost:50070/dfshealth.jsp
接下来我们用新建的伪分布式平台运行wordcount程序:
首先在dfs中创建input目录:
此时因为没有指定hdfs具体的目录,所以会在当前用户下创建“input”目录,查看web控制台:
拷贝文件到hdfs
(与hadoop安装目录下的conf文件夹中的内容一样)拷贝后的input文件夹的内容如下所示:
现在,在我们刚刚构建的伪分布式模式下运行wordcount程序。
运行完成后我们查看一下输出结果:
此时我们到达hadoop的web控制台会发现我们提交并成功的运行任务:
最后在hadoop执行完成任务后,可以关闭hadoop后台服务:
11.配置hadoop分布式集群环境:
1.首先在/etc/hostname中修改主机名并在/etc/hosts中配置主机名和IP地址的对应关
系。
我们把Master这台机器作为hadoop的主节点,首先看一下Master这台机器的IP地址:
接下来我们在/etc/hostname中修改主机名:
进入配置文件可以看到Ubuntu系统的默认名称,现在我们把它改为Master作为hadoop 分布式集群的主节点。“:wq”保存退出。发现修改的主机名没有生效,为使得新修改的主机名生效重启系统后再次查看主机名发现成为了修改后的Master,表明修改成功。打开在etc/hosts文件
此时我们发现只有Ubuntu系统的出事IP(127.0.0.1)地址和主机名(localhost)的对应关系
我们在/etc/hosts文件中配置主机名和IP地址的对应关系:
修改之后保存退出。
接下来我们使用“ping”命令看一下主机名和IP地址之间的转换关系是否正确:
根据结果说明我们配置正确!
同理,进入第二台机器查看IP地址,然后修改主机名为:slave1重启机器查看主机名
接下来查看第三台机器的IP,修改其主机名为:slave2
现在,slave1上的/etc/hosts中配置主机名和IP地址的对应关系,打开后为:
下来我们修改配置文件为:
把“Master”和“slave1”和“slave2”的主机名和IP地址的对应关系都配置进去,保存退出。现在我们ping一下Master这个节点发现没有网络访问问题:
接着,在slave2上的/etc/hosts中配置主机名和IP地址的对应关系(同slave1),配置完成后此时我们ping一下Master和slave1节点发现都可以ping通;
最后在Master上的/etc/hosts中配置主机名和IP地址对应关系,结果如下:
此时在Master上使用ping命令和slave1和slave2这两台机器进行沟通:
发现此时能够ping通两个slave节点的机器。
最后如上测试slave1和Master、slave2的通信及slave2与slave1、Master之间的通信。
2.SSH无密码验证配置。
首先我们试一下在没有ssh配置情况下Master通过ssh协议访问slave节点的情况:
此时会发现我们是需要密码的。登不上去,直接退出。
怎么使得集群能够通过ssh免登录密码呢?
按照前面的配置,我们已经分布在Master、slave1、slave2这三台机器上的/root/.ssh/目录下生成一个私钥id_rsa和一个公钥id_rsa.pub。
此时把slave1的id_rsa.pub传给Master,如下所示:
同时把slave2的id_rsa.pub传给Master,如下所示:
在Master上检查一下是否复制过来:
此时我们发现slave1和slave2节点的公钥已经传过来了
Master节点上综合所有的公钥:
将Master的公钥信息uthorized_keys复制到slave1和slave2的.ssh目录下:
此时再次通过ssh登陆slave1和slave2:
此时Master通过ssh登陆slave1和slave2已经不需要密码了,同样的slave1和slave2通过ssh协议登陆另外两台机器也不需要密码了。
3.修改Master、slave1、slave2的配置文件
首先修改Master的core-site.xml文件,此时的内容是:
我们把“localhost”域名修改为“Master”:
同样的操作分别打开slave1和slave2节点core-site.xml,把“localhost”域名修改为“Master”
其次修改Master、slave1、slave2的mapred-site.xml文件。
进入Master节点的mapred-site.xml文件把“localhost”域名修改为“Master”,保存退出!
同理,打开slave1和slave2节点mapred-site.xml,把“localhost”修改为“Master”,保存退出。最后修改Master、slave1、slave2的hdfs-site.xml文件
我们把三台机器上的“dfs.replication”值由1改为3,这样我们的数据就会有三个副本
保存退出!
4.修改两台机器中hadoop配置文件的masters和slaves文件
首先修改Master的masters文件:
进入文件:
把“localhost”修改为“Master”,保存退出
修改Master的slaves文件:
进入文件:
具体修改为:
保存退出
从上面的配置可以看出我们把Master节点即作为主节点也作为数据处理节点,这
是考虑到我们数据的3份副本而我们的机器太熟有限所致。
把Master配置的masters和slaves文件分别拷贝到slave1和slave2的hadoop安装目录下的conf文件夹下:
进入slave1和slave2节点检查masters和slaves文件的内容:
发现拷贝正确
至此Hadoop的集群环境配置成功!
第二步:构造分布式的spark1.0.2集群
1.下载scala
2.10.4,具体下载地址:https://www.360docs.net/doc/244744923.html,/download/2.10.4.html
在Ubuntu机器上Scala会帮助我们自动选择“scala-2.10.4.tgz”进行下载。
2.安装和配置Scala
3.3,下载Spark 1.0.2,具体下载地址:
4.在Master上安装和配置Spark 1.0.2集群
把下载后“spark-1.0.2-bin-hadoop2.tgz”解压到“/usr/local/spark”目录之下:(具体步骤参考构建park集群)
接下来,配置“~/.bashrc”,设置“SPARK_HOME”并把Spark的bin目录加入到PATH之中,配置完成后使用source命令使配置生效。
进入spark的conf目录:
第一步修改slaves文件,首先打开该文件:
我们把slaves文件的内容修改为:
第二步:配置spark-env.sh
首先把spark-env.sh.template?拷贝到spark-env.sh:
打开“spark-env.sh”文件:
修改后的配置文件的内容如下所示:
5,SparkWorker1和SparkWorker2采用和SparkMaster完全一样的Spark安装配置,在此不再赘述。
6,启动Spark分布式集群并查看信息。
第一步:启动Hadoop集群,在SparkMaster使用jps命令,具体操作过程中可以看到如下进程信息:
在SparkWorker1 和SparkWorker2上使用jps会看到如下进程信息: