- 环境:虚拟机VM Centos 6.7
- Java:jdk-7u67-linux-x64.tar.gz
- Hadoop: hadoop-2.5.0.tar.gz
- IP/Host: 192.168.47.100/bigdata.001.com
设置虚拟机IP/Host
虚拟机 -> 编辑 -> 虚拟网络编辑器
1. 虚拟机设置为NAT模式。
2. 查看虚拟机的网段。
如图所示:网段是:192.168.47.* ,其中192.168.47.0/2这两个IP不可作为该虚拟机的IP地址。192.168.47.2 作为该虚拟机的DNS。
3. 可视化j界面来设置IP,如下图所示。
当然,也可以通过编辑 /etc/sysconfig/network-scripts/ifcfg-XXX来进行配置IP。
3. hostname 在 /etc/hosts 与IP进行关联
/etc/sysconfig/network 中修改hostname。
完成上述操作,重启Centos,可以通过hostname来查看Centos的hostname是否配置成功。
并且可以将虚拟机的Centos的IP写到windows中的hosts中,这样就可以在实体机window中ping通虚拟机Centos。
在配置 Hadoop 时,必须禁用selinux,
vi /etc/sysconfig/selinux
# SELINUX= can take one of these three values:
# enforcing - SELinux security policy is enforced.
# permissive - SELinux prints warnings instead of enforcing.
# disabled - SELinux is fully disabled.
SELINUX=disabled
同时需要关闭防火墙
看状态service iptables status
设置关闭service iptables stop
自启关闭chkconfig iptables off
安装Oracle Java
查看自带的JDK
rpm -qa | grep java
卸载自带的JDK
rpm -e --nodeps 卸载内容(卸载多文件使用空格)
解压JDK
tar -zxf jdk-7u67-linux-x64.tar.gz -C /opt/moduels/
配置java环境
vi /etc/profile 打开文件,并将下列三行添加到文件中。
##JAVA_HOME
export JAVA_HOME=/opt/moduels/jdk1.7.0_67
export PATH=$JAVA_HOME/bin:$PATH
source /etc/profile 加载全局变量文件,使其生效。
java -version 验证java是否安装成功
Hadoop之HDFS
- 解压 Hadoop压缩包, 这里选取 /opt/moduels 作为hadoop安装目录
tar -zxf hadoop-2.5.0.tar.gz -C /opt/moduels/
解压完成后,可以删除 hadoop目录下的 /share/doc 文件夹
- 修改 etc/hadoop/hadoop-env.sh, mapred-env.sh 和 yarn-env.sh 制定java安装路径。
export JAVA_HOME=/opt/moduels/jdk1.7.0_67
- 修改 etc/hadoop/core-site.xml
//默认文件系统访问入口,1.x系列端口号为9000
//hadoop.tmp.dir为hadoop系统生成文件的临时目录
<configuration>
<property>
<name>fs.defaultFS</name>
<value>hdfs://bigdata.001.com:8020</value><!--可以用IP来代替主机名-->
</property>
<property>
<name>hadoop.tmp.dir</name>
<value>/opt/moduels/hadoop-2.5.0/data/tmp</value>
</property>
</configuration>
- 修改 hdfs-site.xml
//修改副本数量, 表示hadoop会备份的数量, 如果当前改为1, 那么之后的所有副本都是是 1, 之前的不会改变.
<configuration>
<property>
<name>dfs.replication</name>
<value>1</value>
</property>
</configuration>
- 修改 slaves,配置本机的主机名。如果有其他内容,可以全部都删去。
//从节点机器位置主机名
bigdata.001.com
- 格式化 namenode
命令:bin/hdfs namenode -format
查看结果:data/tmp文件夹生成文件 (hadoop.tmp.dir 配置的路径)
//只能格式化一次,如果有需求,将tmp文件夹下内容删除再格式化
//多次格式化会导致集群ID不一致,手动修改集群ID也可以修复多次格式化问题
可以通过下列两个路径下的文件进行对比
/opt/app/hadoop-2.5.0/data/tmp/dfs/data/current
- 启动namenode和datanode
命令:
sbin/hadoop-daemon.sh start namenode
sbin/hadoop-daemon.sh start datanode
验证:
在 Centos 命令窗口使用jps查看进行。
- 打开浏览器,查看相关界面是否存在。存在即表示hdfs配置成功
http://bigdata.001.com:50070/
http://192.168.47.105:50070/
SecondaryNameNode 配置
//文件操作记录会进行存储为编辑日志edits文件
//namenode格式化之后生成镜像文件,namenode启动时会读取镜像文件
//SecondaryNameNode用于合并这两个文件,减少namenode启动时间
文件地址:hadoop-2.5.0/data/tmp/dfs/name/current
流程:SecondaryNameNode读取两种文件 -> 合并为fsimage文件 -> 生成新的edits文件
- 修改hdfs-site.xml文件,指定 secondarynamenode 机器位置和交互端口号:50090
<property>
<name>dfs.namenode.secondary.http-address</name>
<value>192.168.47.105:50090</value>
</property>
- 启动
sbin/hadoop-daemon.sh start secondarynamenode
- 访问验证
检验:jps
外部访问界面:http://lee.cniao5.com:50090
Hadoop配置——YARN与MapReduce
- 修改mapred-site.xml.template //.template表示不生效
mv mapred-site.xml.template mapred-site.xml
- 修改mapred-site.xml
//使MapReduce运行YARN上面
<configuration>
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
</configuration>
- 修改yarn-site.xml
//MapReduce运行服务
<configuration>
<!-- Site specific YARN configuration properties -->
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
</configuration>
//resourcemanager 默认为启动的机器
//伪分布式可以不进行配置,配置一般使用主机名
<configuration>
<property>
<name>yarn.resourcemanager.hostname</name>
<value>192.168.47.105</value>
</property>
</configuration>
- 启动
命令:
sbin/yarn-daemon.sh start resourcemanager
sbin/yarn-daemon.sh start nodemanager
//MapReduce不需要启动
//使用jps查看
外部管理界面
192.168.47.105:8088
MapReduce历史服务器
- 修改mapred-site.xml
//内部交互地址
<property>
<name>mapreduce.jobhistory.address</name>
<value>192.168.47.105:10020</value>
</property>
//外部交互地址
<property>
<name>mapreduce.jobhistory.webapp.address</name>
<value>192.168.47.105:19888</value>
</property>
- 启动
sbin/mr-jobhistory-daemon.sh start historyserver
检验:jps
//历史服务器需要重启HDFS与YARN
验证
使用单词统计进行检验
创建input文件夹 bin/hdfs dfs -mkdir -p mapreduce/input
上传统计文件 bin/hdfs dfs -put /opt/datas/file.input /user/root/mapreduce/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
(jar包中的类) (需要计算文件的路径) (得到结果的路径, 只能使用一次)
查看结果
//_SUCCESS表示成功 结果在part-r-00000
bin/hdfs dfs -text /user/root/mapreduce/output/part-r-00000
命令与操作
使用命令
/user/root 是hadoop 内部创建的一个根目录地址,可以在浏览器上看到
创建: bin/hdfs dfs -mkdir -p /user/root/lee
上传: bin/hdfs dfs -put etc/hadoop/core-site.xml /user/root/lee
读取: bin/hdfs dfs -text /user/root/lee/core-site.xml
下载: bin/hdfs dfs -get /user/root/lee/core-site.xml /home/cniao/core-site.xml
service iptables stop
chkconfig iptables off
rpm -qa | grep java
rpm -e --nodeps
tar -zxf jdk-7u67-linux-x64.tar.gz -C /opt/moduels/
sbin/hadoop-daemon.sh start namenode
sbin/hadoop-daemon.sh start datanode
bin/hdfs dfs -mkdir -p /user/root/lee
bin/hdfs dfs -put etc/hadoop/core-site.xml /user/root/lee
bin/hdfs dfs -text /user/root/lee/core-site.xml
bin/hdfs dfs -get /user/root/lee/core-site.xml /home/cniao/core-site.xml
sbin/hadoop-daemon.sh start secondarynamenode
sbin/yarn-daemon.sh start resourcemanager
sbin/yarn-daemon.sh start nodemanager
sbin/mr-jobhistory-daemon.sh start historyserver
bin/yarn jar share/hadoop/mapreduce/hadoop-mapreduce-examples-2.5.0.jar wordcount /user/root/mapreduce/input /user/root/mapreduce/output
bin/hdfs dfs -text /user/root/mapreduce/output/part-r-00000
可能存在的问题
集群ID不一致
删除data/tmp,重新格式化
进程启动失败
这个问题需要分析log,log位置/logs
尽量用IP来代替主机名
1. yum update 报错
处理: /etc/sysconfig/network-scripts/ifcfg-eth0 的文件进行修改,在最下边加上:
DNS1=8.8.4.4
DNS2=8.8.8.8
重启: service network restart
2. ssh 连接不上
处理:yum install openssh-server -> service sshd start -> chkconfig sshd on