目录
1、创建 hadoop 用户并增加管理员权限.................................................................. 4
4、安装 SSH 以及配置 SSH 无密码登录.................................................................. 5
一、前置知识:
sudo 命令
本文中会大量使用到sudo命令。sudo是ubuntu中一种权限管理机制,管理员可以授权给一些普通用户去执行一些需要 root 权限执行的操作。当使用sudo命令时,就需要输入您当前用户的密码.
在Linux的终端中输入密码,终端是不会显示任何你当前输入的密码,也不会提示你已经输入了多少字符密码。而在 windows 系统中,输入密码一般都会以“*”表示你输入的密码字符
ubuntu中终端输入的命令一般都是使用英文输入。linux中英文的切换方式是使用键盘“shift”键来切换,也可以点击顶部菜单的输入法按钮进行切换。ubuntu自带的Sunpinyin中文输入法已经足够读者使用。
在 Ubuntu 终端窗口中,复制粘贴的快捷键需要加上 shift,即粘贴是 ctrl+shift+v
~的含义
在 Linux 系统中,~ 代表的是用户的主文件夹,即 “/home/用户名” 这个目录,如你的用户名为 hadoop,则 ~ 就代表“/home/hadoop/”。此外,命令中的 # 后面的文字是注释,只需要输入前面命令即可。
二、运行环境:
1、主机和从机同时安装同一Ubuntu系统(包括系统版本、系统位数必须要相同)。本教程使用Ubuntu16.04 32位作为系统环境。
2、确保系统处于联网状态下。
3、hadoop版本、spark版本、scala版本要对应。本教程使用scala2.10.6、 hadoop2.6.0、spark1.6.2pre-built for hadoop2.6版本。也可以从官网下载源码自己进行编译。
三、安装步骤:
1、创建 hadoop 用户并增加管理员权限
在终端中输入
sudo useradd -m hadoop -s /bin/bash
这条命令创建了可以登陆的 hadoop 用户,并使用 /bin/bash 作为 shell 接着使用如下命令设置密码,可简单设置为 hadoop,按提示输入两次密码:
sudo passwd Hadoop
为 hadoop 用户增加管理员权限:
sudo adduser hadoop sudo
最后注销当前用户(屏幕右上角的齿轮,点击注销-登出),返回登陆界面使用刚创建的hadoop用户进行登录。
2、更新 apt
打开终端,输入以下指令
sudo apt-get update
若出现 “Hash 校验和不符” 的提示,可通过更改软件源来解决。若没有该问题,则不需要更改。从软件源下载某些软件的过程中,可能由于网络方面的原因出现没法下载的情况,那么建议更改软件源。在学习Hadoop过程中,即使出现“Hash校验和不符”的提示,也不会影响Hadoop的安装。更改软件源:系统设置-软件和更新-下载自-其他节点-选择服务器-关闭-重新载入
3、安装 vim
sudo apt-get install vim
提示确认时按Y即可
4、安装 SSH 以及配置 SSH 无密码登录
a)安装SSH
Ubuntu 默认已安装了 SSH client,此外还需要安装 SSHserver:
sudo apt-get install openssh-server
安装后,使用如下命令登录本机
ssh localhost
此时会有如下提示(SSH 首次登陆提示),输入 yes 。然后按提示输入密码hadoop,这样就登陆到本机了。
b)配置无密码登录
首先退出刚才的 ssh(exit 指令),就回到了我们原先的终端窗口,然后
利用 ssh-keygen 生成密钥,并将密钥加入到授权中:
exit # 退出刚才的 ssh localhost
cd ~/.ssh/ # 若没有该目录,请先执行一次ssh localhost ssh-keygen -t rsa # 会有提示,都按回车就可以
cat ./id_rsa.pub >> ./authorized_keys #加入授权
此时再使用命令即可无密码登录本机了
5、固定 IP 地址
默认IP地址分配是自动获取的,我们需要手动获取一个固定的IP地址。系
统设置-网络-有线网络-选项-IPV4设置进行IP地址的分配。
Linux系统中查看IP地址的命令是ifconfig
6、修改 hosts
为了便于区分,修改各个节点的主机名,首先在 master 节点上作如下修改:
sudo vim /etc/hostname
将本机名字由localhost改为master(区分大小写)
然后执行如下命令修改自己所用节点的IP映射:
sudo vim /etc/hosts
192.168.1.101是master的IP地址,192.168.1.102是slave1节点的IP
地址,如果有两个以上的节点依此修改即可。修改完成后重启电脑,在终端看到机器名的变化代表修改成功。
以上是在 master 上面的修改,在各个 salve 节点也要做相应修改,对
/etc/hostname(修改为 slave1、slave2 等)和/etc/hosts(与主机配置一样)
两个文件进行修改。
配置好后需要在各个节点上执行如下命令,测试是否相互 ping 得通,如果 ping 不通,后面就无法顺利配置成功。
ping master -c 3 # 只ping 3次,否则要按 Ctrl+c 中断
ping slave1 -c 3
7、配置 SSH 无密码登录节点
这个操作是要让 Master 节点可以无密码 SSH 登陆到各个 Slave 节点上。无密码登录本机在第4步执行过。
在master节点执行:
scp ~/.ssh/id_rsa.pubhadoop@slave1:/home/hadoop/
scp 是secure copy 的简写,用于在 Linux 下进行远程拷贝文件,类似于 cp 命令,不过 cp 只能在本机中拷贝。执行 scp 时会要求输入 Slave1 上hadoop 用户的密码(hadoop),输入完成后会提示传输完毕,如下图所示:
在slave1节点上执行
mkdir ~/.ssh # 如果不存在该文件夹需先创建,若已存在则忽略 cat ~/id_rsa.pub >> ~/.ssh/authorized_keysrm ~/id_rsa.pub # 完就可以删掉了 |
用
如果有其他 Slave 节点,也要执行将 Master 公匙传输到 Slave 节点、在 Slave 节点上加入授权这两步。
这样,在 Master 节点上就可以无密码 SSH 到各个 Slave 节点了,可在
Master 节点上执行如下命令进行检验,如下图所示:
8、安装 JDK
将下载的 JDK 包解压到/usr/lib/jvm 文件夹下,如果文件夹不存在则手动创建一个:
mkdir /usr/lib/jvm #创建文件夹
chown -hR hadoop:hadoop/usr/lib/jvm #修改文件夹所有者
运行解压
sudo tar zxvf./jdk-7u79-linux-i586.tar.gz -C /usr/lib/jvm 修改环境变量
vim ~/.bashrc
exportJAVA_HOME=/usr/lib/jvm/java-1.7.0_79 export JRE_HOME=${JAVA_HOME}/jre exportCLASSPATH=.:${JAVA_HOME}/lib:${JRE_HOME}/lib export PATH=${JAVA_HOME}/bin:$PATH
使环境变量生效
source ~/.bashrc
此时在终端运行java -version命令,可以看到屏幕输出JDK的版本信息,代表JDK安装成功
注意!master 和 slave 安装路径要是一样的,并且两者系统版本要是一致的,否则启动集群时会报错!这一点同样适用于其他软件。
9、安装 hadoop2.6.0
将下载的hadoop2.6.0安装到/usr/路径下,
sudo tar -zxf ~/下载/hadoop-2.6.0.tar.gz -C /usr/ # 解压 cd /usr/local/ sudo mv ./hadoop-2.6.0/./hadoop # 将文件夹名改为hadoop
sudo chown -R hadoop:hadoop./hadoop # 修改文件权限
配置环境变量
vim ~/.bashrc
#添加以下信息
export HADOOP_HOME=/usr/hadoop exportPATH=$PATH:/usr/hadoop/bin:/usr/hadoop/sbin exportHADOOP_COMMON_LIB_NATIVE_DIR=$HADOOP_HOME/lib/native exportHADOOP_OPTS="-Djava.library.path=$HADOOP_HOME/lib/" exportHADOOP_CONF_DIR=$HADOOP_HOME/etc/hadoop
保存后执行source ~/.bashrc使配置生效
10、配置集群/分布式环境
集群/分布式模式需要修改 /usr/hadoop/etc/hadoop 中的5个配置文件,
更多设置项可点击查看官方说明,这里仅设置了正常启动所必须的设置项:
slaves 、 core-site.xml 、 hdfs-site.xml 、 mapred-site.xml 、 yarn-
以下在master节点上进行。
(1) 文件 slaves,将作为 DataNode 的主机名写入该文件,每行一个,默认为localhost,所以在伪分布式配置时,节点即作为 NameNode 也作为 DataNode。分布式配置可以保留 localhost,也可以删掉,让 Master 节点仅
作为 NameNode 使用。
本教程让 Master 节点仅作为 NameNode 使用,因此将文件中原来的 localhost 删除,只添加两行内容:slave1和slave2。
(2) 文件core-site.xml改为下面的配置
<configuration>
<property>
<name>fs.defaultFS</name>
<value>hdfs://master:9000</value>
</property>
<property>
<name>hadoop.tmp.dir</name>
<value>file:/usr/hadoop/tmp</value>
<description>Abase directories.</description> </property> </configuration> | for | other | temporary |
(3) 文件 hdfs-site.xml
<configuration>
<property>
<name>dfs.namenode.secondary.http-address</name>
<value>master:50090</value>
</property>
<configuration>
<property>
<name>dfs.replication</name>
<value>3</value>
</property>
<property>
<name>dfs.namenode.name.dir</name>
<value>file:/usr/hadoop/tmp/dfs/name</value>
</property>
<property>
<name>dfs.datanode.data.dir</name>
<value>file:/usr/hadoop/tmp/dfs/data</value>
</property>
</configuration>
(4)文件mapred-site.xml (可能需要先重命名,默认文件名为
mapred-site.xml.template),然后配置修改如下:
<configuration>
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
<property>
<name>mapreduce.jobhistory.address</name>
<value>master:10020</value>
</property>
<property>
<name>mapreduce.jobhistory.webapp.address</name>
<value>master:19888</value>
</property>
</configuration>
(5)文件 yarn-site.xml配置修改如下:
<configuration>
<property>
<name>yarn.resourcemanager.hostname</name>
<value>master</value>
</property>
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
</configuration>
配置好后,将 master 上的 /usr/Hadoop 文件夹复制到各个节点上。在 Master 节点上执行:
cd /usr/ tar -zcf~/hadoop.master.tar.gz ./hadoop # 先压缩再复制 cd ~scp./hadoop.master.tar.gz hadoop@slave1:/home/hadoop
|
在slave节点执行
sudo rm -r /usr/hadoop # 删掉旧的(如果存在)
sudo tar -zxf ~/hadoop.master.tar.gz -C/usr/ sudo chown -R hadoop /usr/hadoop
同样,如果有其他 Slave 节点,也要执行将 hadoop.master.tar.gz 传输到 Slave 节点、在 Slave 节点解压文件的操作。
首次启动需要先在 Master 节点执行 NameNode 的格式化:
hdfs namenode -format
然后可以启动hadoop了,在master节点执行:
start-dfs.shstart-yarn.sh
mr-jobhistory-daemon.sh starthistoryserver
通过命令 jps 可以查看各个节点所启动的进程。正确的话,在 Master
节点上可以看到NameNode、ResourceManager、SecondrryNameNode、 JobHistoryServer 进程,如下图所示:
在 slave 节点可以看到 DataNode 和 NodeManager 进程,如下图所示:
缺少任一进程都表示出错。另外还需要在Master 节点上通过命令 hdfs
dfsadmin -report 查看 DataNode 是否正常启动,如果 Live datanodes 不
为 0 ,则说明集群启动成功。
如果出现slave结点没有DataNode进程,解决方式如下:切换到hadoo目录,将tmp文件夹下所有内容删除,然后重新执行格式化NameNode命令,再启动hadoop问题即可解决。 Hadoop配置全部完成.
11、安装 Scala
下载Scala(版本2.10.6),解压到/usr/lib路径下,添加环境变量
exportSCALA_HOME=/home/test/install/scala-2.11.6 export PATH=$SCALA_HOME/bin:$PATH
在终端中键入scala,能进入Scala命令行即安装成功
Slave需要在同样的路径下安装相同版本的Scala
12、安装配置 spark
在master机器上:
下载spark1.6.0pre-built for hadoop2.6.0,解压到/usr/目录下,重命
名为spark,修改所有者:
sudo chown -R hadoop:hadoop /usr/spark
修改环境变量:
vim ~/.bashrc #添加如下内容 export SPARK_HOME=/usr/spark export PYTHONPATH=$SPARK_HOME/python:$SPARK_HOME/python/build:$PYTHONPATH export PATH=$PATH:$SPARK_HOME/bin:$SPARK_HOME/sbin |
使用source语句使环境变量生效。
配置spark
进入spark安装目录下的conf目录,修改配置文件:
cd /usr/spark/conf cp spark-env.sh.template spark-env.sh #添加如下内容 export SCALA_HOME=/usr/lib/scala-2.10.6 export JAVA_HOME=/usr/lib/jvm/jdk1.7.0_79 export SPARK_MASTER_IP=192.168.1.101 export SPARK_WORKER_MEMORY=1g export HADOOP_CONF_DIR=/usr/hadoop/etc/hadoop |
其中:
JAVA_HOME 指定 Java 安装目录;
SCALA_HOME 指定 Scala 安装目录;
SPARK_MASTER_IP 指定 Spark 集群 Master 节点的 IP 地址;
SPARK_WORKER_MEMORY 指定的是 Worker 节点能够分配给 Executors 的最大内
存大小;
HADOOP_CONF_DIR指定Hadoop 集群配置文件目录。将 slaves.template 拷贝到 slaves,编辑其内容为:
master slave01 slave02
至此master节点的spark安装完成,下面将spark拷贝到slave节点在master节点执行
cd /usr/ tar-zcf ~/spark.master.tar.gz ./spark # 先压缩再复制
cd ~scp ./spark.master.tar.gzhadoop@slave1:/home/hadoop
在slave节点执行
sudo tar -zxf ~/spark.master.tar.gz -C/usr/
sudo chown -R hadoop:hadoop /usr/spark
和master一样,在slave节点添加环境变量。
四、运行集群
1、启动 hadoop 集群
start-dfs.sh start-yarn.sh
mr-jobhistory-daemon.sh starthistoryserver
2、启动 spark
start-master.shstart-slaves.sh
在浏览器中输入master:8080查看集群是否启动。
五、参考资料
1、Spark快速入门指南 – Spark安装与基础使用
http://dblab.xmu.edu.cn/blog/spark-quick-start-guide/#more-577
2、Hadoop安装教程_单机/伪分布式配置_Hadoop2.6.0/Ubuntu14.04
http://dblab.xmu.edu.cn/blog/install-hadoop/
3、Hadoop集群安装配置教程_Hadoop2.6.0_Ubuntu/CentOShttp://dblab.xmu.edu.cn/blog/install-hadoop-cluster/
4、Hadoop集群(第5期)_Hadoop安装配置
http://www.cnblogs.com/xia520pi/archive/2012/05/16/2503949.html
5、spark 介绍及本地模式、集群模式安装
http://www.aboutyun.com/thread-8160-1-1.html
6、hadoop(2.x)以hadoop2.2为例完全分布式最新高可靠安装文档
http://www.aboutyun.com/thread-7684-1-1.html
7、Spark 1.6.1分布式集群环境搭建
http://www.w2bc.com/article/121907