hadoop2.7.3 完全分布式集群搭建及任务测试
第一步 准备工作
准备3台服务器或者虚拟机,为了学习并节省成本,可以使用VirtualBox或者wmware 来创建虚拟机
本人使用的是VirtualBox,系统是ubuntu16.04LTS, jdk1.8.0_112, hadoop2.7.3
https://www.ubuntu.com/download 下载ubuntu16.04TLS
获取 ubuntu-16.04.1-desktop-amd64.iso
http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html 下载jdk
获取 jdk-8u112-linux-x64.tar.gz
http://hadoop.apache.org/releases.html 下载hadoop
获取 hadoop-2.7.3.tar.gz
https://www.virtualbox.org/wiki/Downloads 下载VirtualBox
根据你电脑的系统下载对应的版本
本人下载的是 VirtualBox_mac_5.0.24.dmg
第二步 安装
先在你的本机安装 VirtualBox.安装完后,
1 创建虚拟机
http://jingyan.baidu.com/article/cdddd41c5eea3153ca00e160.html 虚拟机创建教程。
安装时语言最好选用 English 内存大小 1024M
2 在ubuntu安装jdk
将下载好的jdk拖放到ubuntu中或者借用scp工具
在/usr/lib目录下创建jvm目录,然后将jdk1.8.0_112.tar.gz 拷贝到该目录下.
cd /usr/liib
mkdir jam
cd jvm
cp ~/jdk1.8.0_112.tar.gz /usr/lib/jvm/(假设你把jdk1.8.0_112.tar.gz放到了当前用户目录下)
tar -zxvf jdk1.8.0_112.tar.gz
mv jdk.1.8.0_112.tar.gz jdk.1.8.0_112
配置环境变量
sudo vi /etc/bash.bashrc 在文件尾部追加图下的内容
source /etc/bash.bashrc
java -version
3 安装hadoop
如下命令
cd /usr
cp ~/hadoop-2.7.3.tar.gz hadoop-2.7.3.tar.gz
tar -zxvf hadoop-2.7.3.tar.gz
mv hadoop-2.7.3.tar.gz hadoop
设置环境变量
sudo vi /etc/bash.bashrc 在文件尾部追加图下的内容
source /etc/bash.bashrc
hadoop version
修改hadoop的配置文件
cd /usr/hadoop/etc/hadoop
sudo vi hdfs.site.xml
sudo vi core.site.xml
sudo vi yarn.site.xml
sudo cp mapred-site.xml.template mapred-site.xml
sudo vi mapped-site.xml
sudo vi slaves
4 创建用户
sudo add group hadoop
sudo adduser -ingroup hadoop hadoop
输入2次密码
更改/usr/hadoop的拥有者和所属组(这一步很重要)
sudo chgrp -R hadoop /usr/hadoop/
sudo chown -R hadoop /usr/hadoop/
5 安装ssh
sudo apt-get install openssl-server
查看服务是否正确启动 ps -ef | grep ssh
切换用户 hadoop登入
su hadoop
输入密码(步骤4中输入的密码)
ssh-keygen -t rsa -P '' -f ~/.ssh/id_rsa
cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
chmod 0600 ~/.ssh/authorized_keys
然后 输入命令 ssh localhost 如果没有提示输入密码则表示成功。
(以上2-5的步骤是在master虚拟机上进行的操作)
6 (上面五个步骤成功后,关闭虚拟机)复制2台slave虚拟机
然后右键ubuntu—》复制 —》完全复制(重新配置网络)
如下面:就有3台虚拟机了
复制完后启动每台虚拟机 每台虚拟机用hadoop账号登入
这里我的master是ubuntu, slave1是ubuntu1,slave2是ubuntu2
这个时候需要每一台虚拟机都要修改主机名
sudo vi /etc/hostname
修改完后还要修改hosts文件,在每一台虚拟机的/etc/hosts的文件追加内容;
其中格式为 IP hostname(ip 指的是每台虚拟机的ip hostname 是上一步中修改的名字)
ifconfig 查看当前虚拟机的ip地址
然后在每一台虚拟机输入下面命令,看是否ping的通,ping通了则进行下一步
ping master
ping slave1
ping slave2
然后在检查一下每台虚拟机能否ssh无密码自链接
ssh localhost
如果不行的话,执行下面命令
ssh-keygen -t rsa -P '' -f ~/.ssh/id_rsa
cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
chmod 0600 ~/.ssh/authorized_keys
之后 实现master到slave1和slave2的无密码ssh登入操作
下面的步骤是每台slave的操作
scp hadoop@master:~/.ssh/id_rsa.pub ~/.ssh/master_rsa.pub
cat ~/.ssh/master_rsa.pub >> ~/.ssh/authorized_keys
最后在master虚拟机输入命令
ssh slave1
看能否不需要密码连接到slave1
7 启动hadoop
下面的步骤是在master虚拟机上进行的
cd /usr/hadoop
bin/hdsf namenode -format
sbin/start-all.sh
启动完成后分别检查每台虚拟机hadoop是否成功启动
输入命令
jps
浏览器输入
master:8088
master:50070
8 提交mapreduce任务测试
cd /usr/hadoop
bin/hdfs dfs -mkdir -p /user/hadoop
bin/hdfs dfs -mkdir input
bin/hdfs dfs -put *.txt input
bin/hadoop jar share/hadoop/mapreduce/hadoop-mapreduce-example-2.7.3.jar wordcount input output
bin/hdfs dfs -cat output