CentOS 6.5 hadoop 2.7.3 集群环境搭建
所需硬件,软件要求
使用 virtualbox 构建三台虚拟机模拟真实物理环境
操作系统:CentOS6.5
主机列表:
master ip: 192.168.3.171
slave1 ip: 192.168.3.135
slave2 ip: 192.168.3.136
为三台主机添加同一用户,设置密码:
# 添加用户
useradd hadoop
# 修改密码
passwd hadoop
SSH 免密码登录安装,配置
保证由master主机能够免密码登录到datanodes节点机上
# master 生成公钥
$ ssh-keygen -t rsa -P '' -f ~/.ssh/id_rsa
$ cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
$ chmod 0600 ~/.ssh/authorized_keys
复制 master 公钥到 datanodes节点机
# 复制 master 主机公钥到 datanode 节点机的 /tmp 目录
scp ~/.ssh/id_rsa.pub hadoop@192.168.3.135:/tmp/authorized_keys
scp ~/.ssh/id_rsa.pub hadoop@192.168.3.136:/tmp/authorized_keys
追加 /tmp/authorized_keys 到 ~/.ssh/authorized_keys
cat /tmp/authorized_keys >> ~/.ssh/authorized_keys
注意:
.ssh目录的权限必须是700
.ssh/authorized_keys文件权限必须是600
JDK的安装与卸载
卸载 JDK
# 检查当前安装的JDK
rpm -qa|grep gcj
rpm -qa|grep jdk
rpm -e --nodeps java-1.7.0-openjdk-1.7.0.45-2.4.3.3.el6.x86_64
rpm -e --nodeps java-1.6.0-openjdk-1.6.0.0-1.66.1.13.0.el6.x86_64
#查询当前系统中相关java 目录并删除
whereis java
java: /etc/java /usr/lib/java /usr/share/java
#删除查询出的结果目录
rm -fr /usr/share/java
rm -fr /usr/lib/java
rm -fr /etc/java
安装JDK
在usr目录下创建java目录并且下载JDK并且解压到 /usr/java 目录下
cd /usr
mkdir java
cd java
wget http://download.oracle.com/otn-pub/java/jdk/8u102-b14/jdk-8u102-linux-x64.tar.gz
tar -zxvf jdk-8u102-linux-x64.tar.gz
编辑 vim /etc/profile 文件并且在末尾追加
JAVA_HOME=/usr/java/jdk1.8.0_102
PATH=$JAVA_HOME/bin:$PATH
CLASSPATH=$JAVA_HOME/jre/lib/ext:$JAVA_HOME/lib/tools.jar
export PATH JAVA_HOME CLASSPATH
在不重新启动操作系统的情况下使 /etc/profile 文件生效
source /etc/profile
检查java的安装状态
[root@hadoop001 java]# javac
用法: javac <options> <source files>
其中, 可能的选项包括:
-g 生成所有调试信息
-g:none 不生成任何调试信息
-g:{lines,vars,source} 只生成某些调试信息
-nowarn 不生成任何警告
-verbose 输出有关编译器正在执行的操作的消息
-deprecation 输出使用已过时的 API 的源位置
-classpath <路径> 指定查找用户类文件和注释处理程序的位置
-cp <路径> 指定查找用户类文件和注释处理程序的位置
-sourcepath <路径> 指定查找输入源文件的位置
-bootclasspath <路径> 覆盖引导类文件的位置
-extdirs <目录> 覆盖所安装扩展的位置
-endorseddirs <目录> 覆盖签名的标准路径的位置
-proc:{none,only} 控制是否执行注释处理和/或编译。
-processor <class1>[,<class2>,<class3>...] 要运行的注释处理程序的名称; 绕过默认的搜索进程
-processorpath <路径> 指定查找注释处理程序的位置
-parameters 生成元数据以用于方法参数的反射
-d <目录> 指定放置生成的类文件的位置
-s <目录> 指定放置生成的源文件的位置
-h <目录> 指定放置生成的本机标头文件的位置
-implicit:{none,class} 指定是否为隐式引用文件生成类文件
-encoding <编码> 指定源文件使用的字符编码
-source <发行版> 提供与指定发行版的源兼容性
-target <发行版> 生成特定 VM 版本的类文件
-profile <配置文件> 请确保使用的 API 在指定的配置文件中可用
-version 版本信息
-help 输出标准选项的提要
-A关键字[=值] 传递给注释处理程序的选项
-X 输出非标准选项的提要
-J<标记> 直接将 <标记> 传递给运行时系统
-Werror 出现警告时终止编译
@<文件名> 从文件读取选项和文件名
[root@hadoop001 java]#
[root@hadoop001 java]# java -version
java version "1.8.0_102"
Java(TM) SE Runtime Environment (build 1.8.0_102-b14)
Java HotSpot(TM) 64-Bit Server VM (build 25.102-b14, mixed mode)
安装 Hadoop2.7.3
下载hadoop-2.7.3
cd /tmp
wget http://apache.fayea.com/hadoop/common/hadoop-2.7.3/hadoop-2.7.3.tar.gz
解压 hadoop-2.7.3.tar.gz
tar -zxvf hadoop-2.7.3.tar.gz
复制文件到 /usr 目录下
cp -R /tmp/hadoop-2.7.3 /usr/hadoop
配置hadoop的环境变量,在/etc/profile下追加
vim /etc/profile
追加如下的环境变量设置
HADOOP_HOME=/usr/hadoop
export HADOOP_INSTALL=$HADOOP_HOME
export HADOOP_MAPRED_HOME=$HADOOP_HOME
export HADOOP_COMMON_HOME=$HADOOP_HOME
export HADOOP_HDFS_HOME=$HADOOP_HOME
export YARN_HOME=$HADOOP_HOME
export HADOOP_COMMON_LIB_NATIVE_DIR=$HADOOP_HOME/lib/native
export PATH=$PATH:$HADOOP_HOME/sbin:$HADOOP_HOME/bin
修改 etc/hadoop/hadoop-env.sh 文件
vim etc/hadoop/hadoop-env.sh
# The java implementation to use.
#export JAVA_HOME=${JAVA_HOME}
export JAVA_HOME=/usr/java/jdk1.8.0_102
修改 etc/hadoop/core-site.xml 文件
<!-- Put site-specific property overrides in this file. -->
<configuration>
<property>
<name>hadoop.tmp.dir</name>
<value>file:/usr/hadoop/tmp</value>
<description>Abase for other temporary directories.</description>
</property>
<property>
<name>fs.defaultFS</name>
<value>hdfs://Master:9000</value>
</property>
</configuration>
修改 etc/hadoop/hdfs-site.xml 文件
<!-- Put site-specific property overrides in this file. -->
<configuration>
<property>
<name>dfs.namenode.secondary.http-address</name>
<value>Master:50090</value>
</property>
<property>
<name>dfs.replication</name>
<value>1</value>
</property>
<property>
<name>dfs.namenode.name.dir</name>
<value>file:/usr/hadoop/tmp/dfs/name</value>
</property>
<property>
<name>dfs.datanode.data.dir</name>
<value>file:/usr/hadoop/tmp/dfs/data</value>
</property>
</configuration>
修改 etc/hadoop/yarn-site.xml 文件
<configuration>
<!-- Site specific YARN configuration properties -->
<property>
<name>yarn.resourcemanager.hostname</name>
<value>Master</value>
</property>
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
</configuration>
修改 etc/hadoop/mapred-site.xml 文件
<!-- Put site-specific property overrides in this file. -->
<configuration>
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
<property>
<name>mapreduce.jobhistory.address</name>
<value>Master:10020</value>
</property>
<property>
<name>mapreduce.jobhistory.webapp.address</name>
<value>Master:19888</value>
</property>
</configuration>
修改 etc/hadoop/slaves 文件,添加
192.168.3.135
192.168.3.136
打包文件夹 /usr/hadoop ,复制到 datanode 节点机,保证节点机环境配置与master保持一致格式化文件系统
hdfs namenode -format
启动文件服务
start-dfs.sh
Make the HDFS directories required to execute MapReduce jobs:
创建用户文件系统文件夹
hdfs dfs -mkdir /user
hdfs dfs -mkdir /user/hadoop
复制文件本地文件到分布式文件系统 input 下
hdfs dfs -mkdir input
hdfs dfs -put etc/hadoop/*.xml input
执行提供的默认的例子
hadoop jar share/hadoop/mapreduce/hadoop-mapreduce-examples-*.jar grep input output 'dfs[a-z.]+'
复制分布式文件系统文件到本地系统
hdfs dfs -get output output
cat output/*
或查看分布式文件系统文件内容
hdfs dfs -cat output/*
启动 ResourceManager守护进程和NodeManager守护进程,启动mapResource jobhistory 历史记录服务
start-yarn.sh
mr-jobhistory-daemon.sh start historyserver
分别在各个主机上执行 jps 查看服务情况
[root@Master hadoop]#
[root@Master hadoop]# jps
10210 Jps
9698 SecondaryNameNode
9864 ResourceManager
9497 NameNode
[root@Master hadoop]#
[root@Slave1 hadoop]# jps
8071 NodeManager
8279 Jps
7961 DataNode
[root@Slave1 hadoop]#
[root@Slave2 hadoop]# jps
5266 NodeManager
5155 DataNode
5444 Jps
[root@Slave2 hadoop]#
[root@Slave2 hadoop]#
web 访问页面
http://master:50070/
http://master:8088/cluster
停止服务
stop-dfs.sh
stop-yarn.sh
mr-jobhistory-daemon.sh stop historyserver
服务备注:
start-dfs.sh start-yarn.sh mr-jobhistory-daemon.sh start historyserver