centos 7.5hadoop环境搭建详解

开发环境
mac 系统 vm fusion centos 7.5mini

配置静态的ip地址

修改vim /etc/sysconfig/network-scripts/ifcfg-ens33 这个配置文件
在该文件中添加,修改如下内容:

BOOTPROTO="static" #配置为静态ip
#增加ip信息内容
IPADDR=192.168.31.11
GATEWAY=192.168.31.1
PREFIX=24
DNS1=114.114.114.114

修改HWADDR和vm 机器上的一致
修改UUID随意修改一个数就可以,保证在虚拟中不重复

重新启动网卡服务
service network restart
测试是否成功
ifconfig命令查看是否配置成功
ping qq.com查看是否能够连接远程网络

修改主机名称

查看当前主机名称

hostnamectl或者hostnamectl status
这里有三种主机名称状态
静态--static、瞬态--transient或灵活--pretty。可以在hostname后面作为参数使用

修改主机名称

hostnamectl set-hostname 主机名称默认修改三者状态的所有名称,如需单独修改,可以加上主机参数在进行修改

修改hosts

vim /etc/hosts
192.168.31.11 hadoop11

重新启动机器

su root reboot

建立一个用户,给该用户添加权限

建立用户

添加权限
vim /etc/sudoers

复制
root ALL=(ALL) ALL
root修改为新建立的用户名称
用户名称 ALL=(ALL) ALL

切换到新建用户,建立文件夹

`sudo 用户名称`  
`sudo mkdir module`
`sudo mkdir software`
`chown 用户名称:组名称 ./module ./software`

上传文件

hadoop 文件,jdk文件

配置jdk

配置hadoop

上传文件到software目录
使用tar命令解压
tar -zxvf ./hadoop-2.7.2.tar.gz -C ../module/

修改hadoop文件下的java_home

vim /etc/hadoop/hadoop_env.sh
找到JAVA_HOME修改为具体的home路径

配置全局的hadoop路径

vim /etc/profile
末尾增加如下配置

# hadoop
export HADOOP_HOME=/opt/module/hadoop-2.7.2
export PATH=$PATH:$HADOOP_HOME/bin
export PATH=$PATH:$HADOOP_HOME/sbin
刷新配置文件

source /etc/profile

验证配置

hadoop version

单机模式执行hadoop自带的exple

  • 切换到cd /opt/module/hadoop-2.7.2目录下,
  • mkdir input 创建一个文件夹用来存放输入的文件
  • hadoop jar share/hadoop/mapreduce/hadoop-mapreduce-examples-2.7.2.jar grep input/ ouput 'dfs[a-z.]+'执行命令, hadoop代表的是运行hadoop程序 ,jar 说明的是jar文件,share/hadoop/mapreduce/hadoop-mapreduce-examples-2.7.2.jar 文件的路径,grep过滤的内容是从input这个目录输入,然后输出到output目录下,过来的条件是dfs[a-z.]+
  • 完成后会在input同级目录下生成一个output文件夹查看里面的运行结果 .
  • 注意
    output文件夹不需要自己手动建立,当有这个文件夹,会抛出异常

统计单词个数

  • 切换到cd /opt/module/hadoop-2.7.2目录下,
  • mkdir wcinput一个文件夹
  • touch word 创建一个文件
  • 执行hadoop jar ./share/hadoop/mapreduce/hadoop-mapreduce-examples-2.7.2.jar wordcount wcinput wcoutput
    wordcount 统计单词的个数
  • wcoutput查看结果

伪分布式模式(Pseudo-Distributed Operation)

修改etc/hadoop/core-site.xml

加入如下配置文件

<configuration>
<!-- 指定HDFS中NameNode的地址 -->
        <property>
        <name>fs.defaultFS</name>
        <value>hdfs://hadoop13:9000</value>
    </property>
<!-- 指定hadoop运行时产生文件的存储目录 -->
     <property>
         <name>hadoop.tmp.dir</name>
         <value>/opt/module/hadoop-2.7.2/data/tmp</value>
    </property>
</configuration>
修改etc/hadoop/hdfs-site.xml
<!--产生的副本数-->
<configuration>
    <property>
        <name>dfs.replication</name>
        <value>1</value>
    </property>
</configuration>
建立文件夹

hadoop根目录下建立文件夹
mkdir -p data/tmp

格式化文件系统

hadoop namenode -format

启动namenode

hadoop-daemon.sh start namenode

启动 datanode

hadoop-daemon.sh start datanode

查看启动状态

jps 看到有namenodedatanode就是启动成功了

web客户端访问

关闭防火墙,centos 7关闭防火墙service firewalld stop,关闭开机启动sudo systemctl disable firewalld
在浏览器中输入ip:50070就可以访问

hdfs常用命令

创建文件夹

hdfs dfs -mkdir -p /user/heasy/input

上传文件到文件夹

hdfs dfs -put 文件名称

查看文件目录

hdfs dfs -ls 文件路径

查看文件

hdfs dfs -cat 文件路径

运行统计命令

hadoop jar hadoop-mapreduce-examples-2.7.2.jar wordcount /user/heasy/input /user/heasy/output

查看统计结果

hdfs dfs -cat /user/heasy/output/*

下载文件到本机

hadoop dfs -get /user/heasy/output/* ./

删除文件

hadoop dfs -rmr /user/heasy/output

YARN单机版

编辑yarn-env.sh

添加JAVA_HOME 路径

编辑mapred-env.sh

添加JAVA_HOME 路径

编辑mapred-site.xml

先复制mapred-site.xml.template 这个文件,后更名为mapred-site.xml
增加如下配置

<!-- 指定mr运行在yarn上 -->
<property>
        <name>mapreduce.framework.name</name>
        <value>yarn</value>
    </property>
编辑yarn-site.xml

修改如下配置

<!-- reducer获取数据的方式 -->
<property>
 <name>yarn.nodemanager.aux-services</name>
 <value>mapreduce_shuffle</value>
</property>

<!-- 指定YARN的ResourceManager的地址 -->
<property>
<name>yarn.resourcemanager.hostname</name>
<value>hadoop13</value>
</property>
启动namenode datanode
启动resourcemanager

yarn-daemon.sh start resourcemanager

启动datamanager

yarn-daemon.sh start nodemanager

测试启动是否成功

浏览器输入hadoop:8088如图

重新跑下测试用例

hadoop jar hadoop-mapreduce-examples-2.7.2.jar wordcount /user/heasy/input/* /user/heasy/output

查看输出结果

查看文件系统中的输出结果

配置jobhistory
<property>
    <name>mapreduce.jobhistory.address</name>
    <value>hadoop13:10020</value>
</property>

<property>
    <name>mapreduce.jobhistory.webapp.address</name>
    <value>hadoop13:19888</value>
启动历史服务.
mr-jobhistory-daemon.sh  start historyserver
查看服务

jps 查看服务 JobHistoryServer

配置ApplicationLogs
<!-- 日志聚集功能使能 -->
<property>
<name>yarn.log-aggregation-enable</name>
<value>true</value>
</property>

<!-- 日志保留时间设置7天 -->
<property>
<name>yarn.log-aggregation.retain-seconds</name>
<value>604800</value>
</property>
停止并重启historyserver,resourcemanager,nodemanager
登录web

可查看如图

ssh免密登录

输入ssh-keygen -t rsa三次回车即可
会在当前用户下的.ssh/目录下产生一个两个文件id_rsa,id_rsa.pub.
使用ssh-copy-id 主机名称/ip地址 复制私钥给指定的机器.会在.ssh/authorized_keys产生一个文件
验真是否登录成功.在使用ssh-keygen的机器上直接ssh 主机名称/ip地址登录

rsync远程同步

  • 简单说明
    rsync远程同步工具,主要用于备份和镜像。具有速度快、避免复制相同内容和支持符号链接的优点。
    rsync和scp区别:用rsync做文件的复制要比scp的速度快,rsync只对差异文件做更新。scp是把所有文件都复制过去。
  • 基本语法
    rsync -rvl $pdir/$fname $user@hadoop$host:$pdir
    参数说明 :r递归,v显示复制过程,l复制链接符号链接
    $pdir/$fname 要拷贝的文件路径/名称
    $user@hadoop$host:$pdir目的用户@主机:目的路径
  1. 安装rsync,sudo yum -y install rsync
  2. 示例 sudo rsync -rvl /opt/tmp hadoop15:/opt
同步某一个文件夹到指定机器上
#!/bin/bash
#1 获取输入参数个数,如果没有参数,直接退出  
pcount=$#
if(($pcount==0)); then
echo no args;
exit;
fi

#2 获取文件名称
p1=$1
fname=`basename $p1`
echo fname=$fname

#3 获取上级目录到绝对路径
pdir=`cd -P $(dirname $p1); pwd`
echo pdir=$pdir

#4 获取当前用户名称
user=`whoami`

#5 循环
for((host=15; host<17; host++)); do
        #echo $pdir/$fname $user@hadoop$host:$pdir
        echo --------------- hadoop$host ----------------
        rsync -rvl $pdir/$fname $user@hadoop$host:$pdir
done
集群规划
  • namenode一定要和datanode分开部署,不要放在同一台机器上
  • secondarynamenode一定要和namenode分开
    有由于现在手头只有三台虚拟机,部署结构如下:

nodemanagerresourcemanage最好不要放在一台机器上

如表
hadoop14hadoop15hadoop16
hdfsnamenode
datanode
datanodesecondarynode
datanode
yarnnodemanagernodemange
resourcemanger
nodemanager
开始配置
  • 修改core-site.xml,指定namenode和文件存储路径
<!-- 指定HDFS中NameNode的地址 -->
    <property>
        <name>fs.defaultFS</name>
        <value>hdfs://hadoop14:9000</value>
    </property>

    <!-- 指定hadoop运行时产生文件的存储目录 -->
    <property>
        <name>hadoop.tmp.dir</name>
        <value>/opt/module/hadoop-2.7.2/data/tmp</value>
    </property>
  • 修改hadoop-env.sh中的java_home
export JAVA_HOME=/usr/local/soft/jdk1.8.0_181
  • 修改hdfs-site.xml,修改副本数,和secondarynode地址
    <property>
         <name>dfs.replication</name>
                <value>3</value>
        </property>

        <property>
                <name>dfs.namenode.secondary.http-address</name>
                 <value>hadoop16:50090</value>
    </property>
  • 修改mapred-env.sh中java_home
export JAVA_HOME=/usr/local/soft/jdk1.8.0_181
  • 复制mapred-site.xml.template并修改名称为mapred-site.xml,编辑mapred-site.xml,指定mapreduce运行在yarn上
<!-- 指定mr运行在yarn上 -->
        <property>
                <name>mapreduce.framework.name</name>
                <value>yarn</value>
        </property>
  • 修改yarn-env.sh 中的java_home
 export JAVA_HOME=/usr/local/soft/jdk1.8.0_181
  • 修改yarn-site.xml,指定获取数据的方式,resourcemanager地址
!-- reducer获取数据的方式 -->
        <property>
                 <name>yarn.nodemanager.aux-services</name>
                 <value>mapreduce_shuffle</value>
        </property>

        <!-- 指定YARN的ResourceManager的地址 -->
        <property>
                <name>yarn.resourcemanager.hostname</name>
                <value>hadoop15</value>
        </property>
  • 修改slaves
hadoop14
hadoop15
hadoop16
  • 复制刚刚修改的文件到集群中的其他机器上./xsync.sh /opt/

  • 根据上面的集群规划,在 hadoop14上格式话namenode节点hadoop namenode -format.然后启动namenodedatanode,启动脚本如下:start-dfs.sh

  • 在hadoop15上启动nodemanageresourcemanager.启动脚本如下:start-yarn.sh.

  • 查看没台机器的启动信息,jps,
    hadoop14信息如下

5745 DataNode
6439 Jps
5640 NameNode
6014 NodeManager

三个服务,和集群规划的服务数量一致,依次查看hadoop15,hadoop16和集群规划进行对照

  • 注意: 如果不在指定的机器上面启动,会出现namenode,datanode,resourcemaneger,nodemanager,secondarynode启动不了的情况,首先需要停止stop-yarn.sh,stop-dfs.sh,然后删除hadoop下目录./data/,log,然后重新格式化namenode,hadoop namenode -format,然后在start-dfs.sh,start-yarn.sh.
测试集群
  • 建立文件系统目录.hadoop fs -mkdir -p /user/heasy/input
  • 上传文件到文件系统目录中,hadoop fs -put ./test.txt /user/heasy/input/
  • 查看文件hadoop fs -lsr /
    注意: 当上传的文件大小小于128M时,只会产生一个block,大于128m时以此类推
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值