Win10上利用子系统搭建hadoop本地开发环境及常见问题解决

Win10上利用子系统搭建hadoop本地开发环境及常见问题解决

说明

满心鼓舞的准备学习hadoop,没想到困难重重,具体多坑?
Hadoop对微软如此不友好,
原本打算安装在docker上可以吧,一搜索,一个教程都没有,我???,
那装个虚拟机吧,配置限制了我的想象,
那搞个双系统吧,linux上又不能安装qq等必须软件,
虽然也可编译Hadoop源码为windows版本,但是hadoop那么多生态环境,难道我要每一个都编译?
你可能会将代码打包为jar包再发送到服务器上运行,但是这增加了大量的调试工作,而且浪费了大量时间。
我拿这windows能怎么办?甚至一度想换个黑苹果(忍住了)。

估计我大微软自己也发觉这样下去无法盈利,只能赶紧叫上兄弟Ubuntu来填坑。
本教程利用win10自带的Ubuntu子系统来配置Hadoop运行环境。

要求

系统:win10(只有win10可以安装子系统)

步骤

第一步:安装Ubuntu子系统

打开windows商店,搜索Ubuntu,找到后点击安装,等待安装完毕即可。
安装完成后,为了之后能加快部署速度,设置包源为阿里源

第二步:配置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

在配置完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中以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
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 201,468评论 5 473
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 84,620评论 2 377
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 148,427评论 0 334
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,160评论 1 272
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,197评论 5 363
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,334评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,775评论 3 393
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,444评论 0 256
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,628评论 1 295
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,459评论 2 317
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,508评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,210评论 3 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,767评论 3 303
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,850评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,076评论 1 258
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,627评论 2 348
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,196评论 2 341

推荐阅读更多精彩内容

  • 版权声明:本文为博主原创文章,未经博主允许不得转载。 目录-[-]1 先决条件2 实验环境搭建 21 准备工...
    三三At你阅读 821评论 0 3
  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 134,569评论 18 139
  • 文/胡晨川我是Linux外行,hadoop外行,java更外行,Scala听也没听过,在我脑海中,Spark一直只...
    老树之见阅读 5,824评论 3 39
  • 卖衣服萝莉控的事情
    聊天了吗阅读 165评论 0 0
  • 夏日的夜,果然是最漫长的。 即使是眼皮沉重的我,依然不愿睡去。 夜已经等我许久,我却迟迟不愿入睡 我不知,自己所在...
    bufans阅读 210评论 0 1