安装hadoop3.2.3

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

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值