全栈工程师开发手册 (作者:栾鹏)
​python数据挖掘系列教程​​


hadoop下载

这里下载的hadoop-2.7.5.tar.gz
​​​ http://mirror.bit.edu.cn/apache/hadoop/common/​

或者下载hadoop-2.7.3.tar.gz
​​​ http://archive.apache.org/dist/hadoop/core/hadoop-2.7.3/​

我们这里使用2.7.5

确保操作系统是64bit,已安装.netframework,要4.0以上版本,一般现在的windows系统都有自带的。

确保安装并配置了64位的Java1.7以上版本。我这里用的是64位的JDK1.8.0。不能使用32位的java。

环境变量中配置

JAVA_HOME:C:\Program Files\Java\jdk1.8.0_161
CLASSPATH:%JAVA_HOME%\lib
Path:%JAVA_HOME%\bin;%JAVA_HOME%\jre\bin;

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-tZbWj3Q7-1606048128037)(http://i.imgur.com/4JP1bzc.png)]

解压也不细说了,注意路径里不要带空格,否则可能会无法正确识别。这里复制到G盘根目录直接解压,出来一个目录G:\hadoop-2.7.5
(解压后会提示报错说有两个.so的文件没法创建链接,不用管直接干)

配置环境变量

创建HADOOP_HOME为G:\hadoop-2.7.2

window下hadoop、hbase的安装和eclipse开发环境配置_hadoop

在PATH里加上%HADOOP_HOME%\bin;

配置设置

到hadoop根目录,如果没有data文件夹的话就新建一个,然后在data下分别创建datanode、namenode两个文件夹

​下载相关工具类​​,直接解压后把文件丢到G:\hadoop-2.7.5\bin目录中去,将其中的hadoop.dll在c:/windows/System32下也丢一份;

去G:\hadoop-2.7.5\etc\hadoop找到下面4个文件并按如下最小配置粘贴上去:

core-site.xml
这里面配置的是hdfs的文件系统地址

<configuration>
<!--指定namenode的地址。-->
<property>
<name>fs.defaultFS</name>
<value>hdfs://localhost:9000</value>
</property>
<property>
<name>io.file.buffer.size</name>
<value>131072</value>
</property>
<!--用来指定使用hadoop时产生文件的存放目录
<property>
<name>hadoop.tmp.dir</name>
<value>file:/hadoop-2.6.0/tmp</value>
</property>
-->

<!--用来设置检查点备份日志的最长时间
<name>fs.checkpoint.period</name>
<value>3600</value>
-->
</configuration>

hdfs-site.xml
这里面配置的是hdfs文件存储在本地的哪里以及secondary namenode的地址。其中file:/hadoop-2.7.5/data/namenode表示当前盘符下的/hadoop-2.7.5/data/namenode文件夹,在我电脑上就是G:\hadoop-2.7.5\data\namenode

<configuration>
<!--指定DataNode存储block的副本数量-->
<property>
<name>dfs.replication</name>
<value>1</value>
</property>
<!--指定hdfs中namenode的存储位置-->
<property>
<name>dfs.namenode.name.dir</name>
<value>file:/hadoop-2.7.5/data/namenode</value>
</property>
<!--指定hdfs中datanode的存储位置。这里要配置自己的位置-->
<property>
<name>dfs.datanode.data.dir</name>
<value>file:/hadoop-2.7.5/data/datanode</value>
</property>
<!--namenode的存储系统情况网址 -->
<property>
<name>dfs.namenode.http-address</name>
<value>127.0.0.1:50070</value>
</property>
<property>
<name>dfs.namenode.secondary.http-address</name>
<value>127.0.0.1:8001</value>
</property>
</configuration>

mapred-site.xml
若目录中无此文件,则复制etc/hadoop/mapred-site.xml.template重命名为此文件。

<?xml version="1.0" encoding="UTF-8"?>
<configuration>
<!--告诉hadoop以后MR(Map/Reduce)运行在YARN上-->
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>

</configuration>

yarn-site.xml
这里面配置的是yarn的日志地址以及一些参数配置

<!--nomenodeManager获取数据的方式是shuffle-->
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
<!--指定Yarn的RM(ResourceManager)的地址 -->
<property>
<name>yarn.resourcemanager.hostname</name>
<value>127.0.0.1</value>
</property>
<property>
<name>yarn.resourcemanager.webapp.address</name>
<value>127.0.0.1:8088</value>
</property>

<!--Yarn打印工作日志-->
<property>
<name>yarn.log-aggregation-enable</name>
<value>true</value>
</property>
<property>
<name>yarn.nodemanager.aux-services.mapreduce.shuffle.class</name>
<value>org.apache.hadoop.mapred.ShuffleHandler</value>
</property>

hadoop-env.cmd

set JAVA_HOME=C:\Progra~1\Java\jdk1.8.0_161

其中java的安装路径使用你自己的路径,由于Program Files中有空格,所以使用progra~1代码

第一次启动前操作

**在hadoop-env.sh里写JAVA_HOME。**下面的是默认设置,不要使用这个默认设置,它不会读取系统环境中的JAVA_HOME所以要改成你的实际地址

export JAVA_HOME= C:\Program Files\Java\jdk1.8.0_161

**先启动hdfs,**在此之前要格式化分布式文件系统。启动windows命令行窗口,切换到hadoop的bin目录。进行以下操作

hdfs namenode -format myclustername

如果格式化正常可以看到生成了在hdfs-site.xml文件中设置的两个目录地址。在启动中有可能会询问是否创建文件目录,选择Y就是可以了。

**启动namenode。**启动windows命令行窗口,切换到hadoop的sbin目录。进行以下操作

hadoop-daemon.sh --script hdfs start namenode

如果正常启动,可以看到启动了相应的进程,并且/hadoop-2.7.5/logs目录下生成了相应的日志。

然后启动datanode,命令行窗口,切换到hadoop的sbin目录执行:

hadoop-daemon.sh --script hdfs start datanode

如果考虑启动secondary namenode,可以用同样的方法启动

下面我们启动yarn,先启动resourcemanager,sbin目录下执行:

yarn-daemon.sh start resourcemanager

如果正常启动,可以看到启动了相应的进程,并且logs目录下生成了相应的日志

然后启动nodemanager,执行:

yarn-daemon.sh start nodemanager

如果正常启动,可以看到启动了相应的进程,并且logs目录下生成了相应的日志。

然后启动MapReduce JobHistory Server,执行:

mr-jobhistory-daemon.sh start historyserver

如果正常启动,可以看到启动了相应的进程,并且logs目录下生成了相应的日志。

到这里,你的hadoop就可以正常使用了。可以查看一下版本 hadoop version

启动hadoop集群

切换到hadoop的 sbin目录 执行:start-all.cmd

启动会弹出数个窗口,启动完成需要数秒时间,所以要稍等片刻才能成功访问下面的网址。

hadoop管理界面:http://localhost:8088。看下yarn管理的集群资源情况(因为在yarn-site.xml中我们配置了yarn.resourcemanager.webapp.address是127.0.0.1:8088)

NameNode界面:http://localhost:50070。看下namenode的存储系统情况(因为在hdfs-site.xml中我们配置了dfs.namenode.http-address是127.0.0.1:50070)

HDFS NameNode界面:http://localhost:8042

如果重启hadoop无需再格式化namenode,只要stop-all.cmd再start-all.cmd就可以了。

到此为止我们对hadoop的部署完成。下面试验一下hadoop的功能。
先验证一下hdfs分布式文件系统,执行以下命令看是否有输出:

配置开发环境

下载:
​​​hadoop-eclipse-plugin-2.7.5.jar​​ 将其拷贝到eclipse中的plugins中。

重新启动eclipse,打开windows->Preferences的Hadoop Map/Reduce中设置安装目录:

window下hadoop、hbase的安装和eclipse开发环境配置_大数据_02

打开Windows->Open Perspective打开透视图中的Map/Reduce,在此perspective下进行hadoop程序开发。

window下hadoop、hbase的安装和eclipse开发环境配置_python_03

打开Windows->Show View显示视图中的Map/Reduce Locations,如下图

window下hadoop、hbase的安装和eclipse开发环境配置_eclipse_04

右键选择New Hadoop location…新建hadoop连接。

window下hadoop、hbase的安装和eclipse开发环境配置_hadoop_05

配置hadoop连接

window下hadoop、hbase的安装和eclipse开发环境配置_python_06

Map/Reduce Master
Host:localhost(Master.Hadoop的IP地址, 与集群的mapred-site.xml文件中配置的一样)
Port:50020 (与集群的mapred-site.xml文件中配置的一样)
因为我们并没有配置,所以使用默认的。

DFS Master
Use M/R Master host:前面的勾上。(因为我们的NameNode和JobTracker都在一个机器上。)
Port:9000(与集群的core-site.xml文件中配置的一样)

完成配置,显示连接信息(只有hadoop集群启动了才能连接成功哦)

连接成功!可以新建项目了咯
新建->项目->Map/Reduce Project

window下hadoop、hbase的安装和eclipse开发环境配置_python_07

至此配置已完成!

hbase的部署

首先从http://www.apache.org/dyn/closer.cgi/hbase/下载稳定版安装包,我下的是https://mirrors.tuna.tsinghua.edu.cn/apache/hbase/stable/apache-hive-2.1.1-bin.tar.gz

保持hadoop启动状态,我们来学习hbase的部署。

解压后即可使用,我这里和hadoop-2.7.5一样都放在了G盘中,路径为G:\hbase-1.3.2

解压后,在系统环境变量中添加

HBASE_HOME:G:\hbase-1.3.2
PATH:%HBASE_HOME%\bin

解压后修改conf/hbase-site.xml,改成:

<configuration>
<property>
<name>hbase.cluster.distributed</name>
<value>true</value>
</property>
<property>
<name>hbase.rootdir</name>
<value>hdfs://localhost:9000/hbase</value>
</property>
<property>
<name>hbase.zookeeper.quorum</name>
<value>127.0.0.1</value>
</property>
</configuration>

其中hbase.rootdir配置的是hdfs地址,ip:port要和hadoop/core-site.xml中的fs.defaultFS保持一致

其中hbase.zookeeper.quorum是zookeeper的地址,可以配多个,我们试验用就先配一个。

启动hbase,window命令窗口,切换到hbase安装目录下,我这里是G:\hbase-1.3.2\bin目录下,执行:

start-hbase.sh

这时有可能会让你输入本地机器的密码

启动成功后可以看到几个进程起来,包括zookeeper的HQuorumPeer和hbase的HMaster、HRegionServer

下面我们试验一下hbase的使用,在cmd窗口中输入:

hbase shell

启动hbase的shell编程