Hadoop2.6.0(cloudera CDH)安装教程

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接: https://blog.csdn.net/qq_33588730/article/details/81123614

第一步是安装JDK,我用的方法比较简单不需要麻烦的配置环境变量等步骤,直接通过第三方的JDK安装包自动装好,命令如下:

sudo add-apt-repository ppa:webupd8team/java
sudo apt-get update
sudo apt-get install oracle-java8-installer

第一条命令是添加PPA软件源,第二条命令是更新软件源信息,第三条是真正的安装命令。执行完上面三条命令以后,再执行下面三条命令,测试一下,安装是否成功:

java -version
java
javac

至此,JDK安装完毕。

在上一步中安装好JDK后,JAVA_HOME等环境变量会自动配置好,可以用echo $JAVA_HOME命令来找到环境变量的值,如下所示:

第二步是去以下网址下载cloudera公司的CDH版Hadoop,因为Apache官网上的Hadoop版本比较混乱,安装配置较复杂而且部分版本无法商用化,cloudera的Hadoop发行版安装配置更便捷,采用了稳定的Hadoop可商用版本2.6.0,不少公司用的也是这个版本,并且集成了一些常用组件例如Hbase、Spark等:

https://archive.cloudera.com/cdh5/cdh/5/

进入该网址后,会发现大量的下载链接,使用Ctrl+F快捷键查找hadoop字样,就可以找到最新版,并下载tar.gz压缩包,如下所示:

下载完成之后,我使用sudo tar -zvxf hadoop-2.6.0-cdh5.15.0 -C /opt命令将CDH解压在/opt目录下,这个目录通常用来放自己装的第三方软件。使用sudo是因为该目录需要超级用户权限。当然也可以放在自己想放的其他目录。

为了可以在命令行直接使用hadoop相关命令,而不是每次都要先进入Hadoop所在目录才能使用命令,可以用sudo vim /etc/profile命令编辑/etc/profile文件,打开vim编辑器之后,按i键可以进入编辑模式,界面下方会出现“INSERT”字样提示可以插入字符,然后在开头加上三条添加环境变量的代码:

输入三个export指令之后,按ESC键回到只读模式,“INSERT”字样消失,然后按shift+冒号键,在下方冒号后面输入“wq”(write and quit)后保存退出vim,如下所示:

在命令行输入source /etc/profile,再cd到/opt/hadoop-2.6.0-cdh5.15.0目录下。输入./bin/hadoop version,显示输出的hadoop版本为Hadoop 2.6.0-cdh5.15.0,这样Hadoop就装好了,如下所示:

为了以后能以伪分布式和全分布式使用Hadoop,会需要用到ssh来进行远程登录,所以再将ssh配置一下,Ubuntu默认安装了ssh client,还需要安装一个ssh server,使用sudo apt install openssh-server安装。安装完成后,用ssh localhost命令远程登录本机,会需要输入密码,输入密码后登录成功,再输入exit可以退出远程登录,如下所示:

第一次用ssh登录之后,会在“/home/用户名”这个目录下生成一个隐藏目录.ssh,在文件管理器下按Ctrl+H才能显示前缀有小点的隐藏文件夹,如下所示:

但是每次远程登录都要输入密码很麻烦,尤其是Hadoop平台分布在成百上千台机子形成集群之后,每台机子都要输入密码在实际商业应用中不可行,所以需要设置免密码登录。用cd命令切换到~/.ssh目录下,用ssh-keygen -t rsa -P ‘’ -f ~/.ssh/id_rsa命令以空口令生成ssh密钥,以实现无密码登录,我生成过所以这里覆盖了一次,这里目录含有“~”符号,这个符号的意思就是“/home/用户名”目录。-t表示指定生成的密钥类型,后接rsa表示用RSA密钥认证。-P用于提示密语,-f指定生成的密钥文件。该命令会在.ssh文件夹下生成id_rsa及id_rsa.pub两个文件,表示一对私钥和公钥,类似于钥匙和锁。

然后用cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys命令,意思是用cat命令查询前面生成的公钥文件id_rsa.pub的值,并把查询的结果用“>>”符号导入到同目录下一个叫authorized_keys的文件里,该文件中存放允许用于认证的公钥内容,即包含在该文件中的公钥内容才可以认证私钥,如下所示:

然后再试试ssh localhost能不能免密登录。如果ssh localhost之后依然需要输入密码,则可能是目录权限的问题,在~/.ssh目录下使用ls -al命令查看包含的文件,如下所示:

目录.ssh的上一级父目录权限需要是755(r: read=4,w: write=2,x: execute=1,例如rwx=7)可以在命令行用sudo chmod 755 ../来调整。再试试应该就能免密登录了。

如果使用ssh无密码访问本机时,出现agent refused operation错误,原因是只有ssh-agent在运行,还需要打开ssh-add,然后再ssh localhost就能免密登陆本机了,如下所示:

这样ssh远程免密登录也配好了,来试试Hadoop能不能正常运行,跑个例子,首先在Hadoop的安装目录下用mkdir ./input命令创建输入文件夹,这里忘记了/opt是需要超级用户权限的,在mkdir(make directory)前面加上sudo,如下所示:

然后,把/opt/hadoop-2.6.0-cdh5.15.0/etc/hadoop目录下的所有.xml文件全都复制到刚创建的input文件夹下,使用如下命令:

cp ./etc/hadoop/*.xml ./input

用于测试的输入文件准备好后,使用以下命令运行Hadoop单机实例:

./bin/hadoop jar ./share/hadoop/mapreduce/hadoop-mapreduce-examples-2.6.0-cdh5.15.0.jar grep ./input ./output 'dfs[a-z.]+'

上面的命令把输出结果保存在同级的output目录下(自动创建),运行过程如下:

运行完成后,可以使用cat ./output/*命令来查看运行后的结果,最后使用rm -r命令删除输入和输出文件夹./input和./output,便于下次正常运行任务,如下所示:

需要注意的是,Hadoop每次运行的时候,输出文件夹一定不能存在,否则会提示错误 “org.apache.hadoop.mapred.FileAlreadyExistsException: Output directory hdfs://localhost/output already exists”(该路径是伪分布式情况下的路径),因此在每次任务执行前,至少要删除输出文件夹。

猜你喜欢

转载自blog.csdn.net/qq_33588730/article/details/81123614