基于python的hadoop(单机)环境搭建及使用

  • 0.写在前面
  • 1.虚拟机安装centos6.5
    • 1.1安装流程
      • 1.1.1系统安装
      • 1.1.2修改静态ip(超级用户)
      • 1.1.3更换可用源(超级用户)
      • 1.1.4安装配置telnet(超级用户)
      • 1.1.5关闭防火墙(超级用户)
    • 1.2参考网址
  • 2.在centos6.5中安装python
    • 2.1配置流程
      • 2.1.1安装python(超级用户)
      • 2.1.2需要安装的库(普通用户,有pip3装这些库会很简单)
    • 2.2参考网址
  • 3.在centos6.5中搭建hadoop(单机)并设置免密登录
    • 3.1配置流程
      • 3.1.1安装jdk(超级用户,大部分教程装在/usr目录上)
      • 3.1.2安装并配置hadoop(普通用户)
      • 3.1.3测试一下(普通用户)
      • 3.1.4设置免密登录(对应的用户)
    • 3.3参考网址
  • 4.使用hadoop
    • 4.1hadoop常用命令
      • 4.1.1 上传文件
      • 4.1.2 查看文件内容
      • 4.1.3 查看指定路径下的文件
      • 4.1.4 删除文件
      • 4.1.5下载文件
      • 4.1.6 创建目录或文件
      • 4.1.7 重命名文件
      • 4.1.8 终止作业
    • 4.3python中的mrjob库的运用
    • 4.2参考网址

0.写在前面

多了解一些linux系统的基础。本记录贴基于Centos6.5版本,使用jdk1.7.0_71,python3.6.8,hadoop-2.5.2。文章内容为个人学习记录以及理解。如有错误,望斧正。

一、安装流程:
1.修改静态ip–>2.更换可用源–>3.安装python3(进入python3.6文件夹后先执行2.1的操作)–>4.安装pip3(本贴使用的是python3.6.8,相对较高版本不会出现需要更新ssh的情况)–>5.安装好相关库–>6.安装jdk

二、相关参考资源:
(1)Linux常用命令
(2)centos6.5 提取码:y0dz
(3)vm虚拟机 提取码:si64
(4)Python3.6.8 提取码:clhg
(5) jdk1.7_071 提取码:w5uj
(6)hadoop-2.5.2 提取码:nhn3

1.虚拟机安装centos6.5

1.1安装流程

安装虚拟机–>修改静态ip–>更换可用源

1.1.1系统安装

centos系统普通安装比较简单,略了。
查看当前系统的版本

cat /etc/redhat-release   #任意选一项即可
cat /etc/issue     #任意选一项即可

查看当前系统的内核

cat /proc/version            #任意选一项即可
uname -a                    #任意选一项即可

无界面版安装参考参考网址

1.1.2修改静态ip(超级用户)

查看虚拟机的网络配置

再执行以下代码,根据以上参数修改ifcfg-eth0文档

vi /etc/sysconfig/network-scripts/ifcfg-eth0

我的配置如下

在ifcfg-eth0文件中主要修改:
        1.是BOOTPROTO改为静态
        2.修改ONBOOT=“yes”,指明在系统启动时激活网卡,只有在激活状态的网卡才能去连接网络,进行网络通讯。
        3.设置正确的ip地址,前三个码段要和虚拟机的网关一致
        4.USERCTL=yes/no 是否允许非root用户控制该设备
        5.IPADDR:ip地址
        6.NETMASK:子网掩码(一般为255.255.255.0)
        7.GATEWAY:网关

执行

service network restart

重启网络后,打开浏览器测试一下是否联网成功。
查看ip地址是否修改成功(以下命令任意都可以查看ip地址)

ip addr              #任意选一项即可
ifconfig                    #任意选一项即可

其余配置信息,可用以下命令查看

route

1.1.3更换可用源(超级用户)

换源
        超级用户模式下依次执行以下命令即可(以下命令是修改为阿里源的命令)

sed -i "s|enabled=1|enabled=0|g" /etc/yum/pluginconf.d/fastestmirror.conf
mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.backup
curl -o /etc/yum.repos.d/CentOS-Base.repo https://www.xmpan.com/Centos-6-Vault-Aliyun.repo
yum clean all
yum makecache

第一句命令我目前不知是什么含义
        第二句是备份原本的的CentOS-Base.repo文件
        第三句下载Centos-6-Vault-Aliyun.repo并以CentOS-Base.repo保存
        第四句清除原本的缓存包
        第五句保存下载新下载的缓存包

查看是否换源成功

cat /etc/yum.repos.d/CentOS-Base.repo

和下面类似有aliyum基本上是成功的了

        注:如果在换源成功后依然不能使用的情况,可以尝试以下方式解决(我遇到的问题确实是这个,所以能解决)在超级用户下修改

vi /etc/yum.repos.d/epel.repo

把所有https改为http,如下

1.1.4安装配置telnet(超级用户)

安装前先查看telnet

rpm -qa | grep telnet

安装

yum install  xinetd
yum install telnet
yum install telnet-server

修改配置文件

vim  /etc/xinetd.d/telnet

用su权限把disable改为 no,如图

然后保存退出即可
最后使配置生效

service  xinetd restart

关闭防火墙,然后在物理机上设置一下
借用一下这个博客的图

然后就可以win+r唤出运行窗口并输入cmd打开命令行窗口
输入以下内容(虚拟机的ip地址)

telnet xxx.xxx.xxx.xxx

连接自己的虚拟机了

接着输入自己虚拟机用户的账号密码,账号密码正确就会连接上了。

1.1.5关闭防火墙(超级用户)

查询防火墙状态

service iptables status

如下是防火墙开启状态

如下是防火墙关闭状态

临时关闭防火墙

service iptables stop

永久关闭防火墙

chkconfig iptables off

1.2参考网址

(1)VMware中安装Centos6.5-64位-minimal镜像
(2)修改静态ip
(3)CentOS 6 2021 可用源
(4)CentOS 6和CentOS 7防火墙的关闭
(5)centos6.5上安装配置telnet服务

2.在centos6.5中安装python

2.1配置流程

安装python3–>安装相关库

2.1.1安装python(超级用户)

先安装一下系统依赖。(缺少依赖会导致hadoop无法运行,必须所有都装上,反正安装过的不会再安装 )

yum install -y zlib-devel bzip2-devel \
openssl-devel ncurses-devel sqlite-devel \
readline-devel tk-devel gcc make

下载python3.6.8。下载太早的版本会遇到ssh版本太低的问题,比较难处理,所以我们这里下载3.6.8版本,博主亲测不会出现ssh过低问题。
可以先打开自己想要安装的位置,再执行以下操作。

wget https://www.python.org/ftp/python/3.6.8/Python-3.6.8.tgz

解压
压缩包解压到当前路径下

tar -zxvf Python-3.6.8.tgz

安装
先打开Python-3.6.8文件夹

cd Python-3.6.8
./configure --prefix=/usr/local/python3
make && make install

建立软连接

ln -s /usr/local/python3/bin/python3.6 /usr/bin/python3.6
ln -s /usr/local/python3/bin/python3.6 /usr/bin/python3
ln -s /usr/local/python3/bin/pip3 /usr/bin/pip3

最后升级一下pip3

pip3 install --upgrade pip

2.1.2需要安装的库(普通用户,有pip3装这些库会很简单)

安装好相关的python库,为后面使用hadoop准备。
(1)numpy

pip3 install -i https://pypi.tuna.tsinghua.edu.cn/simple numpy

(2)matplotlib

pip3 install -i https://pypi.tuna.tsinghua.edu.cn/simple matplotlib

(3)mrjob

pip3 install -i https://pypi.tuna.tsinghua.edu.cn/simple mrjob

2.2参考网址

(1)Centos6 安装python3 pip3 ipython3
(2)如何修改CentOS 6.x上默认Python版本
(3)centos怎么卸载python
(3)Centos6.5 编译安装python3.5版本,无法使用退格键方向键删除键等
(4)解决pip3 install下载很慢的问题(直接指定路径)
(5)pip3下载速度慢的解决办法(永久修改)

3.在centos6.5中搭建hadoop(单机)并设置免密登录

3.1配置流程

安装jdk–>安装并配置hadoop–>设置免密登录

3.1.1安装jdk(超级用户,大部分教程装在/usr目录上)

下载jdk
        下载到文件后先把文件从主机传到虚拟机,解压到当前压缩包位置可以忽略-C及后面内容

tar zxvf /文件所在路径/下载到的压缩包名称  /解压文件存放路径

关于解压问题见参考网址
关于对应文件配置环境变量的作用

/etc/profile
#此文件为系统的每个用户设置环境信息,当用户第一次登录时,该文件被执行.并从/etc/profile.d目录的配置文件
中搜集shell的设置.
/etc/bashrc
#为每一个运行bash shell的用户执行此文件.当bash shell被打开时,该文件被读取.
~/.bash_profile
#每个用户都可使用该文件输入专用于自己使用的shell信息,当用户登录时,该文件仅仅执行一次!默认情况下,他设
置一些环境变量,执行用户的.bashrc文件.
~/.bashrc
#该文件包含专用于你的bash shell的bash信息,当登录时以及每次打开新的shell时,该该文件被读取.
~/.bash_logout
#当每次退出系统(退出bash shell)时,执行该文件.

配置环境变量

vim /home/hadoop/.bash_profile

追加如下内容(本贴的java是为hadoop装的,只需要javahome)

#JAVA
export JAVA_HOME=/usr/java/jdk1.8.0_131 #注意替换版本号
export PATH=$JAVA_HOME/bin:$PATH

然后使配置生效即可

source /home/hadoop/.bash_profile

按照参考网址3.3(1)的安装流程,即可完成安装
        注意:修改/home/hadoop/.bash_profile时应当根据自己安装路径进行配置

3.1.2安装并配置hadoop(普通用户)

安装hadoop,把下载到的包解压到指定路径之后(建议放在普通用户的根目录下)
解压
        解压到当前压缩包位置可以忽略-C及后面内容

tar zxvf /文件所在路径/下载到的压缩包名称  -C  /解压文件存放路径

参数配置

编辑配置文件1
        写上自己对应的java路径

vim /home/hadoop/hadoop-*/etc/hadoop/hadoop-env.sh

编辑配置文件2

vim /home/hadoop/hadoop-*/etc/hadoop/yarn-env.sh

写上自己对应的java路径

        编辑配置文件3

vim /home/hadoop/hadoop-*/etc/hadoop/core-site.xml
<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
<configuration>
<property><name>fs.default.name</name><!-- 这里填的是你自己的ip,端口默认,hdfs工作模式--><value>hdfs://192.168.1.109:9000</value>
</property>
<property><name>hadoop.tmp.dir</name><!-- 这里填的是你自定义的hadoop工作的目录,端口默认--><value>/usr/local/hadoop/tmp</value>
</property>
</configuration>

编辑配置文件4

vim /home/hadoop/hadoop-*/etc/hadoop/hdfs-site.xml
<configuration>
<!-- 备份namenode节点访问位置 -->
<property><name>dfs.namenode.secondary.http-address</name><value>192.168.1.109:50090</value>
</property>
<!-- 主namenode节点访问位置 -->
<property><name>dfs.namenode.http-address</name><value>192.168.1.109:50070</value>
</property><!-- 这个参数设置为1,因为是单机版hadoop -->
<property><name>dfs.replication</name><value>1</value>
</property><!-- 设置hdfs的文件权限 -->
<property><name>dfs.permissions</name><value>false</value></property><!-- 指定namenode元数据存储位置 -->
<property><name>dfs.namenode.name.dir</name><value>file:/usr/local/hadoop/data/namenode</value>
</property><!-- 指定namenode日志文件存储位置 -->
<property><name>dfs.namenode.edits.dir</name><value>file:/usr/local/hadoop/data/edits</value>
</property><!-- 指定datanode数据存储位置 -->
<property><name>dfs.datanode.data.dir</name><value>file:/usr/local/hadoop/data/datanode</value>
</property><!-- 设置datanode切片大小 128M-->
<property><name>dfs.blocksize</name><value>134217728</value>
</property>
</configuration>

编辑配置文件5

vim /home/hadoop/hadoop-*/etc/hadoop/mapred-site.xml
<configuration>
<property><name>mapreduce.framework.name</name><value>yarn</value>
</property>
<property>     <name>mapred.job.tracker</name>    <value>192.168.1.109:9001</value>
</property>
<!-- 开启历史任务  -->
<property>     <name>mapreduce.jobhistory.address</name>    <value>192.168.1.109:9002</value>
</property>
<!-- 开启历史任务访问端口  -->
<property>     <name>mapreduce.jobhistory.webapp.address</name>    <value>192.168.1.109:9003</value>
</property>
<!-- 开启mapreduce小任务模式  -->
<property>     <name>mapreduce.job.ubertask.enable</name>    <value>ture</value>
</property>
</configuration>

编辑配置文件6

vim /home/hadoop/hadoop-*/etc/hadoop/yarn-site.xml
<configuration><!-- Site specific YARN configuration properties -->
<!--配置yarn主节点位置,默认端口8088 -->
<property><name>yarn.resourcemanager.hostname</name><value>192.168.1.109</value>
</property>
<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>
</configuration>

配置环境变量

vim ~/.bash_profile

追加以下内容

#HADOOP
export HADOOP_HOME=/home/hadoop/hadoop-2.5.2
export PATH=$HADOOP_HOME/bin:$HADOOP_HOME/sbin:$PATH

保存并推出文件后使用,使配置生效

source ~/.bash_profile

在完成安装后可能会出现需要反复配置的问题。可以执行以下命令
注意:此处应该以超级用户下执行
        编辑~/.bashrc

vim ~/.bashrc

在行末添加

source /home/hadoop/.bash_profile

然后

source ~/.bashrc

3.1.3测试一下(普通用户)

找到自己版本的hadoop的样例jar包的位置。
        一般是在hadoop-2.5.2/share/hadoop/mapreduce/里,里面会有有个example包格式类似下面。
        计算圆周率pi

hadoop jar /home/hadoop/hadoop-2.5.2/share/hadoop/mapreduce/hadoop-mapreduce-examples-2.5.2.jar pi 10 10

如果运行成功说明hadoop安装成功(如果后续有什么问题也也不应该是前面的配置问题 )
        ps:一个题外话,我在装好python,jdk,hadoop之后,跑jar包没有问题。用python运行自己写的代码失败,最后发现是python依赖未装完整,如果发现问题可以尝试把我前面说的依赖都装一遍,然后删除再编译一次python。

3.1.4设置免密登录(对应的用户)

需要使用两台机器ssh可以互相免密登录

1.master生成 ssh公钥;
2.复制本机公钥到远程服务器.ssh/authorized_keys中,authorized_keys文件不存在则创建;
3.slave1生成公钥,把公钥追加到master的远程服务器.ssh/authorized_keys中;
4.把master的远程服务器.ssh/authorized_keys发送到slave1;
5.设置authorized_keys权限,.ssh和authorized_keys都应只有用户自己有写权限
6.结束。
        需要使用机器ssh可以免密登录
1.生成 ssh公钥;
2.复制本机公钥到远程服务器.ssh/authorized_keys中,authorized_keys文件不存在则创建;
3.设置authorized_keys权限,.ssh和authorized_keys都应只有用户自己有写权限
4.结束。

具体操作
        网上教程各种各样的说法,实际上只是密钥写错地方了。
        超级用户免密

ssh-keygen -t dsa -P '' -f ~/.ssh/id_dsa #生成密钥,-t 指定dsa加密方式,-P ''为不提供密码,-f 指定文件路径
cat ~/.ssh/id_dsa.pub >> ~/.ssh/authorized_keys    #追加密钥内容到authorized_keys
chmod 600 ~/.ssh/authorized_keys     #设置authorized_keys权限

普通用户免密

ssh-keygen -t dsa -P '' -f /home/hadoop/.ssh/id_dsa #生成密钥,-t 指定dsa加密方式,-P ''为不提供密码,-f 指定文件路径
cat /home/hadoop/.ssh/id_dsa.pub >> /home/hadoop/.ssh/authorized_keys         #追加密钥内容到authorized_keys
chmod 600 ~/.ssh/authorized_keys      #设置authorized_keys权限

3.3参考网址

(1)Linux Centos安装JDK1.8教程
(2)CentOS6.5下搭建Hadoop环境详细步骤
(3)Hadoop的jobhistoryserver配置
(4)hadoop进行免密登录详解
(5)Hadoop伪分布模式下启动需要密码登录,求解决SSH免密码登录
(6)Hadoop用户配置免密登陆
(7)mr-jobhistory-daemon.sh 启动和关闭脚本
(8)Linux解决每次进入命令要重新 source /etc/profile 的问题
(9)centos 6.5 解压 tar
(10)hadoop slaves文件_Hadoop 系列(四)—— Hadoop单机伪集群环境搭建
(11)搭建Hadoop+Python的大数据开发环境
(12)Hadoop2.5.2伪分布安装

4.使用hadoop

4.1hadoop常用命令

4.1.1 上传文件

hadoop dfs –put [文件目录]
hdfs dfs -put [文件目录]

4.1.2 查看文件内容

hadoop dfs –ls [文件目录]
hdfs dfs -ls [文件目录]

4.1.3 查看指定路径下的文件

hadoop dfs -cat [文件目录]
hdfs dfs -cat [文件目录]

4.1.4 删除文件

hadoop fs -rm -r -f [文件目录]
hdfs dfs -rm -r -f [文件目录]

4.1.5下载文件

hadoop fs -get [文件目录] [本地目录]
hdfs dfs -get [文件目录] [本地目录]

4.1.6 创建目录或文件

hadoop fs -mkdir [文件目录]
hdfs dfs -mkdir [文件目录]

4.1.7 重命名文件

hadoop fs -mv [文件目录] [本地目录]
hdfs dfs -mv [文件目录] [本地目录]

4.1.8 终止作业

hadoop job –kill [job-id]

4.3python中的mrjob库的运用

4.2参考网址

(1)Hadoop上传文件到hdfs中
(2)【hdfs 常用命令】数据put到hdfs
(3)解决 Unable to load native-hadoop library for your platform
(4)MRJob 十分钟入门: 用 Python 轻松运行 MapReduce
(5)Hadoop之MRjob入门
(6)Hadoop常用命令汇总

#大数据技术#基于python的hadoop(单机)环境搭建及使用相关推荐

  1. python2 json大数据_大数据技术之python 操作json

    本篇文章探讨了大数据技术之python 操作json,希望阅读本篇文章以后大家有所收获,帮助大家对相关内容的理解更加深入. #!/usr/bin/env python import json s = ...

  2. 大数据技术和python开发工程师

    一:大数据技术 简单来说,从大数据的生命周期来看,无外乎四个方面:大数据采集.大数据预处理.大数据存储.大数据分析,共同组成了大数据生命周期里最核心的技术,下面分开来说: 一.大数据采集 大数据采集, ...

  3. 大数据开发和python的区别_大数据技术和python开发工程师

    容易来说,从大数据的生命周期来看,无外乎四个方面:大数据采集.大数据预处理.大数据存储.大数据分析,共同组成了大数据生命周期里最核心的技术,下面分开来说: 一.大数据采集 大数据采集,即对各种来源的结 ...

  4. 大数据第一天 Hadoop01-入门集群环境搭建

    Hadoop01-入门&集群环境搭建 今日内容 ​ Hadoop的介绍 ​ 集群环境搭建准备工作 ​ Linux命令和Shell脚本增强 ​ 集群环境搭建 大数据概述 ​ 大数据: 就是对海量 ...

  5. 【Spark+Hadoop+Hive+MySQL+Presto+SpringBoot+Echarts】基于大数据技术的用户日志数据分析及可视化平台搭建项目

    目录 1.项目概述 1.1.项目背景 1.2.项目流程 2.功能需求描述 2.1.系统功能组成 2.2.数据描述 2.3.功能描述 2.3.1.流量概况分析 2.3.2.日新日活分析 2.3.3.交互 ...

  6. 数据分享|基于Python、Hadoop零售交易数据的Spark数据处理与Echarts可视化分析

    分析师:Enno 案例数据集是在线零售业务的交易数据,采用Python为编程语言,采用Hadoop存储数据,采用Spark对数据进行处理分析,并使用Echarts做数据可视化.由于案例公司商业模式类似 ...

  7. 【大数据实战】Docker中Hadoop集群搭建

    目录 Docker中Hadoop集群搭建 环境 网络设置 安装docker 安装OpenSSH免密登录 Ansible安装 软件环境配置 配置hadoop运行所需配置文件 Hadoop 启动 问题 D ...

  8. -i 可以编译添加多个_大咖说 | 基于 NXP i.MX8 eIQ 环境搭建和编译

    一.前言 NXP 针对 Machine Learning ( ML ) 创建了 eIQ 工具,以方便开发者在 i.MX 系列设备上开发 ML 相关应用. 本篇将会分两个章节,一章节介绍 eIQ 软件, ...

  9. 大数据技术----HBase Python编程

    Thrift 服务 Hbase分布式数据库,使用Java语言编写,除了提供原生的Java接口外,还可以使用其他语言连接,但是需要使用Thrift服务,进行跨语言转换!!! Thrift是一种C/S模式 ...

最新文章

  1. Qemu之Network Device全虚拟方案
  2. NPM:Cannot read property 'pause' of undefined
  3. 【译】Go语言声明语法
  4. 白盒测试——简单分支函数测试
  5. 数据结构Java03【(时间、空间复杂度),排序(冒泡、快速、插入、希尔、选择、归并、基数、队列基数)】
  6. java ltpa_SystemOut频繁输出SECJ0369E: 使用 LTPA 时认证失败
  7. CSS从大图中抠取小图完整教程(background-position应用)
  8. 我给非洲医药基金会捐的款和感谢信
  9. Sparklens:Spark应用程序优化工具
  10. php iis session 超时设置,如何配置IIS Session超时时间
  11. 表主键自增长Mybatis插入数据报错
  12. Sobel边缘检测算法及OpenCV函数实现
  13. C#中奇怪的Queue T 行为!
  14. 我的汉字输入法编码方案
  15. python百万邮件群发软件_python如何群发邮件
  16. Android多点触控之——MotionEvent(触控事件)
  17. 香的很,整理了20份可视化大屏模板
  18. [笔记]Class.forName 时static代码的运行
  19. 自用型监控系统方案设计
  20. 2021-05-10 关于vant按钮小程序点击后出现灰色背景去除方式

热门文章

  1. 如何在matlab中高效优雅地绘制论文插图?
  2. 守护世界守护你 —— 我该如何进化?
  3. 嵌入式学习笔记——概述
  4. crout分解计算例题_初中数学因式分解习题大全(建议父母给孩子收藏直接打印)...
  5. EndNote使用记录
  6. Unity Github 项目收集
  7. Sub1GHz layout 高频布线建议 -以A7129/A7139為例
  8. 阿里堡垒机登录和文件上传下载
  9. 2022-2028年中国汽车样车试制行业市场调研分析及发展规模预测报告
  10. 银行系统 0day 漏洞挖掘与分析 方法研究——期刊读后心得