1. 配置linux系统环境
- centos 6.4 下载地址:http://pan.baidu.com/s/1geoSWuv【VMWare专用CentOS.rar】(安装打包好的VM压缩包)
- 并配置虚拟机网络连接为“仅主机模式”(使主机和虚拟机可以互通)
3. 设置虚拟机固定ip,设置好重启网络:service network restart
2. 关闭防火墙
123456su
root
service iptables stop
#关闭防火墙
service iptables status
#验证是否关闭
chkconfig iptables off
#关闭防火墙的开机自动运行
chkconfig –list |
grep
iptables
#验证防火墙的开机自动运行
vim
/etc/sysconfig/selinux
# 禁用selinux,将SELINUX=disabled
3. 修改主机名(必须要修改为hadoop)
123hostname
#查看当前主机名
hostname
hadoop
#设置主机名,本次生效
vim
/etc/sysconfig/network
#修改HOSTNAME=hadoop,永久生效
4. 把hostname和ip绑定(设置DNS解析)
12vim
/etc/hosts
#增加 192.168.17.100 hadoop
reboot
adduser hadoop01passwd hadoop01设置密码:hadoop01却换root用户给hadoop01设置权限,设置允许root命令的用户
su rootchmod 751 /etc/sudoers #设置可读写vim /etc/sudoershadoop01 ALL=(ALL) ALL #在Allow root to run any commands anywhere 下添加一行直接使用root
6. SSH免密码登陆
123ssh
-keygen -t rsa
#回车,产生密钥,位于~/.ssh下
cp
~/.
ssh
/id_rsa
.pub ~/.
ssh
/authorized_keys2
#(或ssh-copy-id localhost)
ssh localhost
#验证,免密码登陆
7. 安装jdk(64bit:http://pan.baidu.com/s/1nua41ol【jdk-7u79-linux-x64.gz】,32bit:http://pan.baidu.com/s/1dDJPDNr【jdk-7u79-linux-i586.gz】)
(Hadoop2.7.x 支持到1.7,所以推荐安装1.7的jdk,http://wiki.apache.org/hadoop/HadoopJavaVersions)
123456789cd
/usr/local/src
mkdir
java
cd
java
mkdir
jdk
#jdk解压到此处 sudo tar -zxvf xxx
vim
/etc/profile
#配置环境变量,追加
export
JAVA_HOME=
/usr/local/src/java/jdk
export
PATH=$PATH:$JAVA_HOME
/bin
source
/etc/profile
# 让配置生效
java –version
# 查看是否安装成功
8. 安装Hadoop(单节点安装)
下载hadoop,http://apache.fayea.com/hadoop/common/hadoop-2.7.2/ (如果为64bit系统要自己编译源码,具体参考下面参考的视频连接,64bit编译好的下载地址:http://pan.baidu.com/s/1c0TuAgo)
1. 配置hdfs
12345678910111213141516171819202122232425cd
/usr/local/src
mkdir
hadoop
# 解压hadoop压缩包到此处
cd
hadoop
mkdir
data
cd
data
mkdir
tmp
#存放临时目录运行时产生数据
vim etc
/hadoop/hadoop-env
.sh
# JAVA_HOME修改为实际路径JAVA_HOME=/usr/local/src/java/jdk
vim etc
/hadoop/core-site
.xml
#配置新增:配置hdfs访问的端口 8020(2.x以后支持8020)
<property>
<name>fs.defaultFS<
/name
>
<value>hdfs:
//hadoop
:8020<
/value
>
<
/property
>
#修改临时目录运行时产生数据的目录:(默认在tmp,在linux系统中可能回被删除)
<property>
<name>hadoop.tmp.
dir
<
/name
>
<value>
/usr/local/src/hadoop/data/tmp
<
/value
>
<
/property
>
vim etc
/hadoop/hdfs-site
.xml
# 配置默认副本的备份个数(一般是3个,这里伪分布式只要1份就可以)
<property>
<name>dfs.replication<
/name
>
<value>1<
/value
>
<
/property
>
bin
/hdfs
namenode -
format
# 格式化文件系统
sbin
/start-dfs
.sh
# 启动 jps查看启动进行情况,启动三个进程,namenode存储元数据,datanode存储数据
sbin
/stop-dfs
.sh
#关闭
查看日志目录logs
查看hdfs的状态:http://192.168.17.100:50070/
2. 安装yarn(资源调度)
12345678910111213mv
etc
/hadoop/mapred-site
.xml.template etc
/hadoop/mapred-site
.xml
vim etc
/hadoop/mapred-site
.xml
#使mapreduce用yarn来调度
<property>
<name>mapreduce.framework.name<
/name
>
<value>yarn<
/value
>
<
/property
>
vim etc
/hadoop/yarn-site
.xml
#配置Reduce取数据的方式是shuffle
<property>
<name>yarn.nodemanager.aux-services<
/name
>
<value>mapreduce_shuffle<
/value
>
<
/property
>
sbin
/start-yarn
.sh
# 启动( jsp可以看到多了两个进程 resourcesManage管理总的资源分配, NodeManage 管理该台节点的资源)
sbin
/stop-yarn
.sh
#关闭
yarn的监控界面 http://192.168.17.100:8088/cluster
关闭所有:stop-all.sh分别启动各个进程:执行的命令是“hadoop-daemon.sh start [进程名称]”,这种启动方式适合于单独增加
9. 测试hadoop(词频统计)
123456789cd
/usr/local/src/hadoop/data
vim words
# 输入 hello a,hello b
cd
/usr/local/src/hadoop
bin
/hadoop
fs -put
/usr/local/src/hadoop/data/words
/words
# 把words上传到hdfs,
# 可以在http://192.168.17.100:50070/看到 hdfd默认128M的超过的话回切分多个128M的快来处理
bin
/hadoop
jar share
/hadoop/mapreduce/hadoop-mapreduce-examples-2
.7.2.jar wordcount
/words
/out
#运行demo
#查看运行状态 http://192.168.17.100:8088
bin
/hadoop
fs -
ls
/out
bin
/hadoop
fs -cat
/out/part-r-00000
10. 词频统计 MapReduce原理简单分析
1234567891011121314151617181920212223242526272829303132333435363738map阶段:
输入数据:
<
0
,"hello a">
<
8
,"hello b">
输出数据:
map(key,value,context) {
String line = value;
//hello a
String[] words = value.split("\t");
for(String word : words) {
//hello
// a
// hello
// b
context.write(word,1);
}
}
<
hello
,1>
<
a
,1>
<
hello
,1>
<
b
,1>
reduce阶段(分组排序):
输入数据:
<
a
,1>
<
b
,1>
<
hello
,{1,1}>
输出数据:
reduce(key,value,context) {
int sum = 0;
String word = key;
for(int i : value) {
sum += i;
}
context.write(word,sum);
}
10. 其他问题
1. NameNode进程没有启动成功
1. 没有格式化
2. 配置文件只copy不修改
3. hostname没有和ip绑定
4. ssh的免密码登陆没有配置成功
2. 多次格式化hadoop也是错误的?
1. 删除/usr/local/src/hadoop/data/tmp文件夹,从新格式化
参考:
1. http://www.jikexueyuan.com/course/2475_3.html?ss=1【hadoop入门】,资料 链接:http://pan.baidu.com/s/1hrh0mhA 密码:w779【press-2949-package-v1.zip】