Hadoop 完全分布式(CentOS 6.8)
1. 前期准备
- 下载并安装Hadoop包和JDK
Hadoop解压在/root/bigdata
下;jdk解压在/home/soft
- 为每台主机配置IP地址以及修改主机名
vim /etc/sysconfig/network-scripts/ifcfg-eth0
vim /etc/hosts
重启生效
2. 配置环境变量
- 编辑文件/etc/profile
export HADOOP_HOME=/root/bigdata/hadoop-2.6.4
export JAVA_HOME=/home/soft/jdk1.7.0_80
export PATH=$HADOOP_HOME/bin:$HADOOP_HOME/sbin:$JAVA_HOME/bin$PATH
source /etc/profile使文件生效
- 验证生效
java -version
hadoop version
3. 免密登录配置
Hadoop集群之间是通过SSH进行通讯的,这就要求主节点和其他节点之间可以通过SSH进行登录,并且要免密。
免密登录的原理:
注:当服务器A通过SSH登录到主机B时,会在主机A的/root/.ssh/(~/.ssh/)
目录下生成一个known_hosts
文件用来记录主机B的一些信息,实现免密登录,在主机A上使用命令ssh-keygen -t rsa
,则会在A的~/.sh
下生成(公钥)id_rsa
和(私钥)id_rsa.pub
文件,当主机B~/.sh
的目录下有A的公钥的时候,A就可以免密登录到B了。
- 进入~./ssh目录下,执行以下命令生成秘钥和公钥文件(每个节点都要执行)
ssh-keygen -t rsa
(3次回车) - 将上步各个节点生成的
id_rsa.pub
内容复制到同一个文件,并分发到各个节点~/.ssh
目录下
ssh-copy-id -i id_rsa.pub root@主机名
4. 修改配置文件
修改/root/bigdata/hadoop-2.6.4/etc/hadoop/
下的配置文件
hadoop-env.sh、core-site.xml、hdfs-site.xml、mapred-site.xml.template、yarn-site.xml
- hadoop-env.sh
该文件默认有个export JAVA_HOME=${JAVA_HOME}
将其改为你的JAVA_HOME路径 - core-site.xml
core-site.xml
包含了整个Hadoop发行版的通用配置
<configuration>
<!-- 指定Hadoop所使用的文件系统URI,HDFS的老大的地址 -->
<property>
<name>fs.default.name</name>
<value>hdfs://MasterLi:9000</value>
<description>HDFS的URI,文件系统://namenode标识:端口号</description>
</property>
<!-- 指定hadoop运行时产生的文件的存储目录 -->
<property>
<name>hadoop.tmp.dir</name>
<value>/root/bigdate/hadoop-2.6.4/tmp</value>
</property>
</configuration>
- hdfs-site.xml
hdfs-site.xml
包含了HDFS的配置
<configuration>
<!--指定副本的数量,默认是3个-->
<property>
<name>dfs.replication</name>
<value>3</value>
</property>
<!--指定secondaryNameNode的地址和端口号-->
<property>
<name>dfs.namenode.secondary.http-address</name>
<value>slave01:50090</value>
</property>
</configuration>
- mapred-site.xml
mapred-site.xml.template
包含了MapReduce的配置
将mapred-site.xml.template
重命名为mapred-site.xml
<configuration>
<property>
<!--指定MapReduce运行在yarn上-->
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
</configuration>
- yarn-site.xml
<configuration>
<!-- 指定yarn上运行的是MapReduce程序,reducer获取数据的方式 -->
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
<!-- 指定yarn的老大ResourceManager 的地址 -->
<property>
<name>yarn.resourcemanager.hostname</name>
<value>MasterLi</value>
</property>
</configuration>
- slaves
定义datanode从节点所在哪台机器
5 启动Hadoop##
格式化Hadoop
格式化HDFS文件系统hdfs namenode -format
启动Hadoop
start-all.ssh 启动Hadoop
查看是否成功的方法,终端输入jps,出现以下信息即成功
23537 NodeManager
23233 ResourceManager
23684 Jps
22697 NameNode
此时,在浏览器分别输入localhost:8088和localhost:50070