Centos 7 中配置安装Hadoop

使用Xshell来连接虚拟机

通过VMware创建好虚拟机后(如何创建虚拟机查看此文章),进入到Centos中进行设置,开启ipv4地址,因为默认是关闭的

没有修改前,输入ifconfig显示如下,没有192.168.121.147这样的地址出现

输入下面命令

cd /etc/sysconfig/network-scripts    (进入网络设置目录)
vi ifcfg-ens33           (进入vim编辑器,编辑ifcfg-en33,修改BOOM no改成yes)

service network restart     (重启网关)

然后输入ifconfig查看我们的IP地址,如下

接下来使用Xshell来连接我们的虚拟机,创建一个新会话,然后输入ipv4地址,点击连接

第一次连接会出现下面警告,点击  授权并保存  

然后输入我们要登录的用户名,然后再输入用户密码

连接成功后显示如下,在Xshell中操作更加方便

在Xshell上操作安装Hadoop

这里我有三台虚拟机,分别是slave1,slave2,slave3, 我将slave1作为master,下面操作都是在slave1上操作配置,配置完成后通过scp 命令 传到slave2和slave3上去,三台虚拟机之间需要能相互通信,三台虚拟机之间相互通信查看https://blog.csdn.net/rongDang/article/details/88098476

安装rz上传文件组件 ,用来上传压缩包

yum -y install lrzsz

安装vim编辑器,vim更好用些

yum -y install vim

安装openssh-server,配置ssh免密码登录,不然后面开启或关闭Hadoop时都需要输入密码

yum -y install openssh-server

cd ~/.ssh  # 没有则创建这个.ssh文件夹
ssh-keygen -t rsa   # 生成密钥,输入后一直回车即可
cat ~/.ssh/id_rsa.pub>>~/.ssh/authorized_keys    # 添加授权
ssh localhost         # 免密码登录

操作如下图所示 

配置JDK

这里我将压缩包放到 /usr/local  下,如果要放到别的地方的话也可以,配置路径的时候将路径改下

cd /usr/local    # 进入到local目录
rz               # 上传文件目录,需要安装 lrzsz

 在Xshell中输入 rz 回车会让你选择所需要上传的文件,如果上传不了,则使用 reboot 命令重启下系统

上传后ls查看下可以发现压缩包已经在local目录下了

接下来进行解压操作,解压后的名字挺长的,使用 mv 命令给文件夹进行重命名

tar -zxvf jdk-8u181-linux-x64.tar.gz    # 解压文件
mv jdk1.8.0_181 jdk     # 更改文件名

# 将jdk添加到环境变量
vim /etc/profile

# 末尾添加
export JAVA_HOME=/usr/local/jdk    # 对应你的jdk路径
export PATH=$PATH:$JAVA_HOME/bin

source /etc/profile    # 调用资源
java -version          # 查看jdk版本

配置Hadoop

和JDK一样,上传,解压,配置

rz     # 上传文件
tar -zxvf hadoop-2.7.6.tar.gz    # 解压
mv hadoop-2.7.6 hadoop    # 给解压后的文件进行重命名,这步看个人,可以改可以不改
rm -f hadoop-2.7.6.tar.gz # 删除压缩包


vim /etc/profile    # 添加环境变量, 在最后添加下面内容

#hadoop  
export HADOOP_HOME=/usr/local/hadoop
export PATH=.:$HADOOP_HOME/bin:$HADOOP_HOME/sbin


source /etc/profile    # 调用资源
hadoop version         # 查看是否部署成功


PS:/etc/profile  文件要谨慎编辑,如果不小心改错了,那么大部分的命令都不能使用,可以使用下面命令重新编辑

/bin/vim /etc/profile

或者

/bin/vi /etc/profile

修改Hadoop中的一些文件

进入对应目录:cd hadoop/etc/hadoop 修改下面的 hadoop-env.sh, core-site.xml、hdfs-site.xml,yarn-site.xml,slaves,maqred-site.xml

修改hadoop-env.sh, 添加jdk路径

export JAVA_HOME=/usr/local/jdk

修改core-site.xml

<configuration> 
    <!--用来指定使用hadoop时产生文件的存放目录-->
    <property> 
            <name>hadoop.tmp.dir</name> 
            <value>file:/data/hadoop/tmp</value> 
   	</property> 
    <!--指定namenode的地址,这里我指定为slave1-->
   	<property> 
        <name>fs.defaultFS</name> 
        <value>hdfs://slave1:9000</value> 
    </property> 
</configuration>

修改hdfs-site.xml

<configuration>
    <!--如果是true则检查权限,否则不检查-->
    <property>
        <name>dfs.permissions</name>
        <value>false</value>
    </property>
    <!--指定hdfs中namenode的存储位置-->
    <property>
        <name>dfs.namenode.name.dir</name> 
        <value>file:/data/hadoop/tmp/dfs/name</value>
    </property>
    <!--指定hdfs中datanode的存储位置-->
    <property>
        <name>dfs.datanode.data.dir</name> 
        <value>file:/data/hadoop/tmp/dfs/data</value>
    </property>
    <!--配置数据块副本的数量-->
    <property>
        <name>dfs.replication</name> 
        <value>2</value>
    </property>
</configuration>

修改yarn-site.xml

<configuration>
   <!--指定YARN的ResourceManager的主机-->  
   <property>
    <name>yarn.resourcemanager.hostname</name>
    <value>slave1</value>
  </property>

    <!--NodeManager上运行的附属服务。需配置成mapreduce_shuffle,才可运行MapReduce程序-->
  <property>
    <name>yarn.nodemanager.aux-services</name>
    <value>mapreduce_shuffle</value>
  </property>
  <property>
    <name>yarn.log-aggregation-enable</name>
    <value>true</value>
  </property>
  <property>
    <name>yarn.log-aggregation.retain-seconds</name>
    <value>604800</value>
  </property>
    <!--ResourceManager对外web ui地址。用户可通过该地址在浏览器中查看集群各类信息。默认端口8088-->
    <property>
        <name>yarn.resourcemanager.webapp.address</name>
        <value>slave1:8088</value>
    </property>    
</configuration>

关于yarn-site.xml更详细的一些配置,如下所示:参考此文章

ResourceManager相关配置参数
<property>
<name>yarn.resourcemanager.address</name>
<value>hadoop001:8032</value>
</property>
ResourceManager 对客户端暴露的地址。客户端通过该地址向RM提交应用程序,杀死应用程序等
默认值:${yarn.resourcemanager.hostname}:8032

<property>
<name>yarn.resourcemanager.scheduler.address</name>
<value>hadoop001:8030</value>
</property>
参数解释:ResourceManager 对ApplicationMaster暴露的访问地址。ApplicationMaster通过该地址向RM申请资源、释放资源等。
默认值:${yarn.resourcemanager.hostname}:8030

<property>
<name>yarn.resourcemanager.webapp.address</name>
<value>hadoop001:8088</value>
</property>
参数解释:ResourceManager对外web ui地址。用户可通过该地址在浏览器中查看集群各类信息。
默认值:${yarn.resourcemanager.hostname}:8088

<property>
<name>yarn.resourcemanager.resource-tracker.address</name>
<value>hadoop001:8031</value>
</property>
参数解释:ResourceManager 对NodeManager暴露的地址。NodeManager通过该地址向RM汇报心跳,领取任务等。
默认值:${yarn.resourcemanager.hostname}:8031

<property>
<name>yarn.resourcemanager.admin.address</name>
<value>hadoop001:8033</value>
</property>
参数解释:ResourceManager 对管理员暴露的访问地址。管理员通过该地址向RM发送管理命令等。
默认值:${yarn.resourcemanager.hostname}:8033

<property>
<name>yarn.resourcemanager.scheduler.class</name>
<value>org.apache.hadoop.yarn.server.resourcemanager.scheduler.capacity.CapacityScheduler</value>
</property>
参数解释:启用的资源调度器主类。目前可用的有FIFO、Capacity Scheduler和Fair Scheduler。
默认值:org.apache.hadoop.yarn.server.resourcemanager.scheduler.capacity.CapacityScheduler

还有:
yarn.resourcemanager.resource-tracker.client.thread-count
参数解释:处理来自NodeManager的RPC请求的Handler数目。
默认值:50

yarn.resourcemanager.scheduler.client.thread-count
参数解释:处理来自ApplicationMaster的RPC请求的Handler数目。
默认值:50

yarn.scheduler.minimum-allocation-mb/ yarn.scheduler.maximum-allocation-mb
参数解释:单个可申请的最小/最大内存资源量。比如设置为1024和3072,则运行MapRedce作业时,每个Task最少可申请1024MB内存,最多可申请3072MB内存。
默认值:1024/8192

yarn.scheduler.minimum-allocation-vcores / yarn.scheduler.maximum-allocation-vcores
参数解释:单个可申请的最小/最大虚拟CPU个数。比如设置为1和4,则运行MapRedce作业时,每个Task最少可申请1个虚拟CPU,最多可申请4个虚拟CPU。什么是虚拟CPU,可阅读我的这篇文章:“YARN 资源调度器剖析”。
默认值:1/32

yarn.resourcemanager.nodes.include-path /yarn.resourcemanager.nodes.exclude-path
参数解释:NodeManager黑白名单。如果发现若干个NodeManager存在问题,比如故障率很高,任务运行失败率高,则可以将之加入黑名单中。注意,这两个配置参数可以动态生效。(调用一个refresh命令即可)
默认值:“”

yarn.resourcemanager.nodemanagers.heartbeat-interval-ms
参数解释:NodeManager心跳间隔
默认值:1000(毫秒)

修改slaves文件

slaves文件里面记录的是集群里所有DataNode的主机名,slaves文件只作用在NameNode上面,比如我在slaves里面配置了

slave2
slave3

 那么slave2和slave3就是我的DataNode,这个文件就相当于是一份关于 DN(DataNode)的白名单,只有在该名单上的主机才能被NN(NameNode)识别,配置slaves后,就能排除别的DN了,slaves文件中可以写主机名,也可以写ip地址,因为最终都是通过ip来判断的。

修改maqred-site.xml

# 该文件没有,所以复制一个模板 再做修改
cp mapred-site.xml.template mapred-site.xml

# 修改添加内容如下
<configuration>
    <tconme>mapreduce.framework.name</name>
        <value>yarn</value>
    </property>
</configuration>

在上面操作都完成后,将/usr/local/hadoop(填写你自己的Hadoop的地址) 传给 slave2和slave3,配置对应的环境变量即可。

最后需要格式化namenode,只需要在slave1上格式化,然后在slave1上启动 start-all.sh

/usr/local/hadoop/bin/hdfs namenode -format

在slave1上 输入 start-all.sh 然后通过jps命令查看三台虚拟机的状态。

 

[root@slave1]# start-all.sh
[root@slave1]# jps

slave2 和 slave3 的状态如下,显示的是DataNode 


PS:如果要想将NameNode和secondaryNameNode分开,分别放到不同主机上运行的话需要修改下面配置文件

创建 masters 文件,里面写入要将哪台主机作为secondaryNameNode的主机名,

这里我将secondaryNameNode放到 名为 master2的主机上运行。

 

修改core-site.xml文件,添加下面内容

    <property>
        <!--多长时间记录一次hdfs的镜像。-->
        <name>fs.checkpoint.period</name>
        <value>3600</value>
         <description>The number of seconds between two periodic checkpoints.</description>
    </property>
    <property>
        <!--一次记录多大的镜像,默认64M-->
        <name>fs.checkpoint.size</name>
        <value>67108864</value>
    </property>

修改hdfs-site.xml,添加下面内容:

    <property>
        <name>dfs.http.address</name>
        <value>master1:50070</value>
    </property>

    <!--设置secondaryNameNode-->
    <property>
        <name>dfs.namenode.secondary.http-address</name>
        <value>master2:50090</value>
    </property>

这里我的master1上运行NameNode,master2上运行secondaryNameNode,如果你的主机名和我的不一样则改为你的主机名。

最后在master1上运行  start-all.sh ,五台虚拟机的运行状态如下:

 

 

 

 

 

 

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值