草庐IT

VMware在hadoop用户下创建hadoop

什么都不会的计算机专业学生 2023-08-03 原文

目录

1.1创建Hadoop 用户(简单)​

1.2 安装 Hadoop 前的准备工作(如果网络没问题就很简单)

1.2.1 更新 APT

 1.2.2 安装vim编辑器

 1.2.3安装 SSH

1.3 安装 Java 环境

1.4 安装Hadoop

1.4.1 安装单机Hadoop

1.4.2Hadoop伪分布式安装

1.4.2.1修改配置文件

1.4.2.2初始化文件系统

1.4.2.3启动Hadoop

1.4.2.4使用Web界面查看HDFS信息

1.4.2.5运行Hadoop伪分布式实例

1.4.2.6关闭Hadoop

1.4.2.7配置PATH变量(便于执行命令,可略)


1.1创建Hadoop 用户(简单)

 

1.2 安装 Hadoop 前的准备工作(如果网络没问题就很简单)

1.2.1 更新 APT

需要输入登录hadoop账户的密码,1.1中设置的

 1.2.2 安装vim编辑器

 1.2.3安装 SSH

 $ sudo apt-get install openssh-server     #安装SSH服务端

安装后,可以使用如下命令登录本机

 $ ssh localhost     #登录需要密码,exit退出登录

免密登录:利用ssh-keygen生成密钥,并将密钥加入到授权中,命令如下:

$exit
$ cd ~/.ssh/        # 若没有该目录,请先执行一次ssh localhost
$ ssh-keygen -t rsa    # 会有提示,都按回车即可(:后边都敲回车)
$ cat ./id_rsa.pub >> ./authorized_keys  # 加入授权

此时,再执行ssh localhost命令,无需输入密码就可以直接登录了。

1.3 安装 Java 环境

执行如下命令创建/usr/lib/jvm目录用来存放JDK文件

$ cd /usr/lib
$ sudo mkdir jvm #创建/usr/lib/jvm目录用来存放JDK文件

执行如下命令对安装文件进行解压缩:(提前设置好共享文件夹或者设置双向粘贴,直接把压缩包粘到Ubuntu中)
我也有总结---原文链接:https://blog.csdn.net/m0_59865073/article/details/128192013

$ cd ~       #进入stu用户的主目录  
$ cd Downloads   #切换到压缩包所在目录
$ sudo tar -zxvf  ./jdk-8u162-linux-x64.tar.gz  -C  /usr/lib/jvm
以上两步操作的代码运行截图:(挂载共享文件夹) 

下面继续执行如下命令,设置环境变量

$ vim ~/.bashrc  
如果vim使用不熟悉,同学们可以使用gedit

上面命令使用vim编辑器打开了hadoop这个用户的环境变量配置文件,请在这个文件的末尾位置添加如下几行内容:

export JAVA_HOME=/usr/lib/jvm/jdk1.8.0_162  
export JRE_HOME=${JAVA_HOME}/jre  
export CLASSPATH=.:${JAVA_HOME}/lib:${JRE_HOME}/lib  
export PATH=${JAVA_HOME}/bin:$PATH


退出vim编辑器。然后,继续执行如下命令让.bashrc文件的配置立即生效:

$ source ~/.bashrc
这时,可以使用如下命令查看是否安装成功:

$ java -version
如果能够在屏幕上返回如下信息,则说明安装成功:(若报错,就查看配置文件内容

java version "1.8.0_162"
Java(TM) SE Runtime Environment (build 1.8.0_162-b12)
Java HotSpot(TM) 64-Bit Server VM (build 25.162-b12, mixed mode)  

以上几步代码运行截图:

 至此,就成功安装了Java环境。下面就可以进入Hadoop的安装。 

1.4 安装Hadoop

1.4.1 安装单机Hadoop

打开一个终端,执行如下命令:(虚线以上笼统,以下具体)

$ cd  ~/Downloads     # 进入下载目录
$ wget -c http://res.aihyzh.com/大数据技术原理与应用3/02/hadoop-3.1.3.tar.gz #下载资源
$ sudo tar -zxf ~/Downloads/hadoop-3.1.3.tar.gz -C /usr/local   # 解压到/usr/local中
-----------------------------------------------------------------------------------------
$ sudo tar -zxf */hadoop-3.1.3.tar.gz -C /usr/local      #将共享文件夹里的压缩包解压到、usr/local中
$ cd /usr/local/
$ sudo mv ./hadoop-3.1.3/ ./hadoop      # 将文件夹名重命名为hadoop(./表示当前路径下的)
$ sudo chown -R stu:stu ./hadoop       # 授权:修改文件权限(-R 递归处理,对指定目录下的所有文件及子目录一并进行处理)

 (当前时hadoop用户,所以将hadoop权限授予文件夹)

Hadoop解压后即可使用,可以输入如下命令来检查 Hadoop是否可用,成功则会显示 Hadoop版本信息:

$ ./bin/hadoop version          #查看版本信息

1.4.2Hadoop伪分布式安装

1.4.2.1修改配置文件

需要配置相关文件,才能够让Hadoop在伪分布式模式下顺利运行。Hadoop的配置文件位于/usr/local/hadoop/etc/hadoop/中,进行伪分布式模式配置时,需要修改3个配置文件,即hadoop-env.sh,core-site.xml和hdfs-site.xml。

可以使用vim编辑器打开hadoop-env.sh文件,进行修改JAVA_HOME配置,添加一行代码:

export JAVA_HOME=/usr/lib/jvm/jdk1.8.0_162

可以使用vim编辑器或者文本编辑器打开core-site.xml文件,修改以后,core-site.xml文件的内容如下:
在core-site.xml文件中,hadoop.tmp.dir用于保存临时文件,若没有配置hadoop.tmp.dir这个参数,则默认使用的临时目录为/tmp/hadoo-hadoop,而这个目录在Hadoop重启时有可能被系统清理掉,导致一些意想不到的问题,因此,必须配置这个参数。fs.defaultFS这个参数,用于指定HDFS的访问地址,其中,9000是端口号。

 

同样,需要修改配置文件hdfs-site.xml,修改后内容如下:


在hdfs-site.xml文件中,dfs.replication这个参数用于指定副本的数量,因为,在分布式文件系统HDFS中,数据会被冗余存储多份,以保证可靠性和可用性。但是,由于这里采用伪分布式模式,只有一个节点,因此,只可能有1个副本,因此,设置dfs.replication的值为1。dfs.namenode.name.dir用于设定名称节点的元数据的保存目录,dfs.datanode.data.dir用于设定数据节点的数据保存目录,这两个参数必须设定,否则后面会出错。 

1.4.2.2初始化文件系统

修改配置文件以后,要执行名称节点的格式化,命令如下:

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

 如果格式化成功,会看到successfully formatted

1.4.2.3启动Hadoop

$ cd /usr/local/hadoop
$ ./sbin/start-dfs.sh  #start-dfs.sh是个完整的可执行文件,中间没有空格

Hadoop启动完成后,可以通过命令 jps 来判断是否成功启动,命令如下:

$ jps
若成功启动,则会列出如下进程:NameNode、DataNode和SecondaryNameNode。

如果看不到SecondaryNameNode进程,请运行命令./sbin/stop-dfs.sh关闭Hadoop相关进程,然后,再次尝试启动。如果看不到NameNode或DataNode进程,则表示配置不成功,请仔细检查之前步骤,或通过查看启动日志排查原因。如果少线程,先关闭集群stop-dfs.sh;然后删除tmp,再重新格式化!!!!!

1.4.2.4使用Web界面查看HDFS信息

Hadoop成功启动后,可以在Linux系统中(不是Windows系统)打开一个浏览器,在地址栏输入地址http://localhost:9870,就可以查看名称节点和数据节点信息,还可以在线查看 HDFS 中的文件。

hadoop3.X的Web UI端口为:9870

hadoop2.X的Web UI端口为:50070

旧版本与新版本之间端口号有不一致的地方,但Ubuntu18.0.4是如图所示:

1.4.2.5运行Hadoop伪分布式实例

单机模式中,grep例子读取的是本地数据,但在伪分布式模式下,读取的则是分布式文件系统HDFS上的数据。要使用HDFS,首先需要在HDFS创建用户目录,命令如下:

$ cd /usr/local/hadoop
$ ./bin/hdfs dfs -mkdir -p /user/hadoop
然后把复制本地文件到HDFS中,命令如下:

$ cd /usr/local/hadoop
$ ./bin/hdfs dfs -mkdir /input  #在HDFS中创建hadoop用户对应的input目录
$ ./bin/hdfs dfs -put ./etc/hadoop/*.xml input  #把本地文件复制到HDFS中


复制完成后,可以通过如下命令查看HDFS中的文件列表: 

$ ./bin/hdfs dfs -ls input
执行上述命令以后,可以看到input目录下的文件信息。

现在就可以运行Hadoop自带的grep程序,命令如下:

$ ./bin/hadoop 
jar 
./share/hadoop/mapreduce/hadoop-mapreduce-examples-3.1.3.jar 
grep input output 'dfs[a-z.]+'
运行结束后,可以通过如下命令查看HDFS中的output文件夹中的内容:

 grep十分重要:

$ ./bin/hdfs dfs -cat output/*

 需要强调的是,Hadoop运行程序时,输出目录不能存在,否则会提示错误信息: 

因此,若要再次执行grep程序,需要执行如下命令删除HDFS中的output文件夹:

$ ./bin/hdfs dfs -rm -r output    # 删除 output 文件夹

1.4.2.6关闭Hadoop

如果要关闭Hadoop,可以执行下面命令:

$ cd /usr/local/hadoop
$ ./sbin/stop-dfs.sh


下次启动Hadoop时,无需进行名称节点的初始化(否则会出错),也就是说,不要再次执行hdfs namenode -format命令,每次启动Hadoop只需要直接运行./sbin/start-dfs.sh命令即可。

1.4.2.7配置PATH变量(便于执行命令,可略)

前面在启动Hadoop时,都要加上命令的路径,比如,./sbin/start-dfs.sh这个命令中就带上了路径,实际上,通过设置path变量,就可以在执行命令时,不用带上命令本身所在的路径。

比如,我们打开一个Linux终端,在任何一个目录下执行ls命令时,都没有带上ls命令的路径,实际上,执行ls命令时,是执行/bin/ls这个程序,之所以不需要带上路径,是因为Linux系统已经把ls命令的路径加入到PATH变量中,当执行ls命令时,系统是根据 PATH 这个环境变量中包含的目录位置,逐一进行查找,直至在这些目录位置下找到匹配的ls程序(若没有匹配的程序,则系统会提示该命令不存在)。

知道了这个原理以后,我们同样可以把start-dfs.sh、stop-dfs.sh等命令所在的目录/usr/local/hadoop/sbin,加入到环境变量PATH中,这样,以后在任何目录下都可以直接使用命令start-dfs.sh启动Hadoop,不用带上命令路径。

具体操作方法是,首先使用vim编辑器打开~/.bashrc这个文件,然后,在这个文件的最前面位置加入如下单独一行:

export PATH=$PATH:/usr/local/hadoop/sbin
在后面的学习过程中,如果要继续把其他命令的路径也加入到PATH变量中,也需要继续修改~/.bashrc这个文件。当后面要继续加入新的路径时,只要用英文冒号“:”隔开,把新的路径加到后面即可,比如,如果要继续把/usr/local/hadoop/bin路径增加到PATH中,只要继续追加到后面,如下所示:

export PATH=$PATH:/usr/local/hadoop/sbin:/usr/local/hadoop/bin  
添加后,执行命令source ~/.bashrc使设置生效。设置生效后,在任何目录下启动Hadoop,都只要直接输入start-dfs.sh命令即可,同理,停止Hadoop,也只需要在任何目录下输入stop-dfs.sh命令即可。

原文链接:https://blog.csdn.net/m0_59865073/article/details/128175855

 

 

有关VMware在hadoop用户下创建hadoop的更多相关文章

  1. ruby - 如何在 Ruby 中顺序创建 PI - 2

    出于纯粹的兴趣,我很好奇如何按顺序创建PI,而不是在过程结果之后生成数字,而是让数字在过程本身生成时显示。如果是这种情况,那么数字可以自行产生,我可以对以前看到的数字实现垃圾收集,从而创建一个无限系列。结果只是在Pi系列之后每秒生成一个数字。这是我通过互联网筛选的结果:这是流行的计算机友好算法,类机器算法:defarccot(x,unity)xpow=unity/xn=1sign=1sum=0loopdoterm=xpow/nbreakifterm==0sum+=sign*(xpow/n)xpow/=x*xn+=2sign=-signendsumenddefcalc_pi(digits

  2. python - 如何使用 Ruby 或 Python 创建一系列高音调和低音调的蜂鸣声? - 2

    关闭。这个问题是opinion-based.它目前不接受答案。想要改进这个问题?更新问题,以便editingthispost可以用事实和引用来回答它.关闭4年前。Improvethisquestion我想在固定时间创建一系列低音和高音调的哔哔声。例如:在150毫秒时发出高音调的蜂鸣声在151毫秒时发出低音调的蜂鸣声200毫秒时发出低音调的蜂鸣声250毫秒的高音调蜂鸣声有没有办法在Ruby或Python中做到这一点?我真的不在乎输出编码是什么(.wav、.mp3、.ogg等等),但我确实想创建一个输出文件。

  3. ruby - 使用 Vim Rails,您可以创建一个新的迁移文件并一次性打开它吗? - 2

    使用带有Rails插件的vim,您可以创建一个迁移文件,然后一次性打开该文件吗?textmate也可以这样吗? 最佳答案 你可以使用rails.vim然后做类似的事情::Rgeneratemigratonadd_foo_to_bar插件将打开迁移生成的文件,这正是您想要的。我不能代表textmate。 关于ruby-使用VimRails,您可以创建一个新的迁移文件并一次性打开它吗?,我们在StackOverflow上找到一个类似的问题: https://sta

  4. ruby-on-rails - 无法使用 Rails 3.2 创建插件? - 2

    我对最新版本的Rails有疑问。我创建了一个新应用程序(railsnewMyProject),但我没有脚本/生成,只有脚本/rails,当我输入ruby./script/railsgeneratepluginmy_plugin"Couldnotfindgeneratorplugin.".你知道如何生成插件模板吗?没有这个命令可以创建插件吗?PS:我正在使用Rails3.2.1和ruby​​1.8.7[universal-darwin11.0] 最佳答案 随着Rails3.2.0的发布,插件生成器已经被移除。查看变更日志here.现在

  5. ruby - 如何使用 RSpec::Core::RakeTask 创建 RSpec Rake 任务? - 2

    如何使用RSpec::Core::RakeTask初始化RSpecRake任务?require'rspec/core/rake_task'RSpec::Core::RakeTask.newdo|t|#whatdoIputinhere?endInitialize函数记录在http://rubydoc.info/github/rspec/rspec-core/RSpec/Core/RakeTask#initialize-instance_method没有很好的记录;它只是说:-(RakeTask)initialize(*args,&task_block)AnewinstanceofRake

  6. ruby-on-rails - 使用 rails 4 设计而不更新用户 - 2

    我将应用程序升级到Rails4,一切正常。我可以登录并转到我的编辑页面。也更新了观点。使用标准View时,用户会更新。但是当我添加例如字段:name时,它​​不会在表单中更新。使用devise3.1.1和gem'protected_attributes'我需要在设备或数据库上运行某种更新命令吗?我也搜索过这个地方,找到了许多不同的解决方案,但没有一个会更新我的用户字段。我没有添加任何自定义字段。 最佳答案 如果您想允许额外的参数,您可以在ApplicationController中使用beforefilter,因为Rails4将参数

  7. ruby - 为什么 SecureRandom.uuid 创建一个唯一的字符串? - 2

    关闭。这个问题需要detailsorclarity.它目前不接受答案。想改进这个问题吗?通过editingthispost添加细节并澄清问题.关闭8年前。Improvethisquestion为什么SecureRandom.uuid创建一个唯一的字符串?SecureRandom.uuid#=>"35cb4e30-54e1-49f9-b5ce-4134799eb2c0"SecureRandom.uuid方法创建的字符串从不重复?

  8. ruby - 有人可以帮助解释类创建的 post_initialize 回调吗 (Sandi Metz) - 2

    我正在阅读SandiMetz的POODR,并且遇到了一个我不太了解的编码原则。这是代码:classBicycleattr_reader:size,:chain,:tire_sizedefinitialize(args={})@size=args[:size]||1@chain=args[:chain]||2@tire_size=args[:tire_size]||3post_initialize(args)endendclassMountainBike此代码将为其各自的属性输出1,2,3,4,5。我不明白的是查找方法。当一辆山地自行车被实例化时,因为它没有自己的initialize方法

  9. ruby - 使用多个数组创建计数 - 2

    我正在尝试按0-9和a-z的顺序创建数字和字母列表。我有一组值value_array=['0','1','2','3','4','5','6','7','8','9','a','b','光盘','e','f','g','h','i','j','k','l','m','n','o','p','q','r','s','','u','v','w','x','y','z']和一个组合列表的数组,按顺序,这些数字可以产生x个字符,比方说三个list_array=[]和一个当前字母和数字组合的数组(在将它插入列表数组之前我会把它变成一个字符串,]current_combo['0','0','0']

  10. ruby-on-rails - 简单的 Ruby on Rails 问题——如何将评论附加到用户和文章? - 2

    我意识到这可能是一个非常基本的问题,但我现在已经花了几天时间回过头来解决这个问题,但出于某种原因,Google就是没有帮助我。(我认为部分问题在于我是一个初学者,我不知道该问什么......)我也看过O'Reilly的RubyCookbook和RailsAPI,但我仍然停留在这个问题上.我找到了一些关于多态关系的信息,但它似乎不是我需要的(尽管如果我错了请告诉我)。我正在尝试调整MichaelHartl'stutorial创建一个包含用户、文章和评论的博客应用程序(不使用脚手架)。我希望评论既属于用户又属于文章。我的主要问题是:我不知道如何将当前文章的ID放入评论Controller。

随机推荐