centos6.5/Hadoop3.1.1环境搭建(独立模式和伪分布模式)

一、安装VMware Workstation 12 Pro

二、安装操作系统CentOS 6.5(网络适配器按如下设置,这样能保证网络互通)

三、安装lrzsz

软件主要是用来方便上传文件,这个看个人需要,有的喜欢用ftp相关工具

切换root用户运行如下命令安装:

yum -y install lrzsz
可以正常使用rz、sz命令上传、下载数据了。
使用方法:
上传文件
# rz filename
下载文件
# sz filename

四、安装64位java8(java安装是全局的,建议采用root操作)

官网下载java(下载前需要先接受协议):https://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html

上传安装文件jdk-8u45-linux-x64.tar.gz,至目录/opt/java/jdk-8u45-linux-x64.tar.gz,并解压tar -xzvf jdk-8u45-linux-x64.tar.gz

配置环境变量(root用户编辑),打开vi /etc/profile配置文件,把如下代码添加到末尾处

export JAVA_HOME=/usr/local/software/jdk1.8.0_231
export JRE_HOME=/usr/local/software/jdk1.8.0_231
export CLASSPATH=.:$JAVA_HOME/lib:$JRE_HOME/lib:$CLASSPATH
export PATH=$JAVA_HOME/bin:$JRE_HOME/bin:$PATH

执行profile文件让文件生效:source /etc/profile

检查java是否安装成功:java -version

java version "1.8.0_45"
Java(TM) SE Runtime Environment (build 1.8.0_45-b14)
Java HotSpot(TM) 64-Bit Server VM (build 25.45-b02, mixed mode)

修改主机名

切换到root用户,vi /etc/sysconfig/network
HOSTNAME后面的值改为想要设置的主机名。

vi /etc/hosts文件,添加如下配置

192.168.0.108   master  (添加在第一行就可以,重启服务器生效)

生成密钥:

ssh-keygen -t rsa 一直回车

   cd ~/.ssh

   会生成.ssh/id_rsa、id_rsa.pub两个文件,分别为私钥,公钥。

   cp  ~/.ssh/id_rsa.pub  ~/.ssh/authorized_keys

   chmod 600 authorized_keys

  验证是否成功(由于是伪分布式所以直接使 用localhost就可以了)

    ssh localhost(第一次需要输入密码)——如提示yes/no,输入yes

注意:单机也需要生成密钥,主要是需要用ssh启动dataNode,没有ssh免登陆就不能一键启动命令操作。

关闭防火墙(必须采用root用户操作)

存在以下三种方式:
1、service方式(即时生效,重启后失效)
查看防火墙状态: 
[root@master ~]# service iptables status
iptables:未运行防火墙。
开启防火墙:
[root@master ~]# service iptables start
关闭防火墙:
[root@master ~]# service iptables stop
2、iptables方式(即时生效,重启后失效)
先进入init.d目录,命令如下:
[root@master ~]# cd /etc/init.d/
[root@master init.d]# 
然后
查看防火墙状态:
[root@master init.d]# /etc/init.d/iptables status
暂时关闭防火墙:
[root@master init.d]# /etc/init.d/iptables stop
重启iptables:
[root@master init.d]# /etc/init.d/iptables restart

3、永久生效
[root@master]# vi /etc/selinux/config
设置 /etc/selinux/config 文件中的 SELINUX="disabled " ,然后重启。
或者
开启:[root@master]# chkconfig iptables on
关闭:[root@master]# chkconfig iptables off

五、安装Hadoop

apache 官网下载(http://hadoop.apache.org/)hadoop-3.1.1.tar.gz

上传到 服务器/home/zengms/tools/hadoop-3.1.1.tar.gz

解压tar -xzvf hadoop-3.1.1.tar.gz    ——解压到指定目录(这边解压到/home/zengms/install/hadoop-3.1.1目录)

配置当前用户的hadoop环境(注:环境变量可在 ~/.bash_profile(只对当前用户有效 ) 或者 /etc/profile(对所有用户有效) 中配置

编辑~/.bash_profile文件,添加一下代码(这里设置在当前用户下)

PATH=$PATH:$HOME/bin
export PATH

export JAVA_HOME=/opt/java/jdk1.8.0_45
export HADOOP_HOME=/home/zengms/install/hadoop-3.1.1
export PATH=$PATH:$JAVA_HOME/bin:$HADOOP_HOME/bin:$HADOOP_HOME/sbin

执行profile文件让文件生效:source ~/.bash_profile

检查hadoop版本 hadoop version

Hadoop 3.1.1
Source code repository https://github.com/apache/hadoop -r 2b9a8c1d3a2caf1e733d57f346af3ff0d5ba529c
Compiled by leftnoteasy on 2018-08-02T04:26Z
Compiled with protoc 2.5.0
From source with checksum f76ac55e5b5ff0382a9f7df36a3ca5a0
This command was run using /home/zengms/install/hadoop-3.1.1/share/hadoop/common/hadoop-common-3.1.1.jar

 

修改/home/zengms/install/hadoop-3.1.1/etc/hadoop/hadoop-env.sh 文件,添加上JAVA_HOME

    vi hadoop-env.sh  添加如下:

    export JAVA_HOME=/opt/java/jdk1.8.0_45                                     ——必须是绝对路径

执行source hadoop-env.sh使其生效

 

六、hadoop本地模式(独立模式):

特点:不具备HDFS,只能测试MapReduce 程序(安装完hadoop后就已经是本地模式);

    测试(需指定到hadoop-mapreduce-examples-3.1.1.jar目录再执行):

cd hadoop-3.1.1

mkdir input
  $ cp etc/hadoop/*.xml input
  $ bin/hadoop jar share/hadoop/mapreduce/hadoop-mapreduce-examples-3.1.1.jar grep input output 'dfs[a-z.]+'
  $ cat output/*

看到如下:2018-12-18 04:44:06,454 INFO mapreduce.Job:  map 0% reduce 100% 即已经运行完成,可以到/home/zengms/install/demo/output/wc_demo1下查看包含part-r-00000  和_SUCCESS两个文件

cat part-r-0000 即可看到hadoop 的mapreduce  的结果。

hadoop 的mapreduce 结果默认是按照字典顺序排好序的。


七、Hadoop伪分布式模式

特点:具备hadoop所有的功能,在单机模拟hadoop分布式环境。把nameNode,dataNode 安装在同一个节点上,还需要装一个MapReduce的运行环境yarn。需要配置如下内容:
(1)HDFS:主节点:nameNode;数据节点:dataNode;
(2)yarn:是一个容器,用来运行MapReduce程序;类似jsp需要运行在tomcat容器一样。yarn也有两部分:
   主节点:ReourceManager
   从节点:NodeManager

core-site.xml配置:($HADOOP_HOME/etc/hadoop/core-site.xml的confirgation 标签中)

<configuration>
    <property>
            <name>fs.defaultFS</name>
            <value>hdfs://192.168.0.115:9000</value>
     </property>

     <property>
            <name>fs.trash.interval</name>
            <value>4320</value>
      </property>

     <property>
            <name>hadoop.tmp.dir</name>
            <!-- 以下为存放临时文件的路径 -->
            <value>/home/zengms/install/hadoop-3.1.1/data/tmp</value>
      </property>
</configuration>

hdfs-site.xml配置($HADOOP_HOME/etc/hadoop/hdfs-site.xml 的confirgation 标签中)

<configuration>
<!--HDFS冗余度(副本数量),默认是3,这里配置成1-->
<property>
        <name>dfs.replication</name>
        <value>1</value>
</property>

<property>
     <name>dfs.namenode.name.dir</name>
     <value>/home/zengms/install/hadoop-3.1.1/data/namenode</value>
</property>

<property>
     <name>dfs.datanode.data.dir</name>
     <value>/home/zengms/install/hadoop-3.1.1/data/datanode</value>
</property>

<property>
     <name>dfs.namenode.checkpoint.dir</name>
     <value>/home/zengms/install/hadoop-3.1.1/data/namesecondary</value>
</property>

</configuration>

 

完成配置,但还不能启动,需对hdfs先进行格式化,

执行命令:hdfs namenode -format

看到日志信息即格式化成功。

启动namenode和datanode(进入hadoop下的sbin目录):

start-dfs.sh

通过jps命令可以查看启动情况:

[zengms@master hadoop-3.1.1]$ jps
3334 DataNode
3225 NameNode
3515 SecondaryNameNode
3662 Jps

启动完成后可以通过hdfs可视化端口 9870,访问地址:http://192.168.0.115:9870   查看详情;

也可以通过hdfs命令操作文件或者文件夹:

查看hdfs文件列表:[zengms@master ~]$ hdfs dfs -ls /

创建hdfs文件夹:[zengms@master ~]$ hdfs dfs -mkidr /test 或者  [zengms@master ~]$ hdfs dfs -mkdir /test/test1

上传文件到HDFS上:[zengms@master ~]$ hdfs dfs -put /home/zengms/install/hadoop-3.1.1/test.txt /test

查看HDFS上的文件:[zengms@master ~]$ hdfs dfs -cat /test/test.txt

删除HDFS上的文件:hdfs dfs -rm -f /test/test.txt

停止namemode和datanode:stop-dfs.sh

hadoop-daemon.sh命令

 hdfs --daemon start namenode
 hdfs --daemon start datanode
 hdfs --daemon stop namenode
 hdfs --daemon stop datanode
 

YARN 配置伪分布式模式

mapred-site.xml配置:($HADOOP_HOME/etc/hadoop/mapred-site.xml的confirgation标签中)

<configuration>
<--配置MapReduce运行框架-->
<property>
        <name>mapreduce.framework.name</name>
        <value>yarn</value>
</property>

<property>
  <name>mapreduce.application.classpath</name>
  <value>
    $HADOOP_MAPRED_HOME/share/hadoop/mapreduce/*:$HADOOP_MAPRED_HOME/share/hadoop/mapreduce/lib/*
  </value>
</property>
</configuration>

yarn-site.xml配置:($HADOOP_HOME/etc/hadoop/yarn-site.xml的confirgation标签中)

<configuration>

<property>
       <name>yarn.resourcemanager.hostname</name>
       <value>localhost</value>
</property>
<!--配置NodeManager执行任务方式:shuffle:洗牌 -->
<property>
    <name>yarn.nodemanager.aux-services</name>
    <value>mapreduce_shuffle</value>
</property>

<property>
   <name>yarn.nodemanager.env-whitelist</name><value>JAVA_HOME,HADOOP_COMMON_HOME,HADOOP_HDFS_HOME,HADOOP_CONF_DIR,CLASSPATH_PREPEND_DISTCACHE,HADOOP_YARN_HOME,HADOOP_MAPRED_HOME</value>
</property>
</configuration>

启动YARN(启动 ResourceManager daemon 和 NodeManager daemon)

start-yarn.sh

yarn的http可视化端口8088,访问地址:http://192.168.0.115:8088

停止yarn:stop-yarn.sh

WorldCount官网示例运行

  • 运行 hadoop命令
  • worldcount标签,examples自带运行对应的程序
  • 输入数据源
  • 输出数据源

hadoop jar $HADOOP_HOME/share/hadoop/mapreduce/hadoop-mapreduce-examples-3.1.1.jar wordcount  /test/yarn_test.txt  /test/output

注意:后面两个输入和输出路径,默认都是HDFS文件系统中的路径,而不是Linux系统下的当前路径。

 

部署遇到的问题:

启动(start-dfs.sh)namenode和datanode时候报如下错误(一般出现在格式化后):

java.io.IOException: Incompatible clusterIDs in /tmp/hadoop-zengms/dfs/data: namenode clusterID = CID-749f22b8-d0a3-49be-91e6-c5d4e02563d6; datanode clusterID = CID-97c649d3-3ff2-4cc3-b769-5059e512f77e

原因:每次hdfs namenode -format会重新创建一个namenodeId,而data目录包含了上次format时的id,namenode format清空了namenode下的数据,但是没有清空datanode下的数据,导致启动时失败,所要做的就是每次fotmat前,清空data下的所有目录.
解决办法:停掉集群,删除问题节点的data目录下的所有内容。即hdfs-site.xml文件中配置的dfs.datanode.data.dir目录。重新格式化namenode。如果没有指定在自动在系统根目录下的tmp目录下(/tmp/hadoop-zengms/dfs/data,其中hadoop-zengms的zengms是对应的用户名)

 

Jmx接口信息:http://192.168.0.115:9870/jmx

两个常用监控信息:

http://192.168.0.115:9870/jmx?qry=Hadoop:service=NameNode,name=NameNodeInfo

http://192.168.0.115:9870/jmx?qry=Hadoop:service=NameNode,name=FSNamesystemState

 

 

 

 

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值