1 下载程序包:
http://hadoop.apache.org/releases.html
我们使用的是hadoop-2.7.1.tar.gz
2 安装hadoop
(1) 将hadoop-2.7.1.tar.gz拖拽到ubuntu桌面
(2) mkdir /usr/local/hadoop #在/usr/local/中创建hadoop目录用来存放程序文件
(3) cp -rf Desktop/hadoop-2.7.1.tar.gz /usr/local/hadoop/ #将hadoop的压缩文件拷贝到(2)中新建的/usr/local/hadoop目录
(4) 进入/user/local/Hadoop 解压刚才拷贝过来的压缩包,查看解压的压缩包,并删除原压缩包
cd /usr/local/Hadoop
tar –zxf Hadoop-2.7.1.tar.gz

3 配置hadoop为单机模式
(1) 配置java信息
vim /usr/local/hadoop/hadoop-2.7.1/etc/hadoop/hadoop-env.sh
在文件hadoop-env.sh的最后一行添加如下信息:
exportJAVA_HOME=/usr/lib/java/jdk1.7.0_80
使修改的配置信息立即生效:
source /usr/local/hadoop/hadoop-2.7.1/etc/hadoop/hadoop-env.sh
(2) 为了方便使用hadoop命令的方便,我们将hadoop相关命令添加进/etc/profile
vim /etc/profile
添加以下信息(注意分割符是“:”而不是“;”):
exportHADOOP_INSTALL=/usr/local/hadoop/hadoop-2.7.1
exportHADOOP_CONF_DIR=${HADOOP_INSTALL}/etc/hadoop
export HADOOP_COMMON_LIB_NATIVE_DIR=${HADOOP_INSTALL}/lib/native
exportHADOOP_OPTS="-Djava.library.path=${HADOOP_INSTALL}/lib"
exportPATH=${JAVA_HOME}/bin:${HADOOP_INSTALL}/bin:${HADOOP_INSTALL}/sbin:$PATH
(3) source /etc/profile #使修改的配置立即生效
(4) 测试hadoop是否安装正确
Hadoop version
4 在单机模式下执行wordcount程序
(1) 准备数据,我们就统计下hadoop的etc目录下xml文件中相同的单词数量
在/usr/local/hadoop目录建立input用来存入输入数据
将/usr/local/hadoop/hadoop-2.1.1/etc/hadoop/下的xml文件都拷贝到input中
(2) 运行hadoop自带的wordcount程序来统计单词(注输出文件不能存在,这样设计的目的防止,原始磁盘数据被覆盖)
hadoop jar /usr/local/hadoop/hadoop-2.7.1/share/hadoop/mapreduce/hadoop-mapreduce-examples-2.7.1.jarwordcount input output
执行结束:
(3) 查看运行结果:
结果:
单机模式的构建、配置和运行成功
5 配置hadoop为伪分布式
(1) 伪分布式需要配置的信息
A. Hadoop的核心配置文件core-site.xml,主要配置HDFS的地址和端口
B. Hadoop中hdfs的配置文件hdfs-site.xml,主要配置replication
(2) 配置core-site.xml
先在/usr/local/hadoop/hadoop-2.7.1下建立tmp,hdfs,hdfs/data,hdfs/name四个目录
先备份core-site.xml为core-site.xml.bak
配置文件core-site.xml,添加如下内容
(3) 配置hdfs-site.xml
先备份hdfs-site.xml为hdfs-site.xml.bak
在配置文件添加如下内容:
(4) 重启虚拟机
(5) 把namenode进行格式化
Hadoop namenode –format
格式化完成(格式化完成后namenode自动关闭):
(6) 启动hadoop
start-dfs.sh
(7) 使用jps查看
(8) 验证
http://localhost:50070/
我们的伪分布式搭建成功.
6 在伪分布式上运行wordcount程序
(1) 在fs中创建input目录
hadoop fs –mkdir input
(2) 将我们的数据放在fs上
hadoop fs -copyFromLocal/usr/local/hadoop/input/* /input
在网页中查看复制到fs上的文件
(3) 运行wordcount程序
hadoop jar/usr/local/hadoop/hadoop-2.7.1/share/hadoop/mapreduce/hadoop-mapreduce-examples-2.7.1.jarwordcount /input output
结束:
可以在网页上查到fs上生成了一个文件:
(4) 查看执行结果
hadoop fs -cat/user/root/output/part-r-00000
7 配置YARN
配置mapred-site.xml 和yarn-site.xml中
(1) 配置mapred-site.xml
因为已经有了mapred-site.xml.template作为备份文件,因此我们在建立一个内容和mapred-sit.xml.template一样的mapred-site.xml
在配置文件中添加以下内容,将mapreduce执行过程中的资源控制权交给YARN:
(2) 配置yarn-site.xml
先备份yarn的配置文件
copy –rf yarn-site.xml yarn-site.xml.bak
在配置文件中添加以下信息:
(3) 启动yarn 否则mapreduce在执行过程中找不到资源
start-yarn.sh
可以发现多了ResourceManager资源管理器的进程和NodeManager的进程
(4) 验证yarn
在浏览器中输入:http://localhost:8088/
成功配置yarn将会出现如下信息
8 配置YARN后执行wordcount程序
执行过程:
执行结束:
9 配置hadoop为完全分布式
9.1 准备操作系统
(1) 先移除虚拟机中的镜像
(2) 查看我们安装好的伪分布式Ubuntu文件大小,实际使用大概5G,默认分配了30G
我们的分布式选择三台系统,这里我们在虚拟机中建立三个Ubuntu系统(有条件的话还是放在真实物理机器上吧),我们需要90G来存储这三个Ubuntu系统
(3) 在本地操作系统复制三份镜像,根据磁盘的大小将镜像放在同一个盘符或者不同的盘符
我们在E盘已经有个镜像文件,我们把E盘的镜像文件给F盘复制一份,G盘复制一份
并且把E盘的镜像命名为master作为namenode和datanode节点,把F盘和G盘的镜像分别命名为slave1和slave2分别作为datanode节点
(4) 在虚拟机中加载系统
打开虚拟机->文件->打开
随后我们可以看到在虚拟机中加载到了一台Ubuntu系统
我们把E盘镜像在虚拟机中的名字改为:master
我们在用同样的方法将f盘和G盘的镜像加载进虚拟机分别命名为slave1和slave2
启动每台虚拟机:
开机时选择我已复制该虚拟机。
9.2 前期准备
(1) 修改主机名
分别将E,F,G盘对应的主机名改为master,slave1,slave2,因为E盘的主机名已经是master,现在我们就用F盘为例修改主机名:
修改前:
vim /etc/hostname #打开文件后我们发现默认名称为master
修改为:slave1并保存,并且重启.
同样修改G盘的主机名为slave2
(2) 配置主机名和ip的对应的关系
查看本机ip地址:
Ifconfig
分别查看master,slave1,slave2的地址
master: 192.168.189.130
slave1: 192.168.189.131
slave2: 192.168.189.132
配置每台机器的/etc/hosts文件如下:
在每台机器上ping以下每个ip看是否通
9.3 使用ssh无密码互相访问
A. ssh 公钥私钥相同,当然可以直接访问,现在我们就是这种方式
B. 每台机器的公钥和私钥都不同,下面我们主要讲这种方法:
a) 我们先删除每台机器原公钥私钥信息
rm –rf ~/.ssh/*
b) 再在每台机器上分别生成公钥信息和私钥信息
公钥和私钥存放的路径为~/.ssh/下
在将自己的公钥存放在authorized_keys中(重要)
c) 把slave1和slave2的公钥id_rsa.pub分别重命名为id_rsa.pubs1,id_rsa.pubs2并且传给master 在拷贝过程需要master的密码
Slave2
在master上查看会有如下文件,证明成功将文件传送过来
d) 在master上合并公钥
e) 将合并后的公钥文authorized_keys件发送给slave1和slave2
f) 互相测试用ssh无密码登录
9.4 修改配置文件
(1) 修改所有机器core-site.xml和mapred-site.xml中的localhost为master
我们先修改master机器
(2) 修改所有机器hdfs-site.xml中的df.replication的value值为3
我们先修改master机器