Hadoop安装与部署(本地模式 伪分布模式)

Hadoop的搭建方式有三种,本地模式,伪分布模式和完全分布式模式

<1>下载hadoop、jdk安装包到hadoop用户家目录

[root@server1 ~]# useradd -u 800 hadoop

[root@server1 ~]# mv hadoop-3.0.3.tar.gz jdk-8u181-linux-x64.tar.gz /home/hadoop/

<2>解压配置软链接

软链接目的:方便hadoop、jdk更新,只更改软链接即可

[root@server1 hadoop]# su - hadoop

[hadoop@server1 ~]$ tar zxf jdk-8u181-linux-x64.tar.gz

[hadoop@server1 ~]$ tar zxf hadoop-3.0.3.tar.gz

[hadoop@server1 ~]$ ln -s jdk1.8.0_181/ java

[hadoop@server1 ~]$ ln -s hadoop-3.0.3 hadoop

<3>配置java环境变量

[hadoop@server1 ~]$ cd hadoop/etc/hadoop/

[hadoop@server1 hadoop]$ pwd
/home/hadoop/hadoop/etc/hadoop

[hadoop@server1 hadoop]$ vim hadoop-env.sh

export JAVA_HOME=/home/hadoop/java

本地模式测试:

<4>通过执行hadoop自带MapReduce案例实例验证是否安装成功

[hadoop@server1 hadoop]$ cd
[hadoop@server1 ~]$ cd hadoop
[hadoop@server1 hadoop]$ pwd
/home/hadoop/hadoop

[hadoop@server1 hadoop]$ mkdir input

[hadoop@server1 hadoop]$ cp etc/hadoop/* input/

[hadoop@server1 hadoop]$ bin/hadoop jar share/hadoop/mapreduce/hadoop-mapreduce-examples-3.0.3.jar grep input output 'dfs[a-z.]+'

[hadoop@server1 hadoop]$ cat output/*

output目录中以dfs开头的文件,则安装成功

MapReduce是一个离线计算的框架,对海量数据进行处理,采用分而治之的思想,大数据集分为小的数据集,每个数据集,进行逻辑业务的处理(map),合并统计业务结果(reduce)。
1.MapReduce将计算结果分为两个阶段,Map和Reduce.

    map阶段并行处理输入的数据。
    reduce阶段对map结果进行汇总。

2.shuffle连接map和reduce这两个阶段

    map task将数据写入磁盘。
    reduce task从每一个map task上读取一份数据。

3.仅适合离线批处理。

    具有良好的容错性和扩展性。
    适合简单的批处理任务。

4.缺点明显:

    启动开销大,过多使用磁盘导致效率低下等。

Hadoop分布式文件系统HDFS—单数据存储节点(伪分布)

1.修改配置文件

<1>制定Namenode的地址

[hadoop@server1 ~]$ cd hadoop/etc/hadoop/

[hadoop@server1 hadoop]$ vim core-site.xml

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

<2>指定Datanode地址以及hdfs保存数据的副本数量

[hadoop@server1 ~]$ vim hadoop/etc/hadoop/hdfs-site.xml

<configuration>
    <property>
        <name>dfs.replication</name>
        <value>1</value>                    ## hdfs保存数据的副本数量为1
    </property>
</configuration>

因为是单机部署,所以不需要对workers文件进行修改

2.设置ssh免密登陆

[root@server1 hadoop]# passwd hadoop

New password:
BAD PASSWORD: The password is shorter than 8 characters
Retype new password:
passwd: all authentication tokens updated successfully.

[root@server1 hadoop]# su - hadoop

[hadoop@server1 ~]$ ssh-keygen


[hadoop@server1 ~]$ cd .ssh/

[hadoop@server1 .ssh]$ cp id_rsa.pub authorized_keys


或者通过以下方式设置免密登录:

[hadoop@server1 ~]$ ssh-copy-id localhost

验证免密登陆:

3.格式化元数据节点(Namenode)

[hadoop@server1 ~]$ cd hadoop
[hadoop@server1 hadoop]$ pwd
/home/hadoop/hadoop
[hadoop@server1 hadoop]$ bin/hdfs namenode -format

格式化后生成的文件 :

[hadoop@server1 hadoop]$ ls /tmp/
hadoop-hadoop  hsperfdata_hadoop

4.开启dfs

[hadoop@server1 hadoop]$ pwd
/home/hadoop/hadoop

[hadoop@server1 hadoop]$ sbin/start-dfs.sh

注意:一定注意/etc/hosts文件里面ip地址的解析是否对应/etc/sysconfig/network中的HOSTNAME

 

5.配置环境变量

注意:配置完环境变量后需使用source命令使其生效

[hadoop@server1 hadoop]$ cd

[hadoop@server1 ~]$ vim .bash_profile

PATH=$PATH:$HOME/.local/bin:$HOME/bin:$HOME/java/bin

[hadoop@server1 ~]$ source .bash_profile            ##重新加载配置文件

 

6.jps命令查看java进程

[hadoop@server1 ~]$ jps
11233 DataNode               ##数据节点
11585 Jps            
11415 SecondaryNameNode           ##从元数据节点
11134 NameNode                              ##元数据节点

浏览器访问http://172.25.81.1:9870

 

7.创建目录并上传到input

[hadoop@server1 ~]$ cd hadoop

[hadoop@server1 hadoop]$ bin/hdfs dfs -mkdir -p /user/hadoop      ##建立目录

[hadoop@server1 hadoop]$ bin/hdfs dfs -put input/           ##上传input目录到hdfs中去

[hadoop@server1 hadoop]$ bin/hdfs dfs -ls                        ##列出HDFS下的文件(默认是/user/hadoop目录下的)

 

8.执行hadoop中自带的wordcount程序

[hadoop@server1 hadoop]$ bin/hadoop jar share/hadoop/mapreduce/hadoop-mapreduce-examples-2.7.3.jar wordcount input output

显示如下结果就说明运行成功:


HDFS常用命令

1. 文件操作

(1) 列出HDFS下的文件

/usr/local/hadoop$bin/hadoop dfs -ls

(2) 列出HDFS文件下名为in的文档中的文件

/usr/local/hadoop$bin/hadoop dfs -ls in

(3) 上传文件

将hadoop目录下的test1文件上传到HDFS上并重命名为test:

/usr/local/hadoop$bin/hadoop dfs -put test1 test

(4) 文件被复制到本地系统中

将HDFS中的in文件复制到本地系统并命名为getin:

/usr/local/hadoop$bin/hadoop dfs -get in getin

(5) 删除文档

删除HDFS下名为out的文档:

/usr/local/hadoop$bin/hadoop dfs -rmr out

(6) 查看文件

查看HDFS下in文件中的内容:

/usr/local/hadoop$bin/hadoop dfs -cat in/*

(7) 建立目录

/usr/local/hadoop$bin/hadoop dfs -mkdir /user/hadoop/examples(目录/目录名)

只能一级一级的建目录。

(8) 复制文件

/usr/local/hadoop$bin/hadoop dfs -copyFromLocal 源路径 路径

(9)通过Hadoop命令把两个文件的内容合并起来

hdfs dfs -getmerge 位于hdfs中的原文件(里面有多个文件) 合并后的文件名
例如:
hdfs dfs -getmerge hdfs://Master:9000/data/SogouResult.txt CombinedResult

 注:合并后的文件位于当前目录,不在hdfs中,是本地文件

2. 管理与更新

(1) 执行基本信息

查看HDFS的基本统计信息:

/usr/local/hadoop$bin/hadoop dfsadmin -report

(2) 退出安全模式

NameNode在启动时会自动进入安全模式。安全模式是NameNode的一种状态,在这个阶段,文件系统不允许有任何修改。

系统显示Name node in safe mode,说明系统正处于安全模式,这时只需要等待十几秒即可,也可通过下面的命令退出安全模式:

/usr/local/hadoop$bin/hadoop dfsadmin -safemode leave

(3) 进入安全模式

在必要情况下,可以通过以下命令把HDFS置于安全模式:

/usr/local/hadoop$bin/hadoop dfsadmin -safemode enter

(4)节点添加

添加一个新的DataNode节点,先在新加节点上安装好Hadoop,要和NameNode使用相同的配置(可以直接从NameNode复制),修改$HADOOP_HOME/conf/master文件,加入NameNode主机名。然后在NameNode节点上修改$HADOOP_HOME/conf/slaves文件,加入新节点名,再建立新加节点无密码的SSH连接,运行启动命令为:

/usr/local/hadoop$bin/start-all.sh

(5)负载均衡

HDFS的数据在各个DataNode中的分布可能很不均匀,尤其是在DataNode节点出现故障或新增DataNode节点时。新增数据块时NameNode对DataNode节点的选择策略也有可能导致数据块分布不均匀。用户可以使用命令重新平衡DataNode上的数据块的分布:

/usr/local/hadoop$bin/start-balancer.sh

配置好hadoop伪分布后,与本地hadoop目录下的文件都没有关系了,都是对HDFS文件系统的操作

所以删掉之前在该目录下生成的input和output目录后也不会对HDFS文件系统的操作产生影响

[hadoop@server1 hadoop]$ bin/hadoop jar share/hadoop/mapreduce/hadoop-mapreduce-examples-3.0.3.jar grep input output 'dfs[a-z.]+'

此时重新查看HDFS中的内容,文件依然存在

[hadoop@server1 hadoop]$ bin/hdfs dfs -get output    ##将HDFS中的output文件复制到本地系统

[hadoop@server1 hadoop]$ rm -fr output/

 

浏览器查看:

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值