0%

查看本地Python库说明文件

python -m pydoc -p 1234   (1234为自定义端口号)
#浏览器输入 localhost:自定义端口

单纯的看英语,可能比较困难,还好我们有Chrome浏览器 再点击翻译选项后,页面就变成了这个样子

1.前期准备:

1、Linux基础知识 2、Ubuntu14.04TLS 3、hadoop安装包

2. 新建hadoop用户

adduser hadoop
passwd hadoop

3. 安装JDK

sudo apt-get update     #更新后才可用吗default-jdk安装
sudo apt-get install default-jdk

4. 在home目录新建hadoop下载目录,hadoop_download

mkdir hadoop_download

5. 下载hadoop安装文件

cd hadoop_download
wget http://archive.apache.org/dist/hadoop/core/hadoop-2.7.1/hadoop-2.7.1.tar.gz

注:上面的网址有时下载缓慢,不稳定,可以选中下面的附件,右键复制链接地址,替换上述网址。(附件位于文末【文章存档链接中】)格式为:

wget --no-check-certificate [https://网址]

因为网址为https因此需要加–no-check-certificate参数

6. 为sudoers添加hadoop

su    #切换root用户
vim /etc/sudoers        #若编辑器不存在,请执行sudo apt-get install vim
#在 root  ALL=(ALL:ALL) ALL下方新增
hadoop  ALL=(ALL:ALL) ALL
#保存并退出vim编辑器
su hadoop       #切换回hadoop用户

7. 安装openssh-server

sudo apt-get install openssh-server

#测试安装是否成功
ssh localhost
#输入yes后输入密码成功看到以下消息为成功
Last login: Wed Jan 17 21:08:16 2018 from desktop-eeg1rso.lan
hadoop@ubuntu:~$

8. 解压hadoop-2.7.1.tar.gz

sudo tar -zxvf hadoop_2.7.1.tar.gz -C /usr/local/

解释参数zxvf x : 从 tar 包中把文件提取出来 z : 表示 tar 包是被 gzip 压缩过的,所以解压时需要用 gunzip 解压 v : 显示详细信息 f xxx.tar.gz : 指定被处理的文件是 xxx.tar.gz tar -C指定解压的目录【来源网络】

9. 设置hadoop-2.7.1/的写权限

cd /usr/local/
sudo chmod a+W hadoop-2.7.1/

10. 配置文件

cd hadoop-2.7.1/etc/hadoop/
ll

如下图所示: 我们需要配置以下几个文件:

hadoop-env.sh
core-site.xml
hdfs-site.xml

10.1 找出Java安装路径

因为我们使用apt安装Java因此,需要找出安装的路径

which java
ls -lar /usr/bin/java
ls -lar /etc/alternatives/java
ls -lar /usr/lib/jvm/java-7-openjdk-amd64/jre/bin/java
#当路径不在发生改变时,我们即找到了安装目录过程如下图所示

因此Java的目录为:
/usr/lib/jvm/java-7-openjdk-amd64/jre/bin/java

10.2 修改hadoop-env.sh文件

sudo vim hadoop-env.sh
#修改下图的JAVA_HOME

/usr/lib/jvm/java-7-openjdk-amd64/jre

10.3 修改core-site.xml文件

mkdir /home/hadoop/hadoop_tmp_data
sudo vim core-site.xml

加入configuration标记之间

<property>
<name>fs.defaultFS</name>
<value>hdfs://localhost:9000</value>
</property>
<property>
<name>hadoop.tmp.dir</name>
<value>/home/hadoop/hadoop_tmp_data</value>
</property>

10.4 修改hdfs-site.xml文件

sudo vim hdfs-site.xml

加入configuration标记之间

<property>
<name>dfs.replication</name>
<value>1</value>
</property>

11. 格式化namenode

cd /usr/local/hadoop-2.7.1/
./bin/hdfs namenode -format

看到Storage directory /home/hadoop/hadoop_tmp_data/dfs/name has been successfully formatted.意味着namenode格式化成功。如下图

12. 启动hdfs

./sbin/start-dfs.sh
#下来会输好几次密码

结果如图

13. 验证启动

jps

输入后应如下图

14. 运行 hadoop伪分布式实例

./bin/hdfs dfs -mkdir -p /user/hadoop
./bin/hdfs dfs -mkdir input
./bin/hdfs dfs -put ./etc/hadoop/*.xml input
./bin/hdfs dfs -ls input  #查看创复制的文件列表
./bin/hadoop jar ./share/hadoop/mapreduce/hadoop-mapreduce-examples-*.jar grep input output 'dfs[a-z.]+'   #执行测试
./bin/hdfs dfs -cat output/*           #输出结果

输出结果如下:

15. 将输出结果取回本地

rm -r ./output    # 先删除本地的 output 文件夹(如果存在)
./bin/hdfs dfs -get output ./output # 将 HDFS 上的 output 文件夹拷贝到本机
cat ./output/*  #输出output文件夹下所有文件

结果如下:

16. 关闭hdfs

./sbin/stop-dfs.sh

17. 安装过程可能遇到的错误

  1. sudo apt-get install defualt-jdk 无效 答:执行sudo apt-get update再执行上述命令即可。
  2. hdfs格式化namenode格式化失败 答:hadoop-env.sh文件的JAVA_HOME是否有问题,是否配置错误。
  3. jps执行后进程仅有jps一个 答:可能启动hdfs的用户为root,或hosts中没有公网ip对应hostname
  4. 执行测试验证“./bin/hadoop jar ./share/hadoop/mapreduce/hadoop-mapreduce-examples-.jar grep input output ‘dfs[a-z.]+’”是,Java运行库出错,内存过小。 答:Oracle VM VirtualBox可以关机后,增加虚拟机的内存,再次执行 /usr/local/hadoop-2.7.1/sbin/start-dfs.sh 后再次执行上述验证命令 ./bin/hadoop jar ./share/hadoop/mapreduce/hadoop-mapreduce-examples-.jar grep input output ‘dfs[a-z.]+’
  5. 执行13步的第一条命令出错 答:请检查当前位置是否位于/usr/local/hadoop-2.7.1目录中
  6. 虚拟机安装完毕默认hadoop用户没有root用户 答:给root用户设置密码即可sudo passwd root
  • 其他错误请参考17步,文章参考中的①。

18. 文章参考

  1. Hadoop安装教程_单机/伪分布式配置_Hadoop2.6.0/Ubuntu14.04
  2. Hadoop2.4.1伪分布式搭建【传智播客】
  3. 解压命令tar zxvf中zxvf分别是什么意思

19.备注

  • hadoop版本为:2.7.1
  • jdk版本为:1.7.0_151
  • 实验日期:2018/1/17

20.文章存档

1. 将不常见时间格式转化为常见时间格式

from datetime import date
from datetime import datetime
date.formordinal(735190)

2. 将时间转化为固定格式

from datetime import date
from datetime import datetime
datetime.strftime(x,'%Y-%m-%d')

3. 删除原date列

df.drop(['date'],axis=1) #删除date列

4. 创建时间序列

import pandas as pd
dates=pd.date_range('20180222',periods=7)
  • 生成的时间为[2018-02-22,…..,2018-02-28],periods为生成7天的日期

1. 获取DateFrame中一列中包含的属性(不同的值(去重))

import pandas as pd
import numpy as np
import matplotlib.pyplot as pt
name=["标题","价格","位置","评分","房屋编号","推荐标签","支付标签","简要描述"]
data=pd.read_csv("data_in_need/tujia.csv",encoding="gbk")
df=pd.DataFrame(data=data,columns=name)
df.评分.unique()

格式为

df.列名.unique()
或
df["列名"].unique()

2. DateFrame中的某一列属性的重复次数统计(计数)

df.评分.value_counts()

格式为df.列名.value_counts()

3. 处理特殊字符数据

raw['season']=row['season'].apply(lambda x: int(x.split('-')[0]))

去除年份中间的‘-’,取后面的年份

4. onehot编码

pd.get_dummies(df["评分"],prefix="评分")[:5]

有关函数

  • match函数

    #encoding:utf-8
    import re
    pattern=re.compile(r’hello’)
    match=pattern.match(‘hello word!!’)
    if match:

      print(match.group())
    
  • split函数

    import re
    re.split(“\d+”,”one1two2three3four4”)

  • finditer(迭代器)

    import re
    content = ‘’’email:12345678@163.com
    email:2345678@163.com
    email:345678@163.com
    ‘’’
    result=re.finditer(r”\d+@\w+.com”,content)
    for m in result:

      print(m.group())
    
  • findall

    import re
    re.findall(“\d+”,”one1two2three3four4”)