Hadoop 分为两大块:HDFS 和 MapReduce
HDFS是一个分布式存储文件系统,Mapreduce是一个分布式计算的框架,两者结合起来,就可以很容易做一些分布式处理任务了。
一 安装JDK1.7
Linux会自带JDK,如果不使用自带版本的话需要卸载。
1. 卸载系统自带的jdk版本
查看自带的jdk
#rpm -qa | grep gcj
使用rpm -e --nodeps 命令删除上面查找的内容:
创建hadoop用户组和用户
groupadd -g hadoop
useradd -g hadoop hadoop
passwd hadoop
2. 安装 java JDK
mkdir /usr/java
解压jdk包:tar -zxvf jdkXXXXXXX.tar.gz
安装包在其他文件夹的时候要加上解压存放路径:
将java添加到环境变量中
在文件末尾加上:
export JAVA_HOME=/usr/java/jdk1.7.0_79
export PATH=$PATH: /usr/java/jdk1.7.0_79/bin
刷新配置:
source /etc/profile
验证jdk是否安装成功:
二 配置SSH免密码登陆
首先,确保当前可以连接到互联网。在root下修改/etc/ssh/sshd_config文件(客户端、服务器都需要更改),将
#AuthorizedKeysFile .ssh/authorized_keys
前面的#号去掉,即启用
AuthorizedKeysFile .ssh/authorized_keys
如果需要root也能ssh登录,把“#PermitRootLogin yes”前面的#号也去掉。
同样root账户下,重启sshd服务使之生效
/etc/rc.d/init.d/sshd restart
设置免密码登录,生成私钥和公钥
ssh-keygen -t dsa
服务器中,切换到需要ssh登录的帐户下:
如果服务器中尚未建立公私钥对,那么首先按照客户端的方法建立公私钥对
scp 账户名@客户端主机名或ip地址:/home/帐户名/.ssh/id_dsa.pub /home/帐户名/
将客户端账户的公钥拷到服务器中。客户端用主机名或ip地址均可,但是需与ssh登录命令相符,建议将主机名与ip地址写入/etc/hosts中,此处用主机名即可(下同)。
yes 将客户端写入known_hosts中
输入客户端中的账户密码完成复制
此时会在 /home/hadoop/.ssh 下生产两个文件: id_rsa 和 id_rsa.pub , 前者为私钥,后者为公钥。
下面我们将公钥加到 authorized_keys 中,它用户保存所有允许以当前用户身份登录到ssh客户端用户的公钥内容。
cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
显示SSH已经安装成功了。输入命令:
登录 ssh
ssh 10.0.2.15 (本机客户IP地址或是hostname :比如loaclhost/hadoop1 ) 或是在 /etc/hosts 文件中修改 映射ip地址和主机名,
备注将普通用户修改为超级用户的方法:
进入超级用户模式。也就是输入"su -",系统会让你输入超级用户密码,输入密码后就进入了超级用户模式。
l 添加文件的写权限。也就是输入命令"chmod u+w /etc/sudoers"。
l 编辑/etc/sudoers文件。也就是输入命令"vim /etc/sudoers",输入"i"进入编辑模式,找到这一行:"root ALL=(ALL) ALL"在起下面添加"xxx ALL=(ALL) ALL"(这里的xxx是你的用户名),然后保存(就是先摁一下Esc键,然后输入":wq")退出。
l 撤销文件的写权限。也就是输入命令"chmod u-w /etc/sudoers"。
赋予hadoop用户和root一样的权限:
三 安装hadoop
先介绍一下Hadoop对各个节点的角色意义:
Hadoop分别从三个角度将主机划分为两种角色。第一,划分为master和salve,即主人与奴隶;第二,从HDFS的角度,将主机划分为NameNode和DataNode(在分布式文件系统中,目标的管理很重要,管理目录的就相当于主人,而NameNode就是目录管理者);第三,从MapReduce的角度,将主机划分为JobTracker和TaskTracker(一个job经常被划分为多个task,从这个角度不难理解它们之间的关系)。
Hadoop有官方发行版与cloudera版,其中cloudera版是Hadoop的商用版本。下面介绍Hadoop官方发行版的安装方法。
Hadoop有三种运行方式:单节点方式、单击伪分布方式与集群方式。乍看之下,前两种方式并不能体现云计算的优势,在实际应用中并没有什么意义,但是在程序的测试与调试过程中,他们还是很有意义的。
1.上传hadoop包,我这里使用FileZilla上传到 linux下/root/centos目录下
2.解压hadoop包
tar -zxvf hadoop-2.2.0.tar.gz -C /usr/local/
mv hadoop-2.2.0 hadoop
3.配置hadoop伪分布式(要修改etc/下的4个文件)
可以把伪分布式的Hadoop看作是一个节点的集群,在这个集群中,这个节点既是master,也是salve;既是NameNode也是DataNode;既是JobTracker,也是TaskTracker。
伪分布式的配置过程也很简单,只需要修改几个文件,如下所示。
第一个:hadoop-env.sh ( 指定JDK的安装位置)
vim hadoop-env.sh
export JAVA_HOME=/usr/java/jdk1.7.0_79
第二个:core-site.xml
<configuration>
<property>
<name>fs.default.name</name>
<value>hdfs://hadoop1:9000</value>
</property>
</configuration>
这是hadoop核心的配置文件,这里配置的是HDFS的地址和端口号。
第三个:hdfs-site.xml
<configuration>
<property>
<name>dfs.replication</name>
<value>1</value>
</property>
</configuration>
这是Hadoop中的HDFS的配置,配置的备份方式默认为3,��单机版的Hadoop中,需要将其改为1.
第四个:mapred-site.xml (需要从此文件复制mapred-site.xml.template) 即cp mapred-site.xml.template mapred-site.xml
<configuration>
<property>
<name>mapred.job.tracker</name>
<value>hadoop1:9001</value>
</property>
</configuration>
这是Hadoop中MapReduce的配置文件,配置的是JobTracker的地址和端口。
需要注意的是,如果安装的是0.20之前的版本,那么只有一个配置文件,即为Hadoop-site.xml。
4.将Hadoop添加到环境变量中
vim /etc/profile
5.初始化HDFS(格式化文件系统,此步类似刚买U盘需要格式化)
首先赋予hadoop用户hadoop文件夹的使用权限:
输入命令:
利用jps查看已经启动的服务:
找不到 java进程:
原因是系统自带的jdk没有删除干净,导致java路径读取的是原系统的路径:
再查看jps:
使用 http://localhost:50070/.会看到 hdfs的管理界面
但是 mapreduce的web页面打不开可能有3个原因:
1.防火墙没有关闭,
查看防护墙状态
service iptables statu
关闭
service iptables stop
查看防火墙开机启动状态
chkconfig iptables --list
关闭开机启动
chkconfig iptables off
2.端口没有打开;
3 /etc/profile 文件中 HADOOP_HOME 路径配置错误
然后重新执行 sbin/start-all.sh
再 jps查看一下进程:
验证是否安装成功: