895959.comlinux上而非可知安装qq等必须软件。分布式系统。

Win10直达利用子系统搭建hadoop本地开发环境和周边问题迎刃而解

为之首稿子来想痛苦之要命数量课程。。。。。。

说明

心中鼓舞的备攻读hadoop,没悟出困难重重,具体多坑?
Hadoop对微软如此不自己,
原打算安装于docker上得以吧,一寻觅,一个课都无,我???,
那么装个虚拟机吧,配置范围了自之想像,
那么将个对网吧,linux上同时不可知装qq等必须软件,
尽管也可编译Hadoop源码为windows版本,但是hadoop那么多生态环境,难道我要是列一个且编译?
若可能会见以代码打包为jar包再发送至服务器上运行,但是就多了大气底调试工作,而且浪费了大量日。
本身将这windows能怎么惩罚?甚至都想换个黑苹果(忍住了)。

估计我好微软自己呢意识这样下来无法盈利,只能赶紧吃上兄弟Ubuntu来填坑。
依课程利用win10起带的Ubuntu子系统来安排Hadoop运行环境。

这里引用一段百度百科的言辞。
Hadoop凡一个是因为Apache基金会所开发的[分布式系统]基础架构。
用户可以当不了解分布式底层细节的情形下,开发分布式程序。充分利用集群的威力进行高效运算和仓储。
Hadoop实现了一个分布式文件系统(Hadoop Distributed File
System),简称HDFS。HDFS有高容错性的表征,并且计划用来配置在物美价廉的(low-cost)硬件及;而且它们提供高吞吐量(high
throughput)来走访应用程序的多少,适合那些具有超大数据集(large data
set)的应用程序。HDFS放宽了(relax)POSIX的要求,可以以流的款式拜访(streaming
access)文件系统中的数目。
Hadoop的框架最基本之设计虽是:HDFS和MapReduce。HDFS为海量的数据提供了蕴藏,则MapReduce为海量的数提供了算。

要求

系统:win10(只有win10好安装子系统)

Hadoop
的安装分为地面模式、伪分布模式、集群模式。本地模式是运行在地头,只承担储存,没有算功能,这里虽未讲述了。伪分布模式是在相同宝机械及效仿分布式部署,方便学习及调剂。集群模式是以多单机器上布置hadoop,是实在的“分布式”。但集群模式对硬件等要求比大,也比较复杂。因此,我们于此间选择伪分布式的装置进行尝试。在介绍伪分布式安装前,我们先介绍一种文件传输工具的安装,后面将会晤就此到。

步骤

文件传输工具的设置

第一步:安装Ubuntu子系统

打开windows商店,搜索Ubuntu,找到后点击安装,等待安装收尾即可。
安装到位后,为了以后能够加快布局速度,装包源也阿里源。

WinSCP 简介

WinSCP是一个Windows环境下使用SSH的开源图形化SFTP客户端。同时支持SCP协议。它的重要力量就是于地方与远程计算机中安全之复制文件。

WinSCP 的装就毫无介绍了,傻瓜式地一直下一致步就是实行。

安到位后, 打开软件, 便进入图1.2。
在觊觎中填入主机名:192.168.36.132(这是本人ubuntu虚拟机IP地址);
然后还填充用户称与密码,这个用户称及密码是公ubuntu的用户称和密码。其它的地方不用动。如下图所示。

点击图中之“登录”在弹出的对话框中摘“是”即可。最终的画面状
态如下图所示。
这样我们即便得进行windows系统和linux系统之间的文书相互拖动传输操作了。

第二步:配置Ubuntu子系统

  • 装主机名(不是须的)

子系主机名默认下windows宿主机的名,如果你根本不曾转了亮的相应是如出一辙失误字符,为了便于开发,你应有修改主机名。通过设置->系统->关于->重命名这台电脑重复改主机名。

  • 设置root密码

sudo passwd root
  • 安默认登录用户

为能造福开发,可以装Ubuntu的默认登录用户也眼前登录win10之用户称,因为若开时是坐时报到用户执行顺序的,所以为了避免权限问题,推荐而这样做。
诸如当前自我win10底用户为manlier,那就算设置默认用户也manlier,如果手上ubuntu中莫拖欠用户,会受你创造。

在Power shell 中执行

ubuntu config --default-user <username>
  • 安装ssh服务

Ubuntu 默认安装了ssh服务,如果没设置,执行

sudo apt-get install openssh-client
sudo apt-get install openssh-server
  • 启动ssh服务

sudo service ssh start

一经遇到题目,重新安装ssh服务

sudo apt-get purge openssh-server
sudo apt-get install openssh-server

重复运行suddo service ssh --full-restart翻开是否就开行成功

  • 配置ssh端口

ssh端口默认是22哀号端口,该端口在win10丁一度于sshProxy服务占了,你得关闭该服务。也可经下的吩咐在Ubuntu中改ssh端口。

修改/etc/ssh/sshd_configPort 22也其他端口

vi /etc/ssh/sshd_config

重启ssh服务

sudo service ssh --full-restart

正文选择第一种,即直接关门sshProxy服务。若您拣第二种植,之后要配备Hadoop集群的ssh端口。

  • 部署免密登录

明确,Hadoop需要建立于ssh的免密服务之上,因此要进行ssh的公钥登录配置。

修改sshd_config文本,主要更改下面几行

UsePrivilegeSeparation no
PermitRootLogin no         #如果你确实要用root方式登录的话设为yes
PasswordAuthentication yes

在Ubuntu中重启ssh服务

sudo service ssh --full-restart

执行ssh-keygen -t rsa -P '' -f ~/.ssh/id_rsa浮动密钥,注意不要采用dsa加密,它不安全吧不再为支持。

执行ssh-copy-id -i ~/.ssh/id_rsa.pub <username>@localhost用公钥发送到Ubuntu,期间要输入一坏(之后虽不需要了)用户之密码。

至此免密服务已配备了。运行ssh localhost查是否非需密码登录,若出现问题,请查看输出及屏幕的日志。

Hadoop 伪分布式安装

Hadoop 伪分布式安装主要分为以下几个步骤:

  • 关闭防火墙
  • 修改 hostname
  • 设置 DNS 解析(ip 与 hostname 绑定)
  • 设置 ssh 自动登录
  • 安装 jdk
  • 安装 hadoop

第三步:安装Hadoop

每当部署完ssh后,你得一直按合法文档遭逢之辨证,在linux环境下安装Hadoop了,这里列有重要步骤。

  • 安装JDK

Hadoop 依赖JDK,首先需设置Java,这里装Oracle Java 8

sudo apt-get install python-software-properties
sudo add-apt-repository ppa:webupd8team/java
sudo apt-get update
sudo apt-get install oracle-java8-installer
  • 配置JAVA_HOME

翻JAVA安装路径

sudo update-alternatives --config java

  Selection    Path                                     Priority   Status
------------------------------------------------------------
  0            /usr/lib/jvm/java-8-oracle/jre/bin/java   1081      auto mode
* 1            /usr/lib/jvm/java-8-oracle/jre/bin/java   1081      manual mode

看到JDK路径为/usr/lib/jvm/java-8-oracle

/etc/environment蒙率先实施上加如下内容:

JAVA_HOME="/usr/lib/jvm/java-8-oracle"

更新环境变量

source /etc/enviroment
  • 下载Hadoop并解压

cd /opt
wget http://mirror.bit.edu.cn/apache/hadoop/common/hadoop-2.9.0/hadoop-2.9.0.tar.gz
tar xzvf hadoop-2.9.0.tar.gz
  • 设置HADOOP_HOME路径

/etc/environment文件中率先执上加HADOOP_HOME变量,为了输入指令时的利着想,你可在到PATH环境变量中。

HADOOP_HOME="/opt/hadoop-2.9.0"
PATH="$HADOOP_HOME/bin:..."

source /etc/environment
  • 设置JAVA_HOME路径

修改etc/hadoop/hadoop-env.sh文件被之JAVA_HOME变量

export JAVA_HOME=/usr/lib/jvm/java-8-oracle
  • 因非官方分布模式配置Hadoop

修改etc/hadoop/core-site.xml文件内容如下:

<configuration>
    <property>
        <name>fs.defaultFS</name>
        <value>hdfs://localhost:9000</value>
    </property>
</configuration>

修改etc/hadoop/hdfs-site.xml文件内容如下:

<configuration>
    <property>
        <name>dfs.replication</name>
        <value>1</value>
    </property>
</configuration>
  • 配置YARN(若您使用YARN作为资源管理器)

修改etc/hadoop/mapred-site.xml如下:

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

修改etc/hadoop/yarn-site.xml如下:

<configuration>
    <property>
        <name>yarn.nodemanager.aux-services</name>
        <value>mapreduce_shuffle</value>
    </property>
</configuration>
  • 格式化文件系统

bin/hdfs namenode -format
  • 打开 NameNode 和 DataNode 守护进程

sbin/start-dfs.sh
  • 开启YARN

sbin/start-yarn.sh
  • 翻是否启动成功

输入jps命令,若以下进程都启动了,说明启动成功

1984 SecondaryNameNode
2212 ResourceManager
2376 Jps
1738 DataNode
1612 NameNode
2334 NodeManager
  • 开创用户目录

hadoop fs -mkdir /user
hadoop fs -mkdir /user/<username>

迄今为止windows上之hadoop环境就是搭建好了,你可打开localhost:50070查阅是否启动成功。

好了,现在若可以使idea或任何开发工具进行开发以及调试了,而非用每次都自包及服务器上运行了(鼓掌)

闭馆防火墙

在ubuntu上面直接运行sudo ufw disable哪怕行了,要是用之centos的说话,运行service iptables stop,然后可以查看防火墙状态吧关闭。

诸如此类操作就是马上会将防火墙给关闭了,
有或下次重启之后防火墙会自动启动。于是,需要开展永久性关闭的操作。首先,输入指令“chkconfig --list | grepiptables”查看防火墙的状态,发现有的选择还是处于“on”的状态,下面用输入指令“chkconfig iptables off”进行完全永久性关闭。再输入指令“chkconfig--list | grep iptables
查看防火墙的状态, 这时会意识全部都是处于 “off” 状态了。

即为印证防火墙彻底永久性被关了。
在 linux 下防火墙称作“iptables” 。该令的意义是查服务 iptables
的状态。如果提示信息如图 2.2 所出示,说明防火墙已经给关门。

顾:防火墙的目的是倒闭尽可能不要的端口,避免吃恶意攻击,保证服务器运行安全。我们这边是试验环境,为了避免无谓的荒唐,选择关闭防火墙。在实际上工作屡遭,尽可能不这么做。

周边错误

  • 用户权限问题

比方你于Ubuntu中以root身份启动了hadoop,并且创造了文本,那么这个文件就属root。而于开发环境被,你是用作其他用户运行程序的,没有权力访问该公文,要拜文件,可经以下指令更改文件所有者:

sudo hadoop fs -chown [-R] [OWNER][:[GROUP]] URI [URI ]

OWNER:GROUP就是用户:所属组,例如更改为manlier:supergroup用文件的所有者改为了supergroup组下之manlier用户

  • datanode进程未启动

查看logs/hadoop-<username>-datanode-<hostname>.log文本检查错误。

倘若出现java.io.IOException: Incompatible
clusterIDs,则证明你的data进程的集群id与name进程的集群id不一样,解决办法如下:

找到你的hdfs的文书存放路径,若您莫指定,默认为/tmp/hadoop-<username>,彻底剔其,重新格式化文件系统,重开hadoop即可,查看现实原因。

  • 出现 Unable to load native-hadoop library for your platform…

查时是否安排好了HADOOP_HOME环境变量

echo $HADOOP_HOME

而出口为空,你要在/etc/enviroment文本中安Hadoop目录:

HADOOP_HOME=your_hadoop_path

连更更新环境变量

source /etc/enviroment

修改 hostname

为便利操作, 这里我们得改系统的主机名。 首先,
输入指令“hostname”查看现场的主机名。发现这个主机名不易被铭记有点复杂不熟悉,然后我们输入指令“hostname hadoop”把主机名反成为我们熟悉容易记住的讳
hadoop,再输入指令“hostname”进行查,这时便会见冒出我们正好安装的主机名
hadoop 了。我这边直接设置也ubuntu。

然诸如此类的设置后,以后系统再度开后还要见面回到原先的没装前的主机名,为了防范返原先的主机名,
下面我们得进行操作为它们永远成为我们友好设置的主机名。输入指令“vi /etc/sysconfig/network”对
network
文件进行编辑处理,把“HOSTNAME=localhost.localdomain”改成“HOSTNAME=hadoop”保存退出即可。

这儿我们为验证主机名是否确实永久改变化了咱正安装的讳
“ubuntu”,我们得以输入指令“reboot –h now”对系统进行再开。然后又远程连接上,再输入命令
“ubuntu” 就见面发觉主机名早已转成为我们刚刚设置的 “ubuntu”了。

设置 DNS 解析

因hadoop集群之间通过主机名相走访,还有因为晚为有利于操作,所以可以装dns
解析。输入指令“vi /etc/hosts”对hosts文件进行编辑,在文件之最终一行多一行内容“192.168.36.132
ubuntu”保存退出即可。

安装后,可以于linux下Ping下看能免可知ping通。(ping ubuntu)。

方操作才是得了当Linux系统下之ip与主机名绑定的操作,我们于windows下吧得一样设置,通过鼠标操作即可形成。
在Windows的C盘中进入 “c:windows/systme32/drivers/etc/hosts” 找到
“hosts”
文本打开在无比下输入一行内容“192.168.36.132 ubuntu”保存退出即可。

再度当Windows下输入指令“ping ubuntu”看是否通信,如果得以说明设置成
功。

安 ssh免密码登陆

SSH 的完备是Secure Shell,使用不对如加密方,传输内容以rsa 或者
dsa 加密,可以有效避免网络窃听。

hadoop 的经过中通信使用ssh 方式,需要每次都如输入密码。为了实现
自动化操作,我们下配置SSH 的匪密码登录方式。

是设置网上多得稀,简单说一下:

先是在没设置不密码登陆的早晚,输入ssh 192.168.36.132
发现需要密码才会登陆。
脚对她进行设置不密码登录操作。

  • 输入指令“ssh-keygen –t rsa”(表示以rsa加密方法转变密钥),回车后,会提示三不成输入信息,我们直接回车就行
  • 然后输入指令“cd .ssh/”进入 /root/.ssh/id_rsa
    中,输入指令“cp id_rsa.pub authorized_keys”生成授权文件。

此时输入指令“ls”会发现变化的新文件已是。然后再输入ssh 192.168.36.132
发现不再要密码才能够登陆。

此外,如果频繁履ssh,每次都要输入确认消息的言辞,说明配置失败了。
得去文件夹“.ssh”,重新配置。也堪重开虚拟机再配备。只要严格依照上面的步调操作,保证能得逞的。
假设还将不肯定, 给你只高招删除/etc/udev/rules.d/70-persistent-net.rules
文件,重开系统”。配置出错,可以查看/var/log/secure 日志文件,找原因。

安装 jdk

夫就算不用说了吧,直接运行命令sudo apt-get install
openjdk-7-jdk,然后自己便安装好了,不过这种装置方式安装后底JAVA_HOME和一般的艺术不大一样,稍后再说。

装了后,运行java -version,如果结果类似于下图,就印证成功了。

安装 hadoop

出于新本子众多都无平静,所以自己选设置之版是1.1.2。

打开前面安装好的文件传输工具 WinSCP, 然后将公文 “hadoop-1.1.2.tar.gz”
传到 Linux 系统的/home/qhung/Public
目录下,其中qhung为你的用户称,之所以当Public
下面,我是以权限的题材,免得后面呢温馨打通坑,懒得去为权限问题。要是耐心够好之说话,也足以放在其他文件夹下面试试!哈哈!

脚要指向刚刚加进去的文书“hadoop-1.1.2.tar.gz”进行割除压缩,输入指令tar -zxvf hadoop-1.1.2.tar.gz即可。这时会新产生一个文件目录“hadoop-1.1.2”,然后输入指令“mv hadoop-1.1.2 hadoop”将其改名为
hadoop。

改配置文件

hadoop-1.1.2的言语,配置文件全部当conf目录下面,所以cd到conf目录。然后修改下面几乎单文本:

hadoop 环境变量脚本文件 hadoop-env.sh

直白用gedit或者用vi打开 hadoop-env.sh,然后设置 JAVA_HOME,
注意去丢前面的 “#”:

hadoop-env.sh

这边首先得找JAVA_HOME在哪,由于我们直接用命令执行安装之jdk,所以JAVA_HOME在/usr/lib/下面。

hadoop 核心配置文件 core-site.xml

直拿脚的布置复制进行就实施了

<configuration>
    <property>
        <name>fs.default.name</name>
            <value>hdfs://ubuntu:9000</value>
    </property>
    <property>
        <name>hadoop.tmp.dir</name>
            <value>/home/qhung/Public/temp</value>
    </property>
</configuration>

下一场保留退出。注意这里fs.default.name的value中的ubuntu是主机名,也得是IP地址(192.168.36.132),还有hadoop.tmp.dir,我设置的是/home/qhung/Public/temp,同样为是避权限问题。

hdfs 配置文件 hdfs-site.xml

<configuration>
    <property>
        <name>dfs.replication</name>
        <value>1</value>
    </property>
    <property>
        <name>dfs.permissions</name>
        <value>false</value>
    </property>
</configuration>

保留退出即可。

MapReduce 配置文件 mapred-site.xml

<configuration>
    <property>
        <name>mapred.job.tracker</name>
        <value>ubuntu:9001</value>
    </property>
</configuration>

此处的ubuntu也是主机名。

masters和slaves

就半个里头一直且填写ubuntu就实施。什么意思大家该还明白。

这样一来我们所需要配置的 4 个文本及此全部得。
下面就单单待格式化文件系统了。

格式化系统

hdfs 是文件系统,所以在首先赖采用前要开展格式化。首先执行命令
cd /home/qhung/Public/hadoop/bin”进入及 bin
目录下,然后执行命令“hadoop namenode –format”。

在意:只以第一糟糕开行的时刻格式化,不要老是启动都格式化。理解也咱
新打了片移动硬盘,使用前总要格式化硬盘。
比方确实有必不可少更格式化,请预把“$HADOOP_HOME/tmp”目录下之缓
起全副去。
读者可自己观察目录” $HADOOP_HOME/tmp” 在格式化前后的转变情况。
格式化操作特别少发起破产的气象。如果出现了,请检查部署是否正确。

起先系统

格式化完成后,开始起步 hadoop 程序。
开行 hadoop 的授命脚本还在$HADOOP_HOME/bin/下,下面的装有命令还
不再带有完整路径名称。

此讲述 hadoop 启动之老三种植艺术:

1、一次性全部起先。
执行命令“start-all.sh”启动 hadoop,观察控制台的输出,见图 2.38,可以
来看正在起步进程, 分别是 namenode、 datanode、 secondarynamenode、
jobtracker、
tasktracker,一共 5 个,待行了后,并无代表马上 5
独经过成功启动,上面
才意味着系统正在启动进程而已。(关闭 hadoop 的通令是 stop-all.sh)
上面的命是极简便的,可以一次性把持有节点都启动、关闭。除此之外,
尚闹任何命令,是各自启动的。

2、分别启动 HDFS 和 和 MapReduce

执行命令 start-dfs.sh,是单身启动 hdfs。

执 行 完 该 命 令 后 , 通 过 jps 能 够 看 到 NameNode 、 DataNode
、SecondaryNameNode 三个经过启动了,该令适合给才实行 hdfs
存储不下MapReduce 做计算的观。关闭的下令就是 stop-dfs.sh 了。

执行命令 start-mapred.sh, 可以独立启动 MapReduce 的少单过程。
执行了该令后, 通过jps 能够见到jobtracker、
tasktracker两单过程启动了。 关闭的命令就是 stop-mapred.sh

自,也足以先行启动MapReduce,再起步 HDFS。这证明,HDFS 和 MapReduce
之过程中是并行独立的,没有因关系。

**3、分别启动各个进程 **
行之通令是“hadoop-daemon.sh start [进程名称]”,这种启动方式符合为
独增加、删除节点的情事,在安装集群环境之时会盼。

一次性启动后还好透过浏览器来查看究竟启动没有。 在浏览器站分别输入
http://hadoop:50070 和
http://hadoop:50030
就会见可以拜了。同样,在 Windows 系统下也是可以看的。

运作成功后,用jps命令可以查过程启动景:

这次博客就记录及这,要是后面有时光来说,会持续记录几个eclipse开发,用hadoop运行的例证。
下篇博客是关于eclipse的map/reduce开发条件搭建,欢迎拍砖。