hadoop完全分布式搭建(CentOS 6.5)

hadoop完全分布式搭建(CentOS 6.5)

1. 关闭防火墙

sudo service iptables stop

关闭防火墙自启

sudo chkconfig iptables off

注意:所有的机器防火墙都要关

2. 修改hostname

  • master节点
vim /etc/sysconfig/network
# ----------
HOSTNAME=master
  • slave1节点
vim /etc/sysconfig/network
# ----------
HOSTNAME=slave1
  • slave2节点
vim /etc/sysconfig/network
# ----------
HOSTNAME=slave2

3. 修改网络映射hosts

vim /etc/hosts
# -------
192.168.100.132 master
192.168.100.133 slave1
192.168.100.134 slave2

注意:所有的机器都要改

4. 配置免密登录

  • 生成密钥
ssh-keygen -t rsa # 一路回车
  • 将集群中的所有公钥集中到某台机器,生成免密授权登录文件
    • slave1:
      bash
      scp ~/.ssh/id_rsa.pub master:/home/hduser/.ssh/slave1
    • slave2:
      bash
      scp ~/.ssh/id_rsa.pub master:/home/hduser/.ssh/slave1
    • master
      bash
      cat id_rsa.pub >> authorized_keys
      cat slave1 >> authorized_keys
      cat slave2 >> authorized_keys
      chmod 600 authorized_keys # 必须改,不然不能免密登录
  • 将授权列表分发给slave1和slave2
scp ~/.ssh/authorized_keys slave1:/home/hduser/.ssh/authorized_keys
scp ~/.ssh/authorized_keys slave2:/home/hduser/.ssh/authorized_keys

5. 准备软件环境

把Hadoop、JDK的压缩包上传到集群中的每台机器、并解压。
可以先配好一台机器中的配置文件,再将软件复制到其他机器,减少配置的工作量。

6. 配置环境变量

vim /etc/profile
# -------
export HADOOP_HOME=/hadoop/hadoop-2.6.5
export JAVA_HOME=/hadoop/jdk1.8.0_172
export PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin:$JAVA_HOME/bin

注意:所有的机器都要改

7. 修改hadoop配置文件

7.1 hadoop-env.sh 和 yarn-env.sh

添加JAVA_HOME

7.2 core-site.xml

<property>
    <name>fs.defaultFS</name>
    <value>hdfs://master:9000</value>
    <description>默认的文件系统</description>
</property>
<!-- 8020 9000 都是HDFS的RPC端口,都可以 -->
<property>
    <name>hadoop.tmp.dir</name>
    <value>/hadoop/hadoop-2.6.5/data</value>
    <description></description>
</property>

7.3 hdfs-site.xml

<property>
    <name>dfs.replication</name>
    <value>2</value>
    <description>数据块备份数</description>
</property>
<property>
    <name>dfs.permissions.enabled</name>
    <value>false</value>
    <description>关闭权限检查</description>
</property>

7.4 mapred-site.xml

<property>
    <name>mapreduce.framework.name</name>
    <value>yarn</value>
    <description>指定运行mapreduce的框架</description>
</property>

7.5 yarn-site.xml

<property>
    <name>yarn.resourcemanager.hostname</name>
    <value>master</value>
    <description>指定namenode节点的地址</description>
</property>
<property>
    <name>yarn.nodemanager.aux-services</name>
    <value>mapreduce_shuffle</value>
    <description>NodeManager上运行的附属服务</description>
</property>
<property>
    <name>yarn.nodemanager.aux-services.mapreduce_shuffle.class</name>
    <value>org.apache.hadoop.mapred.ShuffleHandler</value>
    <description>指定shuffle类</description>
</property>
<property>
    <name>yarn.log-aggregation-enable</name>
    <value>true</value>
    <description>是否启用日志聚合,将slave节点的日志聚合至master</description>
</property>

7.6 配置slaves

slave1
slave2

8. 格式化namenode

hadoop namenode -format

9. 启动hadoop

# 启动HDFS
start-dfs.sh
# 启动yarn
start-yarn.sh

10. web端测试

11. hdfs上传下载文件测试

hadoop fs -put aa.txt /
hadoop fs -get /aa.txt

12. 测试MapReduce

使用hadoop自带的测试例
* 计算圆周率

hadoop jar hadoop-mapreduce-examples-2.6.5.jar pi 5 5
  • wordcount(单词计数)
hadoop jar hadoop-mapreduce-examples-2.6.5.jar wordcount <hdfs中的输入文件> <hdfs中输出目录>

注意:指定的输出目录在HDFS中必须 不存在,否则会出错

13. 补充

13.1 可能出现的错误

13.1.1 System times on machines may be out of sync. Check system time and time zones.

需要同步集群的时间,解决方案如下:

sudo yum -y install ntp ntpdate
ntpdate cn.pool.ntp.org

13.2 查看MapReduce运行历史日志

在mapred-site.xml增加配置

<property>
    <name>mapreduce.jobhistory.address</name>
    <value>master:10020</value>
    <description>MapReduce JobHistory Server IPC host:port</description>
</property>
<property>
    <name>mapreduce.jobhistory.webapp.address</name>
    <value>master:19888</value>
    <description>MapReduce JobHistory Server Web UI host:port</description>
</property>

启动服务

mr-jobhistory-daemon.sh start historyserver

14. 参考

猜你喜欢

转载自blog.csdn.net/goldlone/article/details/82184140