adduser hadoop
echo "hadoop" | passwd --stdin hadoop
sed -i '$ahadoop ALL=(ALL) NOPASSWD: NOPASSWD: ALL' /etc/sudoers
hostnamectl set-hostname hadoop1
hostnamectl set-hostname hadoop2
hostnamectl set-hostname hadoop3
vim /etc/hosts
# 添加以下内容
10.0.3.241 hadoop1
10.0.3.242 hadoop2
10.0.3.243 hadoop3
su hadoop
ssh-keygen -t rsa
ssh-copy-id hadoop1
ssh-copy-id hadoop2
ssh-copy-id hadoop3
https://mirrors.aliyun.com/apache/hadoop/common/hadoop-3.2.3/hadoop-3.2.3.tar.gz?spm=a2c6h.25603864.0.0.6bdf553fBx3Iaw
su hadoop
cd /home/hadoop
tar -zxvf hadoop-3.2.3.tar.gz
vi ~/.bashrc
export HADOOP_HOME=~/hadoop-3.2.3
export HADOOP_MAPRED_HOME=~/hadoop-3.2.3
export HADOOP_YARN_HOME=~/hadoop-3.2.3
export PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin
export HDFS_NAMENODE_USER=hadoop
export HDFS_DATANODE_USER=hadoop
export HDFS_SECONDARYNAMENODE_USER=hadoop
export YARN_RESOURCEMANAGER_USER=hadoop
export YARN_NODEMANAGER_USER=hadoop
$ source ~/.bashrc
$ hadoop version
1、hadoop-env.sh中需要配置一些基础环境变量路径,查看环境变量后填入正确的路径
cd ~/hadoop-3.2.3/etc/hadoop/
$ echo $JAVA_HOME
$ echo $HADOOP_HOME
$ vi hadoop-env.sh
export HADOOP_HOME=/home/hadoop/hadoop-3.2.3
export JAVA_HOME=/usr/local/jdk1.8.0_144
2、core-site.xml中主要指定了文件系统默认访问地址和端口,以及hdfs文件系统默认目录
<configuration>
<!--hdfs服务地址和端口 -->
<property>
<name>fs.defaultFS</name>
<value>hdfs://hadoop1:9000</value>
</property>
<!--hadoop文件系统目录,namenode、secondarynamenode和data默认都在此目录下,默认为/tmp/hadoop-${user.name}-->
<property>
<name>hadoop.tmp.dir</name>
<value>/home/hadoop/hadoop-3.2.3</value>
</property>
</configuration>
3、hdfs-site.xml配置主要指定namenode、secondarynamenode节点和服务端口,以及副本数和安全检查。
<configuration>
<!--hdfs namenode的http地址,默认为0.0.0.0:9870 -->
<property>
<name>dfs.namenode.http-address</name>
<value>hadoop1:9870</value>
</property>
<!--hdfs secondarynamenode的http地址,默认为0.0.0.0:9868,如需将secondarynamenode放在其他节点,修改主机名即可 -->
<property>
<name>dfs.namenode.secondary.http-address</name>
<value>hadoop1:9868</value>
</property>
<!-- HDFS副本数,默认为3,单节点伪集群需设置为1 -->
<property>
<name>dfs.replication</name>
<value>3</value>
</property>
<!-- 文件分块大小,默认128MB -->
<property>
<name>dfs.blocksize</name>
<value>128m</value>
</property>
<!-- 是否启用hdfs权限检查 ,默认为true开启的,设置为false关闭 -->
<property>
<name>dfs.permissions.enabled</name>
<value>false</value>
</property>
</configuration>
4、mapred-site.xml配置主要指定了MR框架以及一些环境变量
<configuration>
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
<property>
<name>mapreduce.admin.user.env</name>
<value>HADOOP_MAPRED_HOME=/home/hadoop/hadoop-3.2.3</value>
</property>
<property>
<name>mapreduce.application.classpath</name>
<value>$HADOOP_MAPRED_HOME/share/hadoop/mapreduce/*:$HADOOP_MAPRED_HOME/share/hadoop/mapreduce/lib/*</value>
</property>
<property>
<name>yarn.app.mapreduce.am.env</name>
<value>HADOOP_MAPRED_HOME=/home/hadoop/hadoop-3.2.3</value>
</property>
</configuration>
5、yarn-site.xml
<configuration>
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
<property>
<name>yarn.nodemanager.aux-services.mapreduce_shuffle.class</name>
<value>org.apache.hadoop.mapred.ShuffleHandler</value>
</property>
<property>
<name>yarn.resourcemanager.hostname</name>
<value>hadoop1</value>
</property>
<property>
<name>yarn.resourcemanager.address</name>
<value>hadoop1:8032</value>
<description>指定 ResourceManager 的连接地址</description>
</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>
<property>
<name>yarn.nodemanager.vmem-check-enabled</name>
<value>false</value>
</property>
</configuration>
6、worker配置是所有集群节点,使用主机名或IP地址
$ vi workers
hadoop1
hadoop2
hadoop3
单节点伪集群副本数设置为1,worker只有一个即可。
将hadoop整个目录拷贝到其他节点。
$ scp -r ~/hadoop-3.2.3/etc/hadoop hadoop2:~/hadoop-3.2.3/etc/
$ scp -r ~/hadoop-3.2.3/etc/hadoop hadoop3:~/hadoop-3.2.3/etc/
将配置好的.bashrc文件也拷贝过去。
scp -r ~/.bashrc hadoop2:~/
scp -r ~/.bashrc hadoop3:~/
首先,格式化文件系统
格式化文件系统:
cd /home/hadoop/hadoop-3.2.3/bin
$ ./hadoop namenode -format
启动HDFS
$ cd /home/hadoop/hadoop-3.2.3/sbin
$ ./start-dfs.sh
查看服务是否运行
$ jps
正常情况hadoop1节点会看到NameNode、SecondaryNameNode和DataNode,其他两个节点只有DataNode。
hadoop日志输出到$HADOOP_LOG_DIR目录(默认为HADOOP_HOME/logs,可通过配置修改)
NameNode节点web访问地址:http://hadoop1:9870/ (客户端可添加解析直接访问)
export HADOOP_HOME=/home/hadoop/hadoop-3.2.3
export PATH=$HADOOP_HOME/sbin:$HADOOP_HOME/bin:$PATH
创建HDFS文件系统当前用户目录:
$ hdfs dfs -mkdir /user
$ hdfs dfs -mkdir /user/hadoop/
$ hdfs dfs -ls /
测试:
输入文件拷贝到分布式文件系统:
创建input文件夹
$ hdfs dfs -mkdir input
查看
$ hdfs dfs -ls /user/hadoop
上传文件测试
$ hdfs dfs -put ~/hadoop-3.2.3/etc/hadoop/*.xml input
查看
$ hdfs dfs -ls /user/lzu_cg/input
查看块状态报告:
$ hdfs dfsadmin -report
启动ResourceManager和NodeManager服务进程:
$ start-yarn.sh
查看
$ jps
1
2
3
hadoop1节点会多出ResourceManager和NodeManager进程,其他工作节点会多出NodeManager
浏览器访问地址:http://hadoop1:8088/
启动MapReduce JobHistory Server历史服务器和timelineserver时间线服务器:
$ mapred --daemon start historyserver
$ yarn --daemon start timelineserver
web访问地址 - http://hadoop1:19888/
1
2
3
测试运行pi程序:
先进入到程序示例.jar包所在的目录,然后运行MR程序:
$ cd ~/hadoop-3.2.3/share/hadoop/mapreduce/
$ hadoop jar hadoop-mapreduce-examples-3.2.3.jar pi 10 20
运行成功即可。
关闭集群服务:
$ stop-yarn.sh
$ stop-dfs.sh
$ mapred --daemon stop historyserver
$ yarn --daemon stop timelineserver
如需启动集群,先启动dfs,再启动yarn
$ start-dfs.sh
$ start-yarn.sh
停止时先停止yarn再停止dfs
$ stop-yarn.sh
$ stop-dfs.sh
HDFS 常用 shell 命令
1. 显示当前目录结构
# 显示当前目录结构
hadoop fs -ls <path>
# 递归显示当前目录结构
hadoop fs -ls -R <path>
# 显示根目录下内容
hadoop fs -ls /
2. 创建目录
# 创建目录
hadoop fs -mkdir <path>
# 递归创建目录
hadoop fs -mkdir -p <path>
3. 删除操作
# 删除文件
hadoop fs -rm <path>
# 递归删除目录和文件
hadoop fs -rm -R <path>
4. 从本地加载文件到 HDFS
# 二选一执行即可
hadoop fs -put [localsrc] [dst]
hadoop fs - copyFromLocal [localsrc] [dst]
5. 从 HDFS 导出文件到本地
# 二选一执行即可
hadoop fs -get [dst] [localsrc]
hadoop fs -copyToLocal [dst] [localsrc]
6. 查看文件内容
# 二选一执行即可
hadoop fs -text <path>
hadoop fs -cat <path>
7. 显示文件的最后一千字节
hadoop fs -tail <path>
# 和Linux下一样,会持续监听文件内容变化 并显示文件的最后一千字节
hadoop fs -tail -f <path>
8. 拷贝文件
hadoop fs -cp [src] [dst]
9. 移动文件
hadoop fs -mv [src] [dst]
10. 统计当前目录下各文件大小
默认单位字节
-s : 显示所有文件大小总和,
-h : 将以更友好的方式显示文件大小(例如 64.0m 而不是 67108864)
hadoop fs -du <path>
1
11. 合并下载多个文件
-nl 在每个文件的末尾添加换行符(LF)
-skip-empty-file 跳过空文件
hadoop fs -getmerge
# 示例 将HDFS上的hbase-policy.xml和hbase-site.xml文件合并后下载到本地的/usr/test.xml
hadoop fs -getmerge -nl /test/hbase-policy.xml /test/hbase-site.xml /usr/test.xml
1
2
3
12. 统计文件系统的可用空间信息
hadoop fs -df -h /
1
13. 更改文件复制因子
hadoop fs -setrep [-R] [-w] <numReplicas> <path>
1
更改文件的复制因子。如果 path 是目录,则更改其下所有文件的复制因子
-w : 请求命令是否等待复制完成
# 示例
hadoop fs -setrep -w 3 /user/hadoop/dir1
1
2
14. 权限控制
# 权限控制和Linux上使用方式一致
# 变更文件或目录的所属群组。 用户必须是文件的所有者或超级用户。
hadoop fs -chgrp [-R] GROUP URI [URI ...]
# 修改文件或目录的访问权限 用户必须是文件的所有者或超级用户。
hadoop fs -chmod [-R] <MODE[,MODE]... | OCTALMODE> URI [URI ...]
# 修改文件的拥有者 用户必须是超级用户。
hadoop fs -chown [-R] [OWNER][:[GROUP]] URI [URI ]
1
2
3
4
5
6
7
15. 文件检测
hadoop fs -test - [defsz] URI
1
可选选项:
-d:如果路径是目录,返回 0。
-e:如果路径存在,则返回 0。
-f:如果路径是文件,则返回 0。
-s:如果路径不为空,则返回 0。
-r:如果路径存在且授予读权限,则返回 0。
-w:如果路径存在且授予写入权限,则返回 0。
-z:如果文件长度为零,则返回 0。
# 示例
hadoop fs -test -e filename
————————————————
版权声明:本文为CSDN博主「高龄码农创业」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/qq_63844528/article/details/130911039