一. 系统配置与资源准备
- 操作系统:centos6.8
- java版本:1.7
- hadoop版本:2.5.0
二. 环境配置
1. 禁用selinux
vim /etc/sysconfig/selinux
SELINUX=disabled
2.关闭防火墙
service iptables status # 查看防火墙状态
service iptables stop # 关闭防火墙
chkconfig iptables off # 关闭防火墙开机自启动
3.配置HOSTNAME(需要重启电脑)
vim /etc/sysconfig/network
HOSTNAME=bigguider21.com
4.配置域名解析
vim /etc/hosts
192.168.28.21 bigguider21.com
5.网络环境配置
[root@bigguider21 hadoop-2.5.0-cdh5.3.6]# more /etc/sysconfig/network-scripts/ifcfg-eth0
DEVICE=eth0
TYPE=Ethernet
UUID=a8ef3dc5-deee-48cd-9e16-9e93815ccbc9
ONBOOT=yes
NM_CONTROLLED=yes
BOOTPROTO=none
HWADDR=00:0C:29:6D:D2:A0
IPADDR=192.168.28.21 #ip地址
PREFIX=24
GATEWAY=192.168.28.2 #网关
DNS1=192.168.28.2
DEFROUTE=yes
IPV4_FAILURE_FATAL=yes
IPV6INIT=no
NAME="System eth0"
三. 创建目录结构
--datas :数据文件夹
--modules :软件安装文件夹
--software : 软件源文件
--tools : 工具文件夹
cd ~
mkdir datas modules software tools
四. 安装并配置java
1. 查看自带java并卸载
rpm -qa | grep java # 查看安装java信息
java-1.7.0-openjdk-1.7.0.45-2.4.3.3.el6.x86_64
tzdata-java-2013g-1.el6.noarch
java-1.6.0-openjdk-1.6.0.0-1.66.1.13.0.el6.x86_64
# 卸载已安装java(多个用空格分割)
rpm -e --nodeps java-1.7.0-openjdk-1.7.0.45-2.4.3.3.el6.x86_64 java-1.6.0-openjdk-1.6.0.0-1.66.1.13.0.el6.x86_64
2. 安装java并配置环境变量
# 解压java源文件
tar -zxvf software/jdk-7u67-linux-x64.tar.gz -C modules/
#配置环境变量
vim /etc/profile
export JAVA_HOME=/root/modules/jdk1.7.0_67
export PATH=$PATH:$JAVA_HOME/bin
#使配置生效
source /etc/profile
3. 查看是否安装成功
java -version
java version "1.7.0_67"
Java(TM) SE Runtime Environment (build 1.7.0_67-b01)
Java HotSpot(TM) 64-Bit Server VM (build 24.65-b04, mixed mode)
五.Hadoop的安装与配置
1. Hadoop安装与环境变量配置
# 解压Hadoop源文件
tar -zxvf software/hadoop-2.5.0-cdh5.3.6.tar.gz -C modules/
# 配置环境变量
vim /etc/profile
export HADOOP_HOME=/root/modules/hadoop-2.5.0-cdh5.3.6
export PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin
# 使配置生效
source /etc/profile
2.配置设置
2.1 hadoop,mapreduce,yarn配置java路径
vim etc/hadoop/hadoop-env.sh
vim etc/hadoop/mapred-env.sh
vim etc/hadoop/yarn-env.sh
export JAVA_HOME=/root/modules/jdk1.7.0_67
2.2 Hadoop基本配置
# 创建临时文件目录
mkdir -p hadoop安装路径/data/tmp
# 修改core-site.xml
[root@bigguider21 hadoop-2.5.0-cdh5.3.6]# vim etc/hadoop/core-site.xml
<configuration>
<property>
<!--系统文件默认访问入口-->
<name>fs.defaultFS</name>
<value>hdfs://bigguider21.com:8020</value>
</property>
<property>
<!--系统生成文件的临时目录-->
<name>hadoop.tmp.dir</name>
<value>/root/modules/hadoop-2.5.0-cdh5.3.6/data/tmp</value>
</property>
</configuration>
# 修改hdfs-site.xml
[root@bigguider21 hadoop-2.5.0-cdh5.3.6]# vim etc/hadoop/hdfs-site.xml
<configuration>
<property>
<!--修改副本数量-->
<name>dfs.replication</name>
<value>1</value>
</property>
</configuration>
# 修改slaves(从节点机器位置主机名)
[root@bigguider21 hadoop-2.5.0-cdh5.3.6]# vim etc/hadoop/slaves
bigguider21.com
2.3 MapReduce配置文件修改
[root@bigguider21 hadoop-2.5.0-cdh5.3.6]# mv etc/hadoop/mapred-site.xml.template etc/hadoop/mapred-site.xml
vim etc/hadoop/mapred-site.xml
<configuration>
<!--使MapReduce运行在YARN上面-->
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
</configuration>
2.4 YARN配置文件修改
[root@bigguider21 hadoop-2.5.0-cdh5.3.6]# vim etc/hadoop/yarn-site.xml
<configuration>
<property> <!--MapReduce运行服务-->
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
<!--resourcemanager默认为启动的机器-->
<!--为分布式可以不进行配置,配置一般为主机名-->
<property>
<name>yarn.resourcemanager.hostname</name>
<value>bigguider21.com</value>
</property>
</configuration>
2.5 SecondaryNameNode配置(可选)
- 作用:1. 减少namenode启动时间,2.合并文件
- 原理:namenode启动时先读取fsimage文件,在读取edits文件,用户对HDFS操作越多,edits文件越大,导致读取时间过长,SecondaryNameNode合并fsimage/edits为新的fsimage,生成新的edits。用户对HDFS操作的任何行为操作都会记录在元数据文件,对于HDFS的操作会记录在编辑日志文件edits中。
- 配置:
vim $hadoop_home/etc/hadoop/hdfs-site.xml
<property>
<name>dfs.namenode.secondary.http-address</name>
<value>bigguider21.com:50090</value>
</property>
- 启动
# 外部访问:bigguider21.com:50090
sbin/hdaoop-daemon.sh start secondarynamenode
2.6 MapReduce历史服务器(可选)
- 作用:记录历史数据
- 配置:
vim $hadoop_home/etc/hadoop/mapred-site.xml
<!--MapReduce历史服务器,需要重启HDFS与YARN-->
<!--内部交互地址-->
<property>
<name>mapreduce.jobhistory.address</name>
<value>lee.cniao5.com:10020</value>
</property>
<!--外部交互地址-->
<property>
<name>mapreduce.jobhistory.webapp.address</name>
<value>bigguider21.com:19888</value>
</property>
- 启动:
sbin/mr-jobhistory-daemon.sh start historyservier
2.7 日志聚合(可选)
- 作用:将MapReduce产生的日志上传到HDFS对应目录中,便于从web页面查看。
- 配置:
vim $hadoop_home/etc/hadoop/yarn-site.xml
<property>
<name>yarn.log-aggregation-enable</name>
<value>true</value>
</property>
<property>
<name>yarn.log.server.url</name>
<value>http://bigguider21.com:19888/jobhistory/logs</value>
</property>
<property>
<name>yarn.log-aggregation.retain-seconds</name>
<value>604800</value>
</property>
- 启动:
# 重启yarn
2.8 文件权限(可选)
- 作用:HDFS的文件目录权限与Linux是完全一致的。(修改配置文件,使其不检测用户权限)
- 配置:
vim $hadoop_home/etc/hadoop/hdfs-site.xml
<property>
<name>dfs.permissions.enabled</name>
<value>false</value>
</property>
- 启动:
# 重启yarn
3. 格式化元数据
# 格式化namenode
# 在data/tmp文件夹下生成文件
# 只能格式化一次,如果需要,将tmp文件下内容删除再格式化
# 多次格式化会导致集群ID不一致,手动修改集群ID也可以多次格式化
[root@bigguider21 hadoop-2.5.0-cdh5.3.6]# hdfs namenode -format
4. 启动集群
[root@bigguider21 modules]# hadoop-daemon.sh start namenode
[root@bigguider21 modules]# hadoop-daemon.sh start datanode
# [root@bigguider21 modules]# hadoop-daemon.sh start secondarynamenode
[root@bigguider21 modules]# yarn-daemon.sh start resourcemanager
[root@bigguider21 modules]# yarn-daemon.sh start nodemanager
# [root@bigguider21 modules]# mr-jobhistory-daemon.sh start historyserver #历史服务器
5. 检验
游览HDFS界面网址
1. 192.168.28.21:50070
2. bigguider21.com:50070
启动SecondaryNameNode 外部访:bigguider21.com:50090
外部管理界面:bigguider21.com:8088
5.1.使用单词统计进行检验
hdfs dfs -help #查看版主文档
#创建输入文件夹
hdfs dfs -mkdir -p mapreduce/input
#上传数据文件到输入文件夹
hdfs dfs -put ~/data/s/file.input /user/root/maperduce/input
#执行单词统计任务
#在yarn上运行job时都必须打包jar
#输出目录不存在时,任务运行完自动创建,防止任务结果覆盖
bin/yarn jar share/hadoop/mapreduce/hadoop-mapreduce-examples-2.5.0.jar wordcount /user/root/mapreduce/input /user/root/mapreduce/output
#查看运行结果:_SUCCESS表示成功,结果在part-r-00000
hdfs dfs -text /user/root/mapreduce/output/part-r-000000
9. 常见问题
9.1 集群ID不一致
cd $hadoop_home/data/tmp/dfs/name/current/
cat VERSION
# Mon Apr 30 01:53:32 CST 2018
namespaceID=365367415
clusterID=CID-d45ee400-25dd-440f-92c8-858153467c48 #集群id
cTime=0
storageType=NAME_NODE
blockpoolID=BP-1315402128-192.168.28.21-1525024412095
layoutVersion=-59
- 原因:tmp目录且清空就进行格式化。
- 方法:删除data/tmp目录下的文件后重新格式化。
9.2 多用户毁用
- 原因:操作时多个用户同时使用。
- 方法:重新格式化
9.3 pid号错误
- 原因:多个用户开启同一个进程时。
- 方法:删除/tmp文件下的.pid文件
9.4 Navite警告
- 原因:信息中并没有获取到编译者在什么系统上编译Hadoop源码的。
- 方法:1.编译Hadoop源码;2.直接替换编译好的native本地库
网友评论