环境
Ubuntu 16.04 64位
hadoop 2.6.5
3台机:
master 192.168.1.106
slave1 192.168.1.107
slave2 192.168.1.108
1、搭建虚拟机
首先安装 VMware Workstation
接着安装Ubuntu 16.04 (百度上很多教程,此处略过)。
2、安装JDK
在oracle 官网下载最新版的安装包 (jdk-8u144-linux-x64.tar.gz);
解压到 /usr/local/
目录下;
在 ~/.bashrc
文件后面加上以下配置信息:
JAVA_HOME=/usr/local/jdk1.8.0_144
JRE_HOME=${JAVA_HOME}/jre
CLASSPATH=.:${JAVA_HOME}/lib/dt.jar:${JAVA_HOME}/lib/tools.jar:${JAVA_HOME}/lib
PATH=${JAVA_HOME}/bin:${PATH}
export JAVA_HOME JRE_HOME PATH CLASSPATH
source ~/.bashrc
运行此命令,使配置立即生效。
运行 java -version
查看一下:
hadoop@long-virtual-machine:~$ java -version
java version "1.8.0_144"
Java(TM) SE Runtime Environment (build 1.8.0_144-b01)
Java HotSpot(TM) 64-Bit Server VM (build 25.144-b01, mixed mode)
出现这些信息,说明JDK安装成功。
3、配置ssh
运行以下命令产生密钥:
ssh-keygen -t rsa -f ~/.ssh/id_rsa
接着键入以下指令:
cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
测试一下,出现以下提示:
hadoop@long-virtual-machine:~$ ssh localhost
ssh: connect to host localhost port 22: Connection refused
解决方法:
a 关闭防火墙
sudo ufw enable (开启)
sudo ufw disable (关闭)
sudo ufw status (查看状态)
b 安装openssh-server
sudo apt-get install openssh-server
可用以下命令查看:
hadoop@long-virtual-machine:/home/long/.ssh$ ps -e|grep ssh
3680 ? 00:00:00 sshd
再 ssh localhost
, 发现成功了。
PS: 这里先设置了ssh免密码登录,后面复制另外两台机,也可以进行免密码互相登录。但是,如果复制之后再来设置的话,就需要将3台机上的公钥即id_rsa.pub
都添加到各自的 ~/.ssh/authorized_keys 文件里,包括本机的公钥。
4、安装hadoop 2.6.5
官网上下载安装包:hadoop-2.6.5.tar.gz
解压到/usr/local目录下:
tar -xzvf hadoop-2.6.5.tar.gz
在/usr/local/hadoop-2.6.5
目录下新建tmp(临时文件)、hdfs/name(namenode)、hdfs/data(数据)3个目录
设置环境变量:
# set JDK env
JAVA_HOME=/usr/local/jdk1.8.0_144
JRE_HOME=${JAVA_HOME}/jre
CLASSPATH=.:${JAVA_HOME}/lib/dt.jar:${JAVA_HOME}/lib/tools.jar:${JAVA_HOME}/lib
# set hadoop env
HADOOP_HOME=/usr/local/hadoop-2.6.5
PATH=${HADOOP_HOME}/bin:${HADOOP_HOME}/sbin:${HADOOP_HOME}/lib:${JAVA_HOME}/bin:${PATH}
export HADOOP_HOME JAVA_HOME JRE_HOME PATH CLASSPATH
注:一定要配置$HADOOP_HOME/lib
,否则执行时可能会提示找不到类。
运行 source /etc/profile
, 使其立即生效。
hadoop-2.6.5/etc/hadoop/hadoop-env.sh # 环境变量
hadoop-2.6.5/etc/hadoop/yarn-env.sh # 运行YARN的脚本所使用的环境变量
hadoop-2.6.5/etc/hadoop/core-site.xml # hadoop core 的配置项,如hdfs和mapreduce常用的IO设置等
hadoop-2.6.5/etc/hadoop/hdfs-site.xml # hadoop 守护进程的配置项,namenode
hadoop-2.6.5/etc/hadoop/mapred-site.xml # mapreduce 守护进程的配置项
hadoop-2.6.5/etc/hadoop/yarn-site.xml # YARN守护进程的配置设置:资源管理器,作业历史服务器、Web应用程序代理服务器和节点管理器
hadoop-env.sh:
export JAVA_HOME=/usr/local/jdk1.8.0_144
yarn-env.sh:
export JAVA_HOME=/usr/local/jdk1.8.0_144
core-site.xml:
<configuration>
<property>
<name>fs.default.name</name>
<value>hdfs://master:9000</value>
<description>HDFS的URI,文件系统://namenode标识:端口号</description>
</property>
<property>
<name>hadoop.tmp.dir</name>
<value>/usr/local/hadoop-2.6.5/tmp</value>
<description>namenode上本地的hadoop临时文件夹</description>
</property>
</configuration>
hdfs-site.xml:
<configuration>
<property>
<name>dfs.name.dir</name>
<value>/usr/local/hadoop-2.6.5/hdfs/name</value>
<description>namenode上存储hdfs名字空间元数据 </description>
</property>
<property>
<name>dfs.data.dir</name>
<value>/usr/local/hadoop-2.6.5/hdfs/data</value>
<description>datanode上数据块的物理存储位置</description>
</property>
<property>
<name>dfs.replication</name>
<value>1</value>
<description>副本个数,配置默认是3,应小于datanode机器数量</description>
</property>
</configuration>
mapred-site.xml:
<configuration>
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
</configuration>
yarn-site.xml:
<configuration>
<!-- Site specific YARN configuration properties -->
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
<property>
<name>yarn.resourcemanager.webapp.address</name>
<value>${yarn.resourcemanager.master}:8088</value>
</property>
</configuration>
5、复制虚拟机
前面1-4均是在master中设置的,现在直接复制两份出来并改个名字(由于C盘空间不足,所以复制到D盘了)
6、xshell登录
分别用ifconfig 查出3 台机分配的IP ,然后用这个IP在xshell中新建一个会话,输入用户名和密码即可。
PS: 需要将网络设置成 桥接模式。
设置完后,用xshell登录,方便控制,如下:
7、继续配置
a、配置/etc/hosts
文件(3台机均需要配置):
127.0.0.1 localhost
127.0.1.1 long-virtual-machine
192.168.1.106 master
192.168.1.107 slave1
192.168.1.108 slave2
配置完之后,分别用如下指令测试是否可以免密码登录,3台机都要试一次,因为第一次需要输入yes确认,测试完,以后就不再需要输入yes 了。
ssh master
ssh slave1
ssh slave2 # 第一次均需要输入yes确认
基本没什么问题。
b、slaves(好像只需要配置master 即可,但全配置一遍准备没错)
hadoop@long-virtual-machine:/usr/local/hadoop-2.6.5$ vi etc/hadoop/slaves
输入:
slave1
slave2
保存即可
8、格式化
$ bin/hdfs namenode –format
之前遇到一个错误,如下 :
解决方法:
再次格式化:
成功。
9、启动
sbin/start-all.sh
用jps 查看:
master:
hadoop@long-virtual-machine:/usr/local/hadoop-2.6.5$ jps
47945 SecondaryNameNode
48107 ResourceManager
48174 Jps
47775 NameNode
slave1:
hadoop@long-virtual-machine:~$ jps
40793 DataNode
41081 Jps
40907 NodeManager
这应该算成功了吧,后期验证之后再补充。