目录

一、Hadoop3.3安装

1.1下载hadoop

1.2解压hadoop

1.3新建目录

1.4修改hadoop配置文件

1.5修改/etc/profile

二、启动hadoop

2.1hadoop初始化

2.2启动hadoop

三、测试hadoop

四、使用hadoop


hadoop 完整版 hadoop 3.3_java

 背景本地vmware安装三台centos7的虚拟机,主机名和ip地址分别为hserver1:192.168.127.128;hserver2:192.168.127.129;hserver3:192.168.127.130,并实现免密登录,安装JAVA和hadoop3.3.0,详细安装过程如下。安装过程中参考了下面这个hadoop2.8的链接。hadoop3.x和hadoop2.8的部分特性不一样,配置文件内容也不同。


1.1下载hadoop

网址http://www.apache.org/dyn/closer.cgi/hadoop/common/hadoop-3.3.0

 

hadoop 完整版 hadoop 3.3_大数据_02

 

hadoop 完整版 hadoop 3.3_大数据_03

 

1.2解压hadoop

注意: 3台机器上都需要重复下面所讲的步骤。

上载文件并解压缩

在opt目录下新建一个名为hadoop的目录,并将下载得到的hadoop-3.3.0.tar上载到该目录下,如图:

hadoop 完整版 hadoop 3.3_大数据_04

进入到该目录,执行命令:

cd   /opt/hadoop

执行解压命令:

tar -zxvf hadoop-3.3.0.tar.gz

说明:3台机器都要进行上述操作,解压缩后得到一个名为hadoop-3.3.0的目录。

hadoop 完整版 hadoop 3.3_hadoop_05

 

1.3新建目录

在三台机器上分别新建目录

mkdir /root/hadoop

mkdir /root/hadoop/tmp

mkdir /root/hadoop/var

mkdir /root/hadoop/dfs

mkdir /root/hadoop/dfs/name

mkdir /root/hadoop/dfs/data

hadoop 完整版 hadoop 3.3_linux_06

1.4修改hadoop配置文件

修改/opt/hadoop/hadoop-3.3.0/etc/hadoop目录内的

hadoop 完整版 hadoop 3.3_hadoop 完整版_07

1.4.1修改core-site.xml

使用vim命令

hadoop 完整版 hadoop 3.3_hadoop 完整版_08

 

在<configuration>节点加入以下配置

<property>

     <name>hadoop.tmp.dir</name>

     <value>/root/hadoop/tmp</value>

     <description>Abase for other temporary directories.</description>

 </property>

 <property>

     <name>fs.default.name</name>

     <value>hdfs://hserver1:9000</value>

 </property>

hadoop 完整版 hadoop 3.3_hadoop_09

 

1.4.2修改hadoop-env.sh

hadoop 完整版 hadoop 3.3_hadoop_10

去掉注释,改成自己的java的路径

hadoop 完整版 hadoop 3.3_大数据_11

 

 

1.4.3修改hdfs-site.xml

在<configuration>节点内加入配置:

<property>

   <name>dfs.name.dir</name>

   <value>/root/hadoop/dfs/name</value>

   <description>Path on the local filesystem where theNameNode stores the namespace and transactions logs persistently.</description>

</property>

<property>

   <name>dfs.data.dir</name>

   <value>/root/hadoop/dfs/data</value>

   <description>Comma separated list of paths on the localfilesystem of a DataNode where it should store its blocks.</description>

</property>

<property>

   <name>dfs.replication</name>

   <value>2</value>

</property>

hadoop 完整版 hadoop 3.3_linux_12

 

1.4.4修改mapred-site.xml

在<configuration>中加入以下配置

 <property>

    <name>mapred.job.tracker</name>

    <value>hserver1:49001</value>

</property>

<property>

      <name>mapred.local.dir</name>

       <value>/root/hadoop/var</value>

</property>

<property>

       <name>mapreduce.framework.name</name>

       <value>yarn</value>

</property>

hadoop 完整版 hadoop 3.3_hadoop_13

 

1.4.5修改workers

将workers里面的localhost删掉,将hserver1作为namenode将hserver2和hserver3作为datanode,修改后如下

hadoop 完整版 hadoop 3.3_linux_14

更新:worker配置信息更改为

hserver1

hserver2

hserver3

1.4.6修改yarn-site.xml

在<configuration>中加入以下配置

<property>

        <name>yarn.resourcemanager.hostname</name>

        <value>hserver1</value>

   </property>

   <property>

        <description>The address of the applications manager interface in the RM.</description>

        <name>yarn.resourcemanager.address</name>

        <value>${yarn.resourcemanager.hostname}:8032</value>

   </property>

   <property>

        <description>The address of the scheduler interface.</description>

        <name>yarn.resourcemanager.scheduler.address</name>

        <value>${yarn.resourcemanager.hostname}:8030</value>

   </property>

   <property>

        <description>The http address of the RM web application.</description>

        <name>yarn.resourcemanager.webapp.address</name>

        <value>${yarn.resourcemanager.hostname}:8088</value>

   </property>

   <property>

        <description>The https adddress of the RM web application.</description>

        <name>yarn.resourcemanager.webapp.https.address</name>

        <value>${yarn.resourcemanager.hostname}:8090</value>

   </property>

   <property>

        <name>yarn.resourcemanager.resource-tracker.address</name>

        <value>${yarn.resourcemanager.hostname}:8031</value>

   </property>

   <property>

        <description>The address of the RM admin interface.</description>

        <name>yarn.resourcemanager.admin.address</name>

        <value>${yarn.resourcemanager.hostname}:8033</value>

   </property>

   <property>

        <name>yarn.nodemanager.aux-services</name>

        <value>mapreduce_shuffle</value>

   </property>

   <property>

        <name>yarn.scheduler.maximum-allocation-mb</name>

        <value>1024</value>

        <discription>每个节点可用内存,单位MB,默认8182MB</discription>

   </property>

   <property>

        <name>yarn.nodemanager.vmem-pmem-ratio</name>

        <value>2.1</value>

   </property>

   <property>

        <name>yarn.nodemanager.resource.memory-mb</name>

        <value>1024</value>

</property>

   <property>

        <name>yarn.nodemanager.vmem-check-enabled</name>

        <value>false</value>

</property>

       说明:yarn.nodemanager.vmem-check-enabled这个的意思是忽略虚拟内存的检查,如果你是安装在虚拟机上,这个配置很有用,配上去之后后续操作不容易出问题。如果是实体机上,并且内存够多,可以将这个配置去掉。

将以上6个文件复制到hserver2和hserver3的/opt/hadoop/hadoop-3.3.0/etc/hadoop目录进行覆盖

1.5修改/etc/profile

在/etc/profile中添加hadoop的目录,否则在后续启动hadoop后会找不到hadoop命令

hadoop 完整版 hadoop 3.3_linux_15

在/etc/profile中添加下面的命令

HADOOP_HOME=/opt/hadoop/hadoop-3.3.0

export PATH=$HADOOP_HOME/bin:$HADOOP_HOME/sbin:$PATH

hadoop 完整版 hadoop 3.3_hadoop_16

 然后 执行

source /etc/profile

二、启动hadoop

2.1hadoop初始化

hserver1是namenode,hserver2和hserver3是datanode,对namenode进行初始化

进入/opt/hadoop/hadoop-3.3.0/bin目录执行初始化命令

./hadoop  namenode  -format

hadoop 完整版 hadoop 3.3_java_17

不报错的情况下会出现以下内容,运行成功

hadoop 完整版 hadoop 3.3_大数据_18

在/root/hadoop/dfs/name/current目录下可以看到产生了以下文件

hadoop 完整版 hadoop 3.3_hadoop 完整版_19

 

2.2启动hadoop

进入/opt/hadoop/hadoop-3.3.0/sbin目录执行启动命令

./start-all.sh

hadoop 完整版 hadoop 3.3_大数据_20

出现以下报错

ERROR: Attempting to operate on hdfs namenode as root

ERROR: but there is no HDFS_NAMENODE_USER defined. Aborting operation.

Starting datanodes

ERROR: Attempting to operate on hdfs datanode as root

ERROR: but there is no HDFS_DATANODE_USER defined. Aborting operation.

Starting secondary namenodes [hserver1]

ERROR: Attempting to operate on hdfs secondarynamenode as root

ERROR: but there is no HDFS_SECONDARYNAMENODE_USER defined. Aborting operation.

Starting resourcemanager

ERROR: Attempting to operate on yarn resourcemanager as root

ERROR: but there is no YARN_RESOURCEMANAGER_USER defined. Aborting operation.

Starting nodemanagers

ERROR: Attempting to operate on yarn nodemanager as root

ERROR: but there is no YARN_NODEMANAGER_USER defined. Aborting operation.

hadoop 完整版 hadoop 3.3_hadoop 完整版_21

参考以下两个链接:



2.2.1worker配置信息修改

最终修改了hserver1,hserver2,hserver3的worker的配置信息

更新:worker配置信息更改为

hserver1

hserver2

hserver3

2.2.2修改启动和停止配置

修改hserver1的start-dfs.sh,stop-dfs.sh,start-yarn.sh,stop-yarn.sh

将start-dfs.sh,stop-dfs.sh两个文件顶部添加以下参数

HDFS_NAMENODE_USER=root

HDFS_DATANODE_USER=root

HDFS_SECONDARYNAMENODE_USER=root

YARN_RESOURCEMANAGER_USER=root

YARN_NODEMANAGER_USER=root

 start-yarn.sh,stop-yarn.sh顶部也需添加以下

YARN_RESOURCEMANAGER_USER=root

HADOOP_SECURE_DN_USER=yarn

YARN_NODEMANAGER_USER=root

修改后在hserver1上重新进行初始化

进入/opt/hadoop/hadoop-3.3.0/bin目录执行初始化命令

./hadoop  namenode  -format

hadoop 完整版 hadoop 3.3_大数据_22

 

再进入/opt/hadoop/hadoop-3.3.0/sbin目录执行启动命令

./start-all.sh

hadoop 完整版 hadoop 3.3_hadoop 完整版_23

如果继续提示某个用户未定义,再次检查上述四个配置文件有没有敲错字母

三、测试hadoop

关闭linux防火墙

systemctl stop firewalld.service

hadoop 完整版 hadoop 3.3_hadoop_24

 

开机不自动启动防火墙

systemctl disable firewalld.service

不然每次都要关闭防火墙才能看到管理的web界面

我的namenode是hserver1,ip地址是192.168.127.128

在浏览器打开http://192.168.127.128:9870/

hadoop 完整版 hadoop 3.3_java_25

http://192.168.127.128:8088/

hadoop 完整版 hadoop 3.3_hadoop_26

四、使用hadoop

命令行输入

hadoop fs -ls

提示

hadoop 完整版 hadoop 3.3_linux_27

 原因是因为-ls默认目录是在hdfs文件系统的/user/用户名(用户名就命令行@符号前面的那个东西),但是你的hdfs系统内没有这个文件夹,所以会显示No such file or directory。

所以你需要在hdfs文件系统内创建

使用

hdfs -dfs mkdir /user

hdfs dfs -mkdir /user/root

hadoop 完整版 hadoop 3.3_hadoop 完整版_28

 

在这个目录下新建一个文件,然后执行命令查看

hdfs dfs -touchz test.txt

Hadoop fs -ls

hadoop 完整版 hadoop 3.3_linux_29

 

参考

使用input将本地文件放到hadoop上

hadoop 完整版 hadoop 3.3_java_30

 

使用get将hadoop上的文件放到本地

hadoop fs -get /user/root/input/test.txt /home/dcf/

查看资源占用情况

hdfs dfsadmin -report