Hadoop安装搭建伪分布式教程(全面)吐血整理
博主使用的是VMware Workstation 16 Pro,这个的安装教程很多,大家可以自行搜索安装。
官网:https://www.vmware.com/cn/products/workstation-pro.html
Ubuntu一般使用18或者16版本,20版本有些未知的问题。
打开ubuntu18.04.1的下载地址:https://www.ubuntu.com/download/desktop,进入页面后点击右边的Download按钮开始下载。
1.右上角点击新建虚拟机

2.默认
3.选择自己安装镜像文件的位置
4.这里自己设置账户和密码
5.选择虚拟机的位置,博主放在了D盘
6.这个的配置比较高了,也可以使用默认的4核
7.按照建议内存,之后就一直下一步
8.这里的磁盘大小默认为20G,根据自己需要选择大小。将虚拟磁盘储存为单个文件
然后一直下一步,就能等它跑进度条了。
前两个都是开胃小菜,这才是正题。
1.按 Ctrl + Alt + T,即可进入命令行模式。
2.输入以下语句,创建一个名为hadoop的用户,useradd命令的-m用来指定用户名,-s用来指定用户登录时所需的shell文件:
sudo useradd -m hadoop -s /bin/bash
3.由于部门权限规定或安全限制,负责部署hadoop的管理员没有linux root权限,但按照最佳做法,安装时有一些操作需要以root用户身份执行。以下给予该用户root权限:
sudo adduser hadoop sudo
如果在安装Ubuntu时用户名使用的是hadoop,这两步不需要。
1.由于ubuntu系统刚完成安装,需要更新相关一些软件,确保接下来的操作可以正常完成:
sudo apt-get update
如果这条命令执行速度很慢,请使用下面的方法(虽然一般很快)
参考https://blog.csdn.net/m0_37601622/article/details/82968780
如果发现更新速度过慢,或者更新时反复跳出连接超时的提示,则可以将源文件链接地址替换为国内镜像文件从而提高更新速度。首先先利用cp命令备份当前系统的源文件,其中第一个参数时拷贝的文件路径和文件名称,第二个是拷贝到的文件路径和文件名:
sudo cp /etc/apt/sources.list /etc/apt/sources.bak1
打开需要更新的源文件:
sudo gedit /etc/apt/sources.list
将文件内的内容替换成其他源文件:
如清华源:参考https://mirrors.tuna.tsinghua.edu.cn/help/ubuntu/
完成后保存,重新运行更新命令:
sudo apt-get update
sudo apt-get upgrade
2.上述更新完成后:
部分linux系统会自带vim编辑器,但若在终端无法启动该编辑器,则需要安装以待后续编辑配置文件,接下来跳出的提示回复Y即可:
sudo apt-get install vim
根据Hadoop分布式系统的特性,在任务计划分发、心跳监测、任务管理、多租户管理等功能上,需要通过SSH(Secure Shell)进行通讯,所以必须安装配置SSH。另因为Hadoop没有提供SSH输入密码登录的形式,因此需要将所有机器配置为NameNode可以无密码登录的状态。
1.首先安装SSH server(之所以不需要安装SSH client是因为ubuntu已经默认安装了):
sudo apt-get install openssh-server
2.完成后连接本地SSH
ssh localhost
按提示输入yes,再输入hadoop用户的密码,完成登录。
1.以下进行无密码登录的设置,首先先退出刚刚ssh localhost的连接:
exit
2.然后进入SSH对应目录下,该目录包含了几乎所有当前用户SSH配置认证相关的文件:
cd ~/.ssh/
3.输入生成SSH私钥与公钥的命令,-t用于声明密钥的加密类型,输入Hadoop密码。这一步会提醒设置SSH密码,输入密码时直接回车就表示无密码,第二次输入密码回车确定,最后一次提交:
ssh-keygen -t rsa
4.将生成的SSH的公钥加入目标机器的SSH目录下,这里采用cat命令与>>,cat file1>>file2的含义为将file1内容append到file2中。
cat ./id_rsa.pub >> ./authorized_keys
Hadoop和与之相关的很多工具都是通过java语言编写的,并且很多基于hadoop的应用开发也是使用java语言的,但是ubuntu系统不会默认安装java环境,所以需要安装java并配置环境变量。以下安装下载java的jdk、jre:
sudo apt-get install default-jre default-jdk
1.通过vim编辑器打开环境变量的设置文件:
sudo vim ~/.bashrc
2.在文件的尾部加上以下语句:
export JAVA_HOME=/usr/lib/jvm/default-java
export HADOOP_HOME=/usr/local/hadoop
export PATH=$HADOOP_HOME/bin:$HADOOP_HOME/sbin:$PATH
在这一步在我的虚拟机中直接复制时会出现第一句的export只剩rt两个字母,必须要手动输入export。
3.按Esc键退出,然后输入:wq保存修改。然后使环境变量生效:
source ~/.bashrc
1.在虚拟机内的火狐浏览器中输入https://archive.apache.org/dist/hadoop/common/hadoop-2.9.2/,下载hadoop应用,默认保存至downloads文件夹下。选择已编译好的版本hadoop-2.9.2.tar.gz,因为该版本可以直接解压使用,更为方便。
2. 进入解压包存放的Downloads文件夹,右键属性查看压缩包的绝对路径,然后解压至/usr/local目录下:
sudo tar -zxf /home/hadoop/Downloads/hadoop-2.9.2.tar.gz -C /usr/local
3.进入刚刚解压后存放的目录下:
cd /usr/local/
4.将该文件夹的名字重命名为hadoop,屏蔽掉版本号的信息,使得后续命令行输入更为简便:
sudo mv ./hadoop-2.9.2/ ./hadoop
1.将已重命名的该文件夹的拥有者,指定给用户hadoop,缺少这一步,将导致后续操作特别是运行Hadoop时,反复因权限不足而停止:
sudo chown -R hadoop ./hadoop
2.经后续测试发现问题,虽然已经为ubuntu系统设置了java的环境变量,但hadoop实际运行时仍会出现找不到java-jdk的现象,故再对hadoop的环境文件进行修改,此外,该文件还包括启动参数、日志、pid文件目录等信息。先进入目录:
cd ./hadoop/etc/hadoop
3.使用vim编辑器,打开环境变量文件:
sudo vim hadoop-env.sh
4.添加该语句(这里也需要手动输入export):
export JAVA_HOME=/usr/lib/jvm/default-java
5.按Esc键退出,然后输入:wq保存修改。然后使环境变量生效:
source hadoop-env.sh
6.截至目前,hadoop框架已经搭建好了,可以通过调用版本号进行测试hadoop是否可用
cd /usr/local/hadoop
./bin/hadoop version
正确搭建应该能看到hadoop的版本号等信息:

从字面上,很好理解伪分布式的含义,对于Hadoop而言,可以在单节点上以伪分布式的方式运行,Hadoop 进程以分离的 Java 进程来运行,节点既作为 NameNode 也作为 DataNode。设置Hadoop参数的主要方式是配置一系列由Hadoop守护进程和客户端读取的配置文件,如之前提及的hadoop-env.sh,还包括core-site.xml、hdfs-site.xml、mapred-site.xml、log4j.properties、taskcontroller.cfg等,伪分布式需要修改四个文件,修改的顺序没有特殊要求,以下进行逐一介绍。
此时需要在hadoop文件夹下的hadoop文件中
绝对路径是cd /usr/local/hadoop/etc/hadoop
1.先打开xml文件,注意./表示当前文件夹下,当前应该在第二个hadoop文件夹下cd ./etc/hadoop/。
sudo gedit core-site.xml
2.打开xml文件应该是有内容的,如果没有内容说明打开文件不对,需要检查输入的路径及文件名是否正确。将替换为以下内容,第一个属性表示Hadoop重要临时文件的存放目录,指定后需将使用到的所有子级文件夹都要手动创建出来,否则无法正常启动服务;第二个被官方称之为默认系统文件的名称(the name of the default file system),实际上决定了文件系统的主机号、端口号,对于伪分布式模型来说,其主机地址为localhost。
<configuration>
<property>
<name>hadoop.tmp.dir</name>
<value>file:/usr/local/hadoop/tmp</value>
<description>Abase for other temporary directories.</description>
</property>
<property>
<name>fs.defaultFS</name>
<value>hdfs://localhost:9000</value>
</property>
</configuration>
1.同样进入hdfs-site.xml文件:
sudo gedit hdfs-site.xml
2.对hdfs-site.xml进行同样的替换操作,属性的含义分别为复制的块的数量、DFS管理节点的本地存储路径、DFS数据节点的本地存储路径:
<configuration>
<property>
<name>dfs.replication</name>
<value>1</value>
</property>
<property>
<name>dfs.namenode.name.dir</name>
<value>file:/usr/local/hadoop/tmp/dfs/name</value>
</property>
<property>
<name>dfs.datanode.data.dir</name>
<value>file:/usr/local/hadoop/tmp/dfs/data</value>
</property>
</configuration>
1.Hadoop2.X并没有像1.X提供mapred-site.xml文件,需要将样本文件复制为可使用的配置文件:
mv mapred-site.xml.template mapred-site.xml
2.同样打开
sudo gedit mapred-site.xml
3.这里使用yarn。yarn 是一种资源管理和作业调度技术,作为Hadoop 的核心组件之一,负责将系统资源分配给在 Hadoop 集群中运行的各种应用程序,并调度要在不同集群节点上执行的任务,其基本思想是将资源管理和作业调度/监视的功能分解为单独的 daemon,总体上yarn是 master/slave 结构,在整个资源管理框架中,ResourceManager 为 master,NodeManager 是 slaver。具体配置内容如下:
<configuration>
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
</configuration>
1.打开
sudo gedit yarn -site.xml
2.然后配置yarn-site.xml文件,这里修改NodeManager上运行的附属服务即可:
<configuration>
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
</configuration>
1.为了保险起见,执行这一步前关闭命令行模式,重新打开,放弃当前路径。
更改配置并保存后,格式化HDFS的NameNode,在这一步之前,如果hdfs-site.xml中dfs.namenode.name.dir属性指定的目录不存在,格式化命令会自动创建之;如果存在,请确保其权限设置正确,此时格式操作会清除其内部所有的数据并重新建立一个新的文件系统:
/usr/local/hadoop/bin/hdfs namenode -format
显示信息内若包含以下内容,则说明成功格式化:

2.然后启动全部进程:
start-all.sh
3.成功启动后,可以通过web浏览器访问http://localhost:50070,可以看到如下界面:

4.输入jps查看到六个进程,如果缺少某进程需要查询解决方法:

5.在HDFS中创建用户目录:
hdfs dfs -mkdir -p /user/hadoop
6.创建input目录,用于输入数据:
hdfs dfs -mkdir input
7.将所需的xml配置文件复制到input中:
(需要注意路径)
hdfs dfs -put usr/local/hadoop/etc/hadoop/*.xml input
8.如果系统之前运行过hadoop,则需要删除output目录:
hdfs dfs -rm -r output
这几步会出现很多的warning,不用在意。
1.运行实例,需要先进入hadoop的文件夹下
cd /usr/local/hadoop
2.输入
hadoop jar ./share/hadoop/mapreduce/hadoop-mapreduce-examples-*.jar wordcount input output
要等一会,结果如下图

3.然后进入hadoop下面的bin
cd /usr/local/hadoop/bin
4.查看运行结果
hdfs dfs –ls ./output
hdfs dfs -cat output/*

到这里,整个安装过程就结束了。第一次这么认真写CSDN,完全是因为装这个伪分布式实在太痛苦了。会遇到很多没法解决的问题,我基本重装了虚拟机6遍,整个花时间十几个小时,吐血。
我想为Heroku构建一个Rails3应用程序。他们使用Postgres作为他们的数据库,所以我通过MacPorts安装了postgres9.0。现在我需要一个postgresgem并且共识是出于性能原因你想要pggem。但是我对我得到的错误感到非常困惑当我尝试在rvm下通过geminstall安装pg时。我已经非常明确地指定了所有postgres目录的位置可以找到但仍然无法完成安装:$envARCHFLAGS='-archx86_64'geminstallpg--\--with-pg-config=/opt/local/var/db/postgresql90/defaultdb/po
我打算为ruby脚本创建一个安装程序,但我希望能够确保机器安装了RVM。有没有一种方法可以完全离线安装RVM并且不引人注目(通过不引人注目,就像创建一个可以做所有事情的脚本而不是要求用户向他们的bash_profile或bashrc添加一些东西)我不是要脚本本身,只是一个关于如何走这条路的快速指针(如果可能的话)。我们还研究了这个很有帮助的问题:RVM-isthereawayforsimpleofflineinstall?但有点误导,因为答案只向我们展示了如何离线在RVM中安装ruby。我们需要能够离线安装RVM本身,并查看脚本https://raw.github.com/wayn
我有一个奇怪的问题:我在rvm上安装了rubyonrails。一切正常,我可以创建项目。但是在我输入“railsnew”时重新启动后,我有“程序'rails'当前未安装。”。SystemUbuntu12.04ruby-v"1.9.3p194"gemlistactionmailer(3.2.5)actionpack(3.2.5)activemodel(3.2.5)activerecord(3.2.5)activeresource(3.2.5)activesupport(3.2.5)arel(3.0.2)builder(3.0.0)bundler(1.1.4)coffee-rails(
我刚刚为fedora安装了emacs。我想用emacs编写ruby。为ruby提供代码提示、代码完成类型功能所需的工具、扩展是什么? 最佳答案 ruby-mode已经包含在Emacs23之后的版本中。不过,它也可以通过ELPA获得。您可能感兴趣的其他一些事情是集成RVM、feature-mode(Cucumber)、rspec-mode、ruby-electric、inf-ruby、rinari(用于Rails)等。这是我当前用于Ruby开发的Emacs配置:https://github.com/citizen428/emacs
我正在尝试在我的centos服务器上安装therubyracer,但遇到了麻烦。$geminstalltherubyracerBuildingnativeextensions.Thiscouldtakeawhile...ERROR:Errorinstallingtherubyracer:ERROR:Failedtobuildgemnativeextension./usr/local/rvm/rubies/ruby-1.9.3-p125/bin/rubyextconf.rbcheckingformain()in-lpthread...yescheckingforv8.h...no***e
我的最终目标是安装当前版本的RubyonRails。我在OSXMountainLion上运行。到目前为止,这是我的过程:已安装的RVM$\curl-Lhttps://get.rvm.io|bash-sstable检查已知(我假设已批准)安装$rvmlistknown我看到当前的稳定版本可用[ruby-]2.0.0[-p247]输入命令安装$rvminstall2.0.0-p247注意:我也试过这些安装命令$rvminstallruby-2.0.0-p247$rvminstallruby=2.0.0-p247我很快就无处可去了。结果:$rvminstall2.0.0-p247Search
我实际上是在尝试使用RVM在我的OSX10.7.5上更新ruby,并在输入以下命令后:rvminstallruby我得到了以下回复:Searchingforbinaryrubies,thismighttakesometime.Checkingrequirementsforosx.Installingrequirementsforosx.Updatingsystem.......Errorrunning'requirements_osx_brew_update_systemruby-2.0.0-p247',pleaseread/Users/username/.rvm/log/138121
由于fast-stemmer的问题,我很难安装我想要的任何rubygem。我把我得到的错误放在下面。Buildingnativeextensions.Thiscouldtakeawhile...ERROR:Errorinstallingfast-stemmer:ERROR:Failedtobuildgemnativeextension./System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/bin/rubyextconf.rbcreatingMakefilemake"DESTDIR="cleanmake"DESTDIR=
当我尝试安装Ruby时遇到此错误。我试过查看this和this但无济于事➜~brewinstallrubyWarning:YouareusingOSX10.12.Wedonotprovidesupportforthispre-releaseversion.Youmayencounterbuildfailuresorotherbreakages.Pleasecreatepull-requestsinsteadoffilingissues.==>Installingdependenciesforruby:readline,libyaml,makedepend==>Installingrub
当我执行>rvminstall1.9.2时一切顺利。然后我做>rvmuse1.9.2也很顺利。但是当涉及到ruby-v时..sam@sjones:~$rvminstall1.9.2/home/sam/.rvm/rubies/ruby-1.9.2-p136,thismaytakeawhiledependingonyourcpu(s)...ruby-1.9.2-p136-#fetchingruby-1.9.2-p136-#downloadingruby-1.9.2-p136,thismaytakeawhiledependingonyourconnection...%Total%Rece