广告
返回顶部
首页 > 资讯 > 后端开发 > Python >关于python使用hadoop(使用p
  • 621
分享到

关于python使用hadoop(使用p

pythonhadoop 2023-01-31 05:01:49 621人浏览 薄情痞子

Python 官方文档:入门教程 => 点击学习

摘要

最近想学习一下hadoop,但是本人对java不是很熟悉,所以决定用python来进行尝试,以下是整个环境部署及测试: 软件环境:VMware10.0,VMware10,ubuntu15.10桌面版(ubuntukylin-15.10-d

最近想学习一下hadoop,但是本人对java不是很熟悉,所以决定用python来进行尝试,以下是整个环境部署及测试

软件环境:VMware10.0,VMware10,ubuntu15.10桌面版(ubuntukylin-15.10-desktop-i386.iso),Apache hadoop(hadoop-1.2.1.tar.gz),jdk(jdk-8u11-linux-i586.tar.gz)


一 安装JDK(安装ubuntu对应的JDK,我这里是32位的ubuntu系统)
查看Linux多少位 命令file /bin/ls

创建文件夹 /usr/local/java

解压jdk,配置环境变量  vi /etc/profile

export JAVA_HOME=/usr/local/java/jdk1.8.0_11

export JAVA_BIN=/usr/local/java/jdk1.8.0_11/bin

export PATH=$PATH:$JAVA_HOME/bin

export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar

export JAVA_HOME JAVA_BIN PATH CLASSPATH

使用 .(空格)/etc/profile使环境变量生效
检测安装 java -version 出现  
java version "1.8.0_11"
Java(TM) SE Runtime Environment (build 1.8.0_11-b12)
Java HotSpot(TM) Client VM (build 25.11-b03, mixed mode)
代表成功

二 安装ssh(hadoop主从指间通过ssh来连接)
        apt-get install openssh-server
        apt-get update     #更新系统
        apt-get upgrade   #更新软件包
       
        生成key:ssh-keygen -t rsa,一路回车,key在/root/.ssh 中
        将key追加到authorized_keys授权文件,实现无密码登录本机 cat id_rsa.pub>>authorized_keys
        检测是否成功 ssh localhost


三 修改机器名称
修改机器名称 vi /etc/hostname,改为Hadoop-namenode,重启后生效

四  配置固定IP,多台虚拟机
将虚拟机网络设置成NAT模式,然后将本机的本地连接共享给VMnet8,然后在虚拟机中创建一块网卡,手动添加IP地址192.168.137.11,子网255.255.255.0,网关和 DNS都为192.168.137.1
此时本机ip就固定为192.168.137.11
此时可以添加host了,vi /etc/hosts
127.0.0.1       localhost
192.168.137.11 Hadoop-namenode
192.168.137.12 Hadoop-datenode1
192.168.137.13 Hadoop-datenode2


克隆出2台datenod(如果是多台机器的集群,此步骤在配置好hadoop后进行最好)
一台修改机器名称 Hadoop-datenode1,修改ip为192.168.137.12
一台修改机器名称 Hadoop-datenode2,修改ip为192.168.137.13


五 安装hadoop
下载hadoop-1.2.1.tar.gz,解压到 /usr/local/hadoop中
修改配置文件 /usr/local/hadoop/hadoop-1.2.1/conf/hadoop-env.sh     export JAVA_HOME=/usr/local/java/jdk1.8.0_11  指向jdk所在目录
  export HADOOP_HOME_WARN_SUPPRESS=1 用于解决一个警告,具体什么警告忘记了
环境变量vi /etc/profile:
export HADOOP_HOME=/usr/local/hadoop/hadoop-1.2.1
export PATH=$HADOOP_HOME/bin:$PATH
export CLASSPATH=$CLASSPATH:${HADOOP_HOME}/lib:${HADOOP_HOME}/bin:${HADOOP_HOME}
export HADOOP_CLASSPATH=$CLASSPATH
使用 .(空格)/etc/profile使环境变量生效

单机版Hadoop(自己是主也是从)配置:
设置hadoop的hdfs的地址及端口号  core-site.xml:
<configuration>
<property>
<name>fs.default.name</name>
<value>hdfs://localhost:9000</value>
</property>
</configuration>
修改hadoop的hdfs配置,这里是改备份方式hdfs-site.xml这里设置1个备份:
<configuration>
<property>
<name>dfs.replication</name>
<value>1</value>
</property>
</configuration>
修改hadoop中mapReduce的配置,设置JobTracker的地址及端口mapred-site.xml:
<configuration>
<property>
<name>mapred.job.tracker</name>
<value>hdfs://localhost:9001</value>
</property>
</configuration>
启动hadoop之前先格式化hadoop的HDFS进入/usr/local/hadoop/hadoop-1.2.1/bin:  ./hadoop namenode -fORMat
启动hadoop:./start-all.sh
测试:浏览器打开 localhost:50030(MapReduce的页面)
                localhost:50070(HDFS的页面)
                
三台机器的小集群配置
1.三台机器拥有相同的用户
2.要求Hadoop-namenode能免密码ssh登录2台Hadoop-datenode(Hadoop-datenode1,Hadoop-datenode2)

设置hadoop的HDFS的地址及端口号  core-site.xml:
<configuration>
<property>
<name>fs.default.name</name>
<value>hdfs://Hadoop-namenode:9000</value>
</property>
<property>
<name>hadoop.tmp.dir</name>
<value>/home/cjy/hadoop_tmp</value>         #这里这么配置主要是为了不用每次重启机器就格式化一次hdfs
</property>
</configuration>
修改hadoop的hdfs配置,这里是改备份方式hdfs-site.xml这里设置2个备份:
<configuration>
<property>
<name>dfs.replication</name>
<value>2</value>
</property>
</configuration>

修改hadoop中MapReduce的配置,设置JobTracker的地址及端口mapred-site.xml:
<configuration>
<property>
<name>mapred.job.tracker</name>
<value>hdfs://Hadoop-namenode:9001</value>
</property>
</configuration>
主masters:
Hadoop-namenode
从slaves:
Hadoop-datenode1
Hadoop-datenode2

启动hadoop之前先格式化hadoop的HDFS进入/usr/local/hadoop/hadoop-1.2.1/bin:  ./hadoop namenode -format
启动hadoop:./start-all.sh
测试:浏览器打开 Hadoop-namenode:50030(MapReduce的页面)
                Hadoop-namenode:50070(HDFS的页面)


六 测试hadoop是否能正常工作
hadoop fs -lsr   /                       查看HDFS的文件结构
hadoop fs -mkdir /tmp/test               在HDFS上新建文件夹
hadoop fs -put /home/cjy/VMwareTools-9.6.1-1378637.tar.gz /tmp/test   把本地文件传到HDFS的/tmp/test目录下
hadoop fs -get   /tmp/test/VMwareTools-9.6.1-1378637.tar.gz /home/   把HDFS文件拉到本地
hadoop fs -ls    /tmp                 列出HDFS的某目录
hadoop fs -cat   /tmp/test/VMwareTools-9.6.1-1378637.tar.gz             查看HDFS上的文件
hadoop fs -rm    /tmp/test/VMwareTools-9.6.1-1378637.tar.gz             删除HDFS上的文件
hadoop fs -rmr   /tmp/test                 删除HDFS上的目录
hadoop dfsadmin -report 查看HDFS状态,比如有哪些datanode,每个datanode的情况
hadoop dfsadmin -safemode leave   离开安全模式
hadoop dfsadmin -safemode enter   进入安全模式






关于Python

这里比较吐血,折腾了好久,看网上攻略都是相当简单,直接成功!!!!

        反正不外乎几种方式 pyhdfs,pydoop等等,看网上的一路坎坎坷坷的,最后几乎要用hadoop shell去完成了。

       最后在坚持了一下成功了:

       这里说一个成功的例子 pyhdfs的:

                      下载地址在这里,https://pypi.python.org/pypi/python-hdfs/0.4

       安装流程如下:

              apt-get install python-dev

                      apt-get install libhdf4-dev

                      下载 svn co Http://libpyhdfs.Googlecode.com/svn/trunk/ libpyhdfs并解压

                       进入libpyhdfs,cp /usr/local/hadoop/hadoop-1.2.1/c++/Linux-i386-32/lib/libhdfs.so lib/ 

                      vi setup.py 修改以下内容:
                 include_dirs = ['/usr/lib/JVM/java-6-sun/include/'] ->  include_dirs = ['/usr/local/java/jdk1.8.0_11/include']
                          runtime_library_dirs = ['/usr/local/lib/pyhdfs', '/usr/lib/jvm/java-6-sun/jre/lib/i386/server'] -> runtime_library_dirs = ['/usr/local/lib/pyhdfs',    '/usr/local/java/jdk1.8.0_11/jre/lib/i386/server']

                      修改/usr/local/java/jdk1.8.0_11/include/jni.h :
                 #include "jni_md.h" -> #include "linux/jni_md.h"

                      这时候安装pyhdfs:python setup.py install

                      安装成功,进去看看,然后会报一下错误:

                      

解决方法 编辑vi /etc/ld.so.conf:加入一行  include /usr/local/hadoop/hadoop-1.2.1/c++/Linux-i386-32/lib
执行/sbin/ldconfig -v

                       这时候在进去看看貌似离成功不远了,但是:

                        

                      又出错了,这里的问题是缺失了jar包,我们来添加环境变量,我对java不是很熟悉,所以就随便加加好了

                      添加环境变量 vi /etc/profile:

                                         export CLASSPATH=$CLASSPATH:${HADOOP_HOME}/hadoop-client-1.2.1.jar
export CLASSPATH=$CLASSPATH:${HADOOP_HOME}/hadoop-core-1.2.1.jar
export CLASSPATH=$CLASSPATH:${HADOOP_HOME}/hadoop-ant-1.2.1.jar
export CLASSPATH=$CLASSPATH:${HADOOP_HOME}/hadoop-examples-1.2.1.jar
export CLASSPATH=$CLASSPATH:${HADOOP_HOME}/hadoop-minicluster-1.2.1.jar
export CLASSPATH=$CLASSPATH:${HADOOP_HOME}/hadoop-test-1.2.1.jar
export CLASSPATH=$CLASSPATH:${HADOOP_HOME}/hadoop-tools-1.2.1.jar
export CLASSPATH=$CLASSPATH:${HADOOP_HOME}/lib/commons-logging-1.1.1.jar
export CLASSPATH=$CLASSPATH:${HADOOP_HOME}/lib/commons-logging-api-1.0.4.jar
export CLASSPATH=$CLASSPATH:${HADOOP_HOME}/lib/commons-configuration-1.6.jar
export CLASSPATH=$CLASSPATH:${HADOOP_HOME}/lib/commons-lang-2.4.jar

                      同样执行.(空格)/etc/profile

                      我的环境变量如下:  

    

                       然后再来执行一次:

                        

                      成功!

--结束END--

本文标题: 关于python使用hadoop(使用p

本文链接: https://www.lsjlt.com/news/188997.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • 关于python使用hadoop(使用p
    最近想学习一下hadoop,但是本人对java不是很熟悉,所以决定用python来进行尝试,以下是整个环境部署及测试: 软件环境:VMware10.0,VMware10,ubuntu15.10桌面版(ubuntukylin-15.10-d...
    99+
    2023-01-31
    python hadoop
  • Python 3 进阶 —— 使用 P
    PyMySQL 是一个纯 Python 实现的 MySQL 客户端操作库,支持事务、存储过程、批量执行等。 PyMySQL 遵循 Python 数据库 API v2.0 规范,并包含了 pure-Python MySQL 客户端库。 安装...
    99+
    2023-01-31
    进阶 Python
  • python中关于xmltodict的使用
    目录python中xmltodict使用xml转换成OrderedDictdict转换成xmlxmltodict模块处理xml数据基本用法1. parse2. unparse总结py...
    99+
    2023-03-14
    python xmltodict python xmltodict使用 python使用xmltodict
  • python学习-windows下使用p
       有时候需要处理很多报表,将一个目录下的所有excel格式报表合并,手工操作费事费力如果能使用python,将多个.xlsx同时能够合并多个excel表的话,多么方便。1、windows上python配置windows上安装的是pyth...
    99+
    2023-01-31
    python windows
  • Python学习之使用Python生成P
    在有些时候运维同事需要对一些数据收集后形成PDF报告的形式发送出去。利用python的reportlab库可以帮我们很快的实现自定义生成PDF报告。在CentOS 下通过sudo yum install python-reportlab -...
    99+
    2023-01-31
    Python
  • 关于Python中Math库的使用
    目录Math 库概述第一种: import math 对 math 库中函数采用 math.<b>() 形式使用第二种: from math import <函数名...
    99+
    2023-05-15
    Python math math库
  • 关于Python中jieba库的使用
    目录jieba库概述jieba 库演示在 PyCharm 中添加 jieba 库使用jieba 库第三方库jieba库概述 jieba 库演示 对于一段英文文本, 例如 &ldquo...
    99+
    2023-05-15
    Python jieba jieba库
  • 再述:python中redis的使用(P
    redis提供两个类Redis和StrictRedis用于实现Redis的命令,StrictRedis用于实现大部分官方的命令,并使用官方的语法和命令,Redis是StrictRedis的子类,用于向后兼容旧版本的redis-py。redi...
    99+
    2023-01-31
    再述 python redis
  • 关于TransactionScope使用
    TransactionScope 是一个用于管理事务的类,它提供了对事务的创建、提交和回滚的支持。通过 TransactionSco...
    99+
    2023-09-23
    使用
  • 关于python中.xpath的使用问题
    在python中使用xpath定位时,有时候会先用.xpath定位到一个地点,for循环后,继续使用.xpath,但是会出现问题,比如在下面这个例子中:    根...
    99+
    2022-11-12
  • 关于如何使用python的gradio库
    Gradio是一个功能丰富的Python库,可以让您轻松创建和共享自己的交互式机器学习和深度学习模型。 以下是Gradio库的一些主要功能: 创建交互式接口 Gradio库使得创建交...
    99+
    2023-05-17
    python python gradio
  • 关于python中map函数的使用
    1. 概念 map函数也是python中的一个内置函数,用法同之前讲过的filter函数类似。map在这里的意思是映射的意思,会根据提供的函数对指定序列做映射。 map函数会返回一个...
    99+
    2023-05-16
    python map python map函数
  • 关于如何使用python的logging库
    logging是Python标准库中用于记录日志的模块。它提供了一种简单但灵活的方法来记录程序中的事件,以便稍后进行调试和分析。 使用logging库的基本步骤如下: 导入loggi...
    99+
    2023-05-17
    python库 python logging
  • 关于exists 的使用
    1、exists 字面意思存在。   EXISTS里的子查询结果集非空,EXISTS()子句的值就是true。   EXISTS里的子查询结果集为空,EXISTS()...
    99+
    2022-10-18
  • Python中关于property使用的小技巧
    目录property属性具体实例property属性的有两种方式装饰器方式旧式类新式类类属性方式property对象与@property装饰器对比property对象类属性@prop...
    99+
    2022-11-12
  • python中关于CIFAR10数据集的使用
    目录关于CIFAR10数据集的使用CIFAR10的官方解释实战操作CIFAR-10 数据集简介数据集版本数据集布置总结关于CIFAR10数据集的使用 主要解决了如何把数据集与tran...
    99+
    2023-02-01
    python CIFAR10数据集 CIFAR10数据集的使用 CIFAR10数据集
  • Protocol Buffer的使用(p
    1.需要安装Protocol Buffer 直接:apt-get install protobuf-compiler 安装完毕后,进入解压目录的python目录,执行python setup.py install;安装python的pro...
    99+
    2023-01-31
    Protocol Buffer
  • 关于 MySQL 中 Update 使用
    一、关于 MySQL 中 Update 使用 1.1 Update 简介 Update 是 SQL 中用于更新表格中已有记录的命令。通过使用 Update 命令,您可以更新表格中的一行或多行记录,并根据需要更改它们的值。在执行 U...
    99+
    2023-09-02
    数据库 mysql sql
  • C++使用boost.python编写P
    很久没有写文章了,今天整理了一些东西,在这里分享一下。 最近一直在想用C++封装一些在工作中常用的Python扩展模块,因为之前没有用C++写过类似的东西,因此一直在网上找一些文章,但是我发现好多文章都描述的不是很清晰,对于老鸟来说应该会很...
    99+
    2023-01-31
    boost python
  • 关于Python中zipfile压缩包模块的使用
    目录简介解压文件是否ZIP文件读取元数据从其他数据源压缩文件写入ZipInfo追加文件创建包含Python库的ZIP简介 ZIP 文件格式是一个常用的归档与压缩标准,zipfile&...
    99+
    2023-05-15
    Python zipfile Python 压缩包模块 zipfile压缩包模块
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作