hadoop学习(二)

在之前我们顺利完成了hadoop的单机模式安装和伪分布安装,接下来我们就可以做集群了
在单机版本的基础上做本实验,我们利用vmware的快照功能挥恢复
,本实验设置一台服务机和一台节点
Server 192.168.224.10
Client1 192.168.224.11

File list:

  1. Java: jdk-8u191-linux-x64.tar.gz
  2. hadoop-2.7.1.tar.gz

步骤概要:
选定一台机器作为 Master
在 Master 节点上安装 Java 环境,Hadoop,并完成配置
在其他 Slave 节点上安装 Java 环境
将 Master 节点上的 /usr/local/hadoop 目录复制到其他 Slave 节点上
在 Master 节点上开启 Hadoop

!!!注意
需要在所有机器节点上执行如下命令来

  1. 关闭并禁用防火墙:
    // systemctl stop firewalld.service
    // systemctl disable firewalld.service

  2. 设置主机名称
    // hostnamectl set-hostname servername.com

  3. 设置自定义域名解析
    // vim /etc/hosts
    // 192.168.1.2 servername.com

  4. 关闭selinux安全性
    // setenforce 0
    // vim /etc/selinux/config
    SELINUX=disable

  5. 时间同步
    ntpdate -u 202.112.10.36

On Client1:
// ssh-keygen

On Server:

// ssh-copy-id -i /root/.ssh/id_rsa.pub root@192.168.224.11


// vim /usr/local/hadoop/etc/hadoop/core-site.xml
<configuration>
    <property>
            <name>fs.defaultFS</name>
            <value>hdfs://192.168.224.10:9000</value>
    </property>
    <property>
            <name>hadoop.tmp.dir</name>
            <value>file:///usr/local/hadoop/tmp</value>
    </property>
</configuration>

// vim /usr/local/hadoop/etc/hadoop/hdfs-site.xml
<configuration>
    <property>
            <name>dfs.namenode.secondary.http-address</name>
            <value>192.168.224.10:50090</value>
    </property>
    <property>
            <name>dfs.replication</name>
            <value>2</value>
    </property>
    <property>
            <name>dfs.namenode.name.dir</name>
            <value>file:///usr/local/hadoop/tmp/dfs/name</value>
    </property>
    <property>
            <name>dfs.datanode.data.dir</name>
            <value>file:///usr/local/hadoop/tmp/dfs/data</value>
    </property>
</configuration>


// vim /usr/local/hadoop/etc/hadoop/mapred-site.xml
<configuration>
    <property>
            <name>mapreduce.framework.name</name>
            <value>yarn</value>
    </property>
    <property>
            <name>mapreduce.jobhistory.address</name>
            <value>192.168.224.10:10020</value>
    </property>
    <property>
            <name>mapreduce.jobhistory.webapp.address</name>
            <value>192.168.224.10:19888</value>
    </property>
</configuration>

// vim /usr/local/hadoop/etc/hadoop/yarn-site.xml
<configuration>
    <property>
            <name>yarn.resourcemanager.hostname</name>
            <value>192.168.224.10</value>
    </property>
    <property>
            <name>yarn.nodemanager.aux-services</name>
            <value>mapreduce_shuffle</value>
    </property>
</configuration>

// echo 192.168.224.10 > /usr/local/hadoop/etc/hadoop/master
// echo 192.168.224.11 > /usr/local/hadoop/etc/hadoop/slaves

配置好后,将 Server 上的 /usr/local/Hadoop 文件夹复制到各个节点上。因为之前有跑过伪分布式模式,建议在切换到集群模式前先删除之前的临时文件。在 Server 节点上执行:
注意一定要

// cd /usr/local
// rm -rf ./hadoop/tmp     // 删除 Hadoop 临时文件
// rm -rf ./hadoop/logs/*   // 删除日志文件
// tar -zcvf /root/hadoop.master.tar.gz ./hadoop   // 压缩
// scp /root/hadoop.master.tar.gz root@192.168.224.11:/root/

On Client:

// tar -zxvf /root/hadoop.master.tar.gz -C /usr/local

Java解压到并改名为 /usr/local/jdk

// vim /etc/profile
export JAVA_HOME=/usr/local/jdk
export HADOOP_HOME=/usr/local/hadoop
export PATH=$PATH:$JAVA_HOME/bin:$HADOOP_HOME/bin:$HADOOP_HOME/sbin:
export CLASS_PATH=$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar

// source /etc/profile

同样,如果有其他 Slave 节点,也要执行将 hadoop.master.tar.gz 传输到 Slave 节点、在 Slave 节点解压文件的操作。

On Server:

// hdfs namenode -format  
// start-dfs.sh
// start-yarn.sh
// jps

5584 ResourceManager
5844 Jps
5403 SecondaryNameNode
5199 NameNode

// hdfs dfsadmin -report

查看 DataNode 是否正常启动,如果 Live datanodes 不为 0 ,则说明集群启动成功

On Client1:
// jps
3526 DataNode
3691 NodeManager
3806 Jps

访问URL:http://192.168.224.10:50070/ 在主页中点击“Datanodes”,可以看到client1的信息

伪分布式、分布式配置切换时的注意事项
1, 从分布式切换到伪分布式时,不要忘记修改 slaves 配置文件;
2, 在两者之间切换时,若遇到无法正常启动的情况,可以删除所涉及节点的临时文件夹,这样虽然之前的数据会被删掉,但能保证集群正确启动。所以如果集群以前能启动,但后来启动不了,特别是 DataNode 无法启动,不妨试着删除所有节点(包括 Slave 节点)上的 /usr/local/hadoop/tmp 文件夹,再重新执行一次 hdfs namenode -format,再次启动试试。

===============================
执行分布式实例

// hdfs dfs -rm -r /output 如果目录已经删除就不需要执行

// echo this is my computer this is my computer > /root/input.txt
// hdfs dfs -mkdir -p /input
// hadoop fs -put /root/input.txt /input/input.txt

执行程序:

// hadoop jar /usr/local/hadoop/share/hadoop/mapreduce/sources/hadoop-mapreduce-examples-2.7.1-sources.jar org.apache.hadoop.examples.WordCount /input/input.txt /output
// hadoop fs -cat /output/part-r-00000

computer 2
is 2
my 2
this 2
以上结果表示分析成功

访问:http://192.168.224.10:8088/cluster 在页面上可以看到执行成功的任务。任务名称例如:“application_1546619214991_0001”。

==========================

添加集群新成员

为已有的集群添加新成员:

Server: 192.168.224.10
新成员: 192.168.224.1x

On Server:

// ssh-copy-id -i /root/.ssh/id_rsa.pub root@192.168.224.1x
// vim /usr/local/hadoop/etc/hadoop/slaves 加入新集群成员的IP
// cd /usr/local/
// tar -zcf /root/hadoop.master.tar.gz ./hadoop   // 先压缩再复制
// scp /root/hadoop.master.tar.gz 192.168.224.1x:/root

On Client:
安装Java,将目录设置为 /usr/local/jdk

// vim /etc/profile
export JAVA_HOME=/usr/local/jdk
export HADOOP_HOME=/usr/local/hadoop
export PATH=$PATH:$JAVA_HOME/bin:$HADOOP_HOME/bin:$HADOOP_HOME/sbin:
export CLASS_PATH=$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
// source /etc/profile

// cd /root/
// tar -zxvf  hadoop.master.tar.gz -C /usr/local

On Server:

// stop-all.sh
// start-all.sh

// jps
13688 SecondaryNameNode
14569 Jps
13482 NameNode
13853 ResourceManager

On Client:
// jps
8339 DataNode
8457 NodeManager
8985 Jps

访问:http://192.168.224.10:50070/dfshealth.html//tab-datanode 检查集群成员

========================

执行分布式实例

在所有的机器上执行命令

// cd /usr/local
// rm -rf ./hadoop/tmp     // 删除 Hadoop 临时文件
// rm -rf ./hadoop/logs/*   // 删除日志文件
// hdfs namenode -format

// hdfs dfs -rm -r /output 如果目录已经删除就不需要执行

// echo this is my computer this is my computer > /root/input.txt
// hdfs dfs -mkdir -p /input
// hadoop fs -put /root/input.txt /input/input.txt

执行程序:

// hadoop jar /usr/local/hadoop/share/hadoop/mapreduce/sources/hadoop-mapreduce-examples-2.7.1-sources.jar org.apache.hadoop.examples.WordCount /input/input.txt /output
// hadoop fs -cat /output/part-r-00000

computer 2
is 2
my 2
this 2
以上结果表示分析成功

访问:http://192.168.224.10:8088/cluster 在页面上可以看到执行成功的任务。任务名称例如:“application_1546619214991_0001”。

===================
FAQ:
故障诊断:

// tail -f /var/log/messages
Ctrl+z 退出日志跟踪

Hadoop日志

vim /usr/local/hadoop/logs/yarn-root-resourcemanager-server.cluster.com.log
vim /usr/local/hadoop/logs/hadoop-root-namenode-server.cluster.com.log

经验:
1、找不到datanode要在usr/local下清理临时文件
2、stop-all.sh,start-all.sh更好用
3、注意联网

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值