目录
一、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
背景本地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
1.2解压hadoop
注意: 3台机器上都需要重复下面所讲的步骤。
上载文件并解压缩
在opt目录下新建一个名为hadoop的目录,并将下载得到的hadoop-3.3.0.tar上载到该目录下,如图:
进入到该目录,执行命令:
cd /opt/hadoop
执行解压命令:
tar -zxvf hadoop-3.3.0.tar.gz
说明:3台机器都要进行上述操作,解压缩后得到一个名为hadoop-3.3.0的目录。
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
1.4修改hadoop配置文件
修改/opt/hadoop/hadoop-3.3.0/etc/hadoop目录内的
1.4.1修改core-site.xml
使用vim命令
在<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>
1.4.2修改hadoop-env.sh
去掉注释,改成自己的java的路径
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>
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>
1.4.5修改workers
将workers里面的localhost删掉,将hserver1作为namenode将hserver2和hserver3作为datanode,修改后如下
更新: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命令
在/etc/profile中添加下面的命令
HADOOP_HOME=/opt/hadoop/hadoop-3.3.0
export PATH=$HADOOP_HOME/bin:$HADOOP_HOME/sbin:$PATH
然后 执行
source /etc/profile
二、启动hadoop
2.1hadoop初始化
hserver1是namenode,hserver2和hserver3是datanode,对namenode进行初始化
进入/opt/hadoop/hadoop-3.3.0/bin目录执行初始化命令
./hadoop namenode -format
不报错的情况下会出现以下内容,运行成功
在/root/hadoop/dfs/name/current目录下可以看到产生了以下文件
2.2启动hadoop
进入/opt/hadoop/hadoop-3.3.0/sbin目录执行启动命令
./start-all.sh
出现以下报错
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.
参考以下两个链接:
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
再进入/opt/hadoop/hadoop-3.3.0/sbin目录执行启动命令
./start-all.sh
如果继续提示某个用户未定义,再次检查上述四个配置文件有没有敲错字母
三、测试hadoop
关闭linux防火墙
systemctl stop firewalld.service
开机不自动启动防火墙
systemctl disable firewalld.service
不然每次都要关闭防火墙才能看到管理的web界面
我的namenode是hserver1,ip地址是192.168.127.128
在浏览器打开http://192.168.127.128:9870/
四、使用hadoop
命令行输入
hadoop fs -ls
提示
原因是因为-ls默认目录是在hdfs文件系统的/user/用户名(用户名就命令行@符号前面的那个东西),但是你的hdfs系统内没有这个文件夹,所以会显示No such file or directory。
所以你需要在hdfs文件系统内创建
使用
hdfs -dfs mkdir /user
hdfs dfs -mkdir /user/root
在这个目录下新建一个文件,然后执行命令查看
hdfs dfs -touchz test.txt
Hadoop fs -ls
参考
使用input将本地文件放到hadoop上
使用get将hadoop上的文件放到本地
hadoop fs -get /user/root/input/test.txt /home/dcf/
查看资源占用情况
hdfs dfsadmin -report