一、写在前面的话
我的用户名为edmond,所以在文中出现edmond的地方需要替换为你自己的用户名。
二、准备工作
有三台安装了ubuntu的电脑
主机名 | 主机IP |
---|---|
master | 172.16.229.135 |
slave1 | 172.16.229.136 |
slave2 | 172.16.229.137 |
我们需要把主机的/etc/hosts文件中的内容修改为以下内容
172.16.229.135 master
172.16.229.136 slave1
172.16.229.137 slave2
里面不能有除节点以外的其他信息,不然在hadoop启动的时候会出现访问拒绝的问题
三、安装jdk
1.下载
jdk的安装包可以通过jdk的官网获取到,地址:
http://www.oracle.com/technetwork/cn/java/javase/downloads/jdk8-downloads-2133151-zhs.html
下载Linux64 tar.gz的包
2.安装
先创建安装的目录,我把它安装在/usr/lib/jdk路径下(当然你也可以自己选择),创建过程可能需要root权限
sudo mkdir /usr/lib/jdk
然后把下载下来的jdk压缩包解压缩到这个目录下(需要root权限)
sudo tar -zcvf jdk-8u111-linux-x64.tar.gz -C /usr/lib/jdk
3.配置
接下来修改/etc/profile文件添加JAVA_HOME等参数(需要root权限)
sudo vim /etc/profile
在底部添上
export JAVA_HOME=/usr/lib/jdk/jdk1.8.0_111
export JRE_HOME=${JAVA_HOME}/jre
export CLASSPATH=.:${JAVA_HOME}/lib:${JRE_HOME}/lib
export PATH=${JAVA_HOME}/bin:$PATH
然后需要系统重新加载/etc/profile配置信息
source /etc/profile
完成之后可以用java -version
命令测试,如果配置正确会显示java虚拟机的信息
四、安装scala
1.下载
sclca的官方下载地址:http://www.scala-lang.org/download/
下载下来会是一个压缩文件
2.安装
安装过程和jdk类似创建安装目录(需要使用root权限)
sudo mkdir /usr/lib/scala
然后把压缩文件解压缩到scala目录下
sudo tar -zxvf scala-2.12.0.tgz -C /usr/lib/scala
3.配置
然后我们需要在/etc/profile中添加SCALA_HOME属性
sudo vim /etc/profile
在最后添加
export SCALA_HOME=/usr/lib/scala/scala-2.12.0
export PATH=${SCALA_HOME}/bin$PATH
重新载入配置source /etc/profile
后输入scala能进入scala控制台说明配置成功
五、ssh免密登陆
1.安装openssh-server
ubunut可以通过apt-get直接安装openssh-server
sudo apt-get install openssh-server
然后生成rsa公私钥
ssh-keygen -t rsa
一路回车,会在用户目录下的.ssh目录下生成 id_rsa 和 id_rsa.pub两个文件
其中id_rsa为私钥,id_rsa.pub为公钥。
我们需要把当前用户的公钥上传上需要免密登陆的ssh服务器上。
首先将~/.ssh目录下的id_rsa.pub文件复制为~/.ssh/authorized_keys
cp ~/.ssh/id_rsa.pub authorized_keys
接着修改ssh的配置文件/etc/ssh/sshd_config(需要root权限)
sudo vim /etc/ssh/sshd_config
找到
#AuthorizedKeysFile %h/.ssh/authorized_keys
把前面的#号去掉,让~/.ssh/authorized_keys生效
然后我们需要在slave节点中加入master节点的公钥
可以通过scp将master的~/.ssh/id_rsa.pub文件发送到所有的slave节点
scp ~/.ssh/id_rsa.pub edmond@slave1:/home/edmond
这样就将id_rsa.pub发送到了slave节点
然后在slave节点中把master节点的id_rsa.pub的内容追加到~/.ssh/authorized_keys文件的最后
可以用下列方式
cat ~/id_rsa.pub >> ~/.ssh/authorized_keys
对所有slave节点执行类似的操作
这样就可以实现从master节点到所有slave节点的ssh免密码登陆。
可以通过ssh edmond@slave1测试,如果不需要密码就可以登陆到slave1节点的话就说明免密登陆配置成功。
六、安装hadoop
1、下载
hadoop官网下载地址:http://hadoop.apache.org/releases.html#25+August%2C+2016%3A+Release+2.7.3+available
下载下来会是一个压缩文件
2、安装
我们把下载下来的压缩文件直接解压缩到/usr/lib/目录下(需要root权限)
sudo tar -zxvf hadoop-2.7.3.tar.gz -C /usr/lib
这样会在/usr/lib/目录下面会出现一个hadoop-2.7.3目录
我们把hadoop-2.7.3重新命名为hadoop
sudo mv /usr/lib/hadoop-2.7.3 /usr/lib/hadoop
我们把hadoop目录下的所有文件的所有者和用户组都改成edmond
sudo chmod edmond:edmond -R /usr/lib/hadoop
由于在hadoop启动的时候需要在这个目录下写入,所以其他用户需要对目录下的所有文件有写入权限
sudo chmod a+w -R hadoop
3、配置
先要对系统配置HADOOP_HOME等参数
打开/etc/profile
sudo vim /etc/profile
在最下面加入
export HADOOP_HOME=/usr/lib/hadoop
export PATH=${HADOOP_HOME}/bin:${HADOOP_HOME}/sbin:$PATH
刷新系统PATHsource /etc/profile
这样就可以在系统任何目录下执行hadoop命令了
可以在~目录下尝试执行hadoop命令,如果没有出现commnd not found的提示就说明PATH配置成功。
然后配置hadoop集群,先打开/usr/lib/hadoop/etc/hadoop/core-site.xml文件(因为刚才已经对其他用户添加了对目录的写入权限所以可以不使用root权限)
vim /usr/lib/hadoop/etc/hadoop/core-site.xml
在<configuration></configuration>
之间添加
<property>
<name>fs.defaultFS</name>
<value>hdfs://master:9000</value>
</property>
<property>
<name>io.file.buffer.size</name>
<value>131072</value>
</property>
<property>
<name>hadoop.tmp.dir</name>
<value>file:/usr/lib/hadoop/tmp</value>
<description>Abasefor other temporary directories.</description>
</property>
<property>
<name>hadoop.proxyuser.spark.hosts</name>
<value>*</value>
</property>
<property>
<name>hadoop.proxyuser.spark.groups</name>
<value>*</value>
</property>
然后是/usr/lib/hadoop/etc/hadoop/hdfs-site.xml
vim /usr/lib/hadoop/etc/hadoop/hdfs-site.xml
在<configuration></configuration>
之间添加
<property>
<name>dfs.namenode.secondary.http-address</name>
<value>master:9001</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/lib/hadoop/tmp/dfs/data</value>
</property>
<property>
<name>dfs.replication</name>
<value>1</value>
</property>
<property>
<name>dfs.webhdfs.enabled</name>
<value>true</value>
</property>
然后是/usr/lib/hadoop/etc/hadoop/yarn-site.xml
vim /usr/lib/hadoop/etc/hadoop/yarn-site.xml
在<configuration></configuration>
之间添加
<property>
<name>yarn.resourcemanager.hostname</name>
<value>master</value>
</property>
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
接着修改/usr/lib/hadoop/etc/hadoop/hadoop-env.sh
找到JAVA_HOME=${JAVA_HOME}
修改为JAVA_HOME=/usr/lib/jdk/jdk1.8.0_111
然后添加slave节点的信息
编辑/usr/lib/hadoop/etc/hadoop/slaves
修改为
master
slave1
slave2
4、启动
首先先格式化hdfs
hdfs namenode -format
如果输出的status code为0说明格式化完成,若为1的话说明出现错误
然后启动集群
start-all.sh
可能需要等待一段时间,启动完成后会在可以通过jps命令查看
在master节点上会出现
DataNode
RecourceManager
Jps
NodeManager
NameNode
SecondaryNameNode
slave节点上会出现
DataNode
Jps
NodeManager
如果不是这样说明集群没有启动成功
七、安装spark
3、配置
1、下载
官网下载地址:http://spark.apache.org/downloads.html
2、安装
直接把压缩文件解压缩到/usr/lib目录下
sudo tar -xvf spark-2.0.2-bin-hadoop2.7.tar -C /usr/lib
修改目录的名字为spark
sudo mv spark-2.0.2-bin-hadoop2.7 spark
修改权限
sudo chmod a+w -R spark
修改用户和用户组
sudo chown edmond:edmond -R hadoop
3、配置
首先在系统路径中添加安装路径,打开/etc/profile
sudo vim /etc/profile
在最下面添加
export SPARK_HOME=/usr/lib/spark
export PATH=${SPARK_HOME}/bin$PATH
通过source /etc/profile
更新系统配置
然后配置spark的集群环境
编辑/usr/lib/spark/conf/spark-env.sh
vim /usr/lib/spark/conf/spark-env.sh
添加上
export SCALA_HOME=/usr/lib/scala/scala-2.12.0
export SPARK_WORK_MEMORY=500MB
export SPARK_MASTER_IP=master
#export MASTER=spark://master
在/usr/lib/spark/conf/slaves中添加节点的信息
slave1
slave2
八、启动集群
要启动spark的集群需要先启动hadoop的集群,由于hadoop和spark的启动命令都是start-all.sh
所以如果直接使用start-all.sh会导致系统路径的冲突,所以启动的时候需要用绝对路径来启动
启动hadoop
/usr/lib/hadoop/sbin/start-all.sh
启动spark
/usr/lib/spark/sbin/start-all.sh
如果启动成功master节点会出现
DataNode
RecourceManager
Jps
NodeManager
NameNode
SecondaryNameNode
Master
slave节点会出现
DataNode
Jps
NodeManager
Worker