linux中安装hadoop及Python3调用Hadoop的API

本文详细介绍了在CentOS7环境下安装和配置Hadoop2.6.3的过程,包括环境准备、源码包下载、环境变量设置、用户和组的创建、主要配置文件的编辑、HDFS格式化、Hadoop启动、测试以及Python3调用Hadoop API的方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、centos7安装Hadoop2.6.3

1.环境准备 

centos7中一般已经自带JDK

[root@wj ~]# java -version 
openjdk version "1.8.0_102"
OpenJDK Runtime Environment (build 1.8.0_102-b14)
OpenJDK 64-Bit Server VM (build 25.102-b14, mixed mode)
[root@localhost profile.d]# yum -y install java-1.8.0-openjdk* 

 

Centos7关闭防火墙

查看状态: systemctl status firewalld 
开机禁用  : systemctl disable firewalld
开机启用  : systemctl enable firewalld

Centos7 关闭selinux服务

[root@wj ~]# setenforce 1
[root@wj ~]# getenforce 
Enforcing
[root@wj ~]# setenforce 0
[root@wj ~]# getenforce 
Permissive

2.下载源码包

新建bdapps目录

[root@wj ~]# mkdir /bdapps/

并将源码包上传到linux上,我这里是传到 /bdapps/下

3.解压源码包

[root@wj ~]# ls hadoop-2.6.2

[root@wj ~]# tar -zxvf /home/zhanggen/Desktop/hadoop-2.6.2.tar.gz -C /bdapps/

4.设置Java和Hadoop相关环境变量

[root@wj ~]#vi /etc/profile.d/hadoop.sh

export HADOOP_PREFIX=/bdapps/hadoop

export PATH=$PATH:${HADOOP_PREFIX}/bin:${HADOOP_PREFIX}/sbin

export HADOOP_YARN_HOME=${HADOOP_PREFIX}

export HADOOP_MAPPRED_HOME=${HADOOP_PREFIX}

export HADOOP_COMMON_HOME=${HADOOP_PREFIX}

export HADOOP_HDFS_HOME=${HADOOP_PREFIX}

 

使环境变量生效:

[root@wj ~]# source /etc/profile.d/hadoop.sh

新建用户和组,并授权
[root@wj ~]# groupadd hadoop
[root@wj ~]# useradd -g hadoop hadoop
[root@wj ~]# mkdir -pv /data/hadoop/hdfs/{nn,dn,snn}
[root@wj ~]# chown -R hadoop:hadoop /data/hadoop/hdfs/
[root@wj ~]# cd /bdapps/hadoop/
[root@wj ~]# mkdir logs
[root@wj ~]# chown -R hadoop:hadoop ./*

5.Hadoop主要配置文件(/bdapps/hadoop-2.6.2/etc/hadoop)

(1)core-site.xml

针对NameNode  IP地址 、端口(默认为8020)

<configuration>
    <property>
        <name>fs.defaultFS</name>
        <value>hdfs://0.0.0.0:8020</value>
        <final>false</final>
    </property>
</configuration>

 

(2)hdfs-site.xml

针对HDFS相关的属性,每一个数据块的副本数量、NN和DA存储数据的目录 step6中创建的目录。

 

<configuration>
   <property>
        <name>dfs.http.address</name>
        <value>0.0.0.0:50070</value>
    </property>
    <property>
        <name>dfs.datanode.http.address</name>
        <value>0.0.0.0:50075</value>
    </property>

    <property>
        <name>dfs.replication</name>
        <value>3</value>
    </property>
    <property>
        <name>dfs.namenode.name.dir</name>
        <value>file:///data/hadoop/hdfs/nn</value>
    </property>
    <property>
        <name>dfs.datanode.data.dir</name>
        <value>file:///data/hadoop/hdfs/dn</value>
    </property>
    <property>
        <name>fs.checkpoint.dir</name>
        <value>file:///data/hadoop/hdfs/snn</value>
    </property>
    <property>
        <name>fs.checkpoint.edits.dir</name>
        <value>file:///data/hadoop/hdfs/snn</value>
    </property>
</configuration>

(3)mapred-site.xml(指定使用yarn)如果没有参照mapred-site.xml.template新建一个

指定MapReduce是单独运行 还是运行在yarn之上,Hadoop2肯定是运行在yarn之上的;见 二、Hadoop的运行模型

 

<configuration>
    <property>
        <name>mapreduce.framework.name</name>
        <value>yarn</value>
    </property>
</configuration>

(4)yarn-site.xml

yarn-site.xml 用于配置YARN进程及YARN的相关属性,首先需要指定ResourceManager守护进程的主机和监听的端口,对于伪分布式模型来讲,其主机为localhost,

默认的端口为8032;其次需要指定ResourceManager使用的scheduler,以及NodeManager的辅助服务。一个简要的配置示例如下所示:

 

<configuration>
    <property>
        <name>yarn.resourcemanager.address</name>
        <value>0.0.0.0:8032</value>
    </property>
    <property>
        <name>yarn.resourcemanager.scheduler.address</name>
        <value>0.0.0.0:8030</value>
    </property>
    <property>
        <name>yarn.resourcemanager.resource-tracker.address</name>
        <value>0.0.0.0:8031</value>
    </property>
    <property>
        <name>yarn.resourcemanager.admin.address</name>
        <value>0.0.0.0:8033</value>
    </property>
    <property>
        <name>yarn.resourcemanager.webapp.address</name>
        <value>0.0.0.0:8088</value>
    </property>
    <property>
        <name>yarn.nodemanager.aux-services</name>
        <value>mapreduce_shuffle</value>
    </property>
    <property>
        <name>yarn.nodemanager.auxservices.mapreduce_shuffle.class</name>
        <value>org.apache.hadoop.mapred.ShuffleHandler</value>
    </property>
    <property>
        <name>yarn.resourcemanager.scheduler.class</name>
     <value>org.apache.hadoop.yarn.server.resourcemanager.scheduler.capacity.CapacityScheduler</value>
    </property>
</configuration>

6.格式化HDFS

[root@wj hadoop]# cd /bdapps/hadoop-2.6.2/etc/hadoop
[root@wj hadoop]# hdfs namenode -format

7.启动Hadoop

HDFS格式化完成之后就可以启动  去/bdapps/hadoop/etc/hadoop目录下启动Hadoop的5大守护进程了。

 

7.1.启动HDFS集群

HDFS有3个守护进程:namenode、datanode和secondarynamenode,他们都表示通过hadoop-daemon.sh脚本启动或停止。以hadoop用户执行相关命令;

 

[root@wj hadoop]# hadoop-daemon.sh start namenode
[root@wj hadoop]# hadoop-daemon.sh start secondarynamenode
[root@wj hadoop]# hadoop-daemon.sh start datanode

#jps命令:专门用于查看当前运行的java程序的
[root@wj hadoop]# jps
61392 NameNode
61602 Jps
61480 SecondaryNameNode
61532 DataNode

HDFS集群web访问接口:

http://主机ip:50070/dfshealth.html#tab-overview

7.2启动yarn集群

切换成yarn用户:YARN有2个守护进程:resourcemanager和nodemanager,它们通过yarn-daemon.sh脚本启动或者停止。以hadoop用户执行相关命令即可。

 

[root@wj hadoop]# yarn-daemon.sh start resourcemanager
[root@wj hadoop]# yarn-daemon.sh start nodemanager
[root@wj hadoop]# jps
61803 ResourceManager
62043 NodeManager
62142 Jps

 yarn集群web访问接口:

http://主机ip:8088/cluster

8.测试

 

使用Hadoop自带的 hadoop-mapreduce-examples-2.6.2.jar,执行MapReduce任务是否可以正常执行,如果可以就意味着安装成功了。

新建文件:

[root@wj hadoop]# hdfs dfs -mkdir -p /test/a.txt

 [root@wj mapreduce]# cd /bdapps/hadoop-2.6.2/share/hadoop/mapreduce

[root@wj mapreduce]# yarn jar hadoop-mapreduce-examples-2.6.2.jar wordcount /test/a.txt /test/a.out

[root@wj mapreduce]# hdfs dfs -ls /test/a.out
Found 2 items
-rw-r--r--   1 hdfs supergroup          0 2019-03-01 14:09 /test/a.out/_SUCCESS
-rw-r--r--   1 hdfs supergroup         54 2019-03-01 14:09 /test/a.out/part-r-00000

可访问http://主机ip:50070/dfshealth.html#tab-overview,可以看到/tetst/路径下多出了a.out和a.txt文件,即文件上传成功

9.Python3调用Hadoop的API

安装pyhdfs

pip install pyhdfs -i http://pypi.douban.com/simple --trusted-host pypi.douban.com

py文件如下:

import pyhdfs
fs = pyhdfs.HdfsClient(hosts='自己hadoop主机所在的ip,50070',user_name='root') #user_name就linux用户,我这里是root
fs.get_home_directory()#返回这个用户的根目录
fs.get_active_namenode()#返回可用的namenode节点

path='/test/'
file='a.txt'
file_name=path+file
#在上传文件之前,请修改本地 host文件 192.168.226.142 localhost C:\WINDOWS\system32\drivers\etc\host
print('路径已经存在') if fs.exists(path) else fs.mkdirs(path)
print('文件已存在') if fs.exists(path+file) else fs.copy_from_local('c.txt',path+file,) #上传本地文件到HDFS集群
fs.copy_to_local(path+file, 'zhanggen.txt')# 从HDFS集群上copy 文件到本地
fs.listdir(path) #以列表形式['a.out', 'a.txt'],返回指定目录下的所有文件
response=fs.open(path+file) #查看文件内容
print(response.read())

fs.append(file_name,'Thanks myself for fighting ',) #在HDFS集群的文件里面添加内容
response=fs.open(file_name) #查看文件内容
print(response.read())
print(fs.get_file_checksum(file_name)) #查看文件大小
print(fs.list_status(path))#查看单个路径的状态
print(fs.list_status(file_name))#查看单个文件状态

注意:如果fs.append(file_name,'Thanks myself for fighting ',)这一句报错,参考https://blog.youkuaiyun.com/qq_39132578/article/details/79210033 中的第5点

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值