这学期有相关课程,记录下相关步骤,以后也方便点。
老师说用Ubuntu16稍微好点,那这里就用Ubuntu16.04 LTS。
然后我们这里安装的是伪分布式!
具体配置:
Vmware 15
Ubuntu16.04 LTS 桌面版
Jdk 8
都是tar包,自行去官网下载即可:
我想使用Xshell连接Vm里面的虚拟机,所以先ifconfig
查询IP,通过Xshell登录。
然后其他操作请看我另一篇文章:https://cloud.tencent.com/developer/article/1538377 其实这一步不是必须,可以直接在Vmware操作终端即可,但是我个人觉得里面操作很不方便,所以还是要提到外面用Xshell连接操作。 你要在Ubuntu系统中终端里操作命令,请忽略这一步骤。
这一步没搞明白这么弄的目的是什么,今天上课问一下老师。
创建名为hadoop的用户
sudo useradd -m hadoop -s /bin/bash
创建用户hadoop的密码:
sudo passwd hadoop
叫你输入hadoop用户的密码
为hadoop用户增加管理员权限:
sudo adduser hadoop sudo
生成ssh秘钥
ssh-keygen -t rsa -P ''
如果提示命令不存在等,请看我另一篇文章:https://cloud.tencent.com/developer/article/1538377
将钥匙添进无密码验证登录文件:
cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
然后试一下登录:
ssh localhost
输入yes,看看是不是进入了:
为了将Windows端的jdk8和hadoop的文件传到虚拟机上,我们这里通过安装一个
lrzsz
的软件来直接在Xshell中上传。 PS:老师讲的是建一个ftp服务,然后通过ftp上传,感觉多此一举。
sudo apt install lrzsz
安装完成后即可在Xshell终端输入rz
,就可打开传输窗口
传输中
我们再安装一个vim,操作文件方便 点,用vi也行。
sudo apt install vim
我们这里要将
jdk-8u221-linux-x64.tar.gz
解压到/usr/local/
,目前jdk-8u221-linux-x64.tar.gz
在我的家目录,当然在哪里不重要,统一将其安装(解压)到/usr/local
里面。 之后的hadoop也装到/usr/local
确认目前你所在的目录是在**jdk-8u221-linux-x64.tar.gz
**的目录,那么执行解压命令:
sudo tar -zxvf jdk-8u221-linux-x64.tar.gz -C /usr/local
其中8u221-linux-x64是由你下载的jdk版本决定,不要照抄,根据自己的名称来,可输入jdk按tab键自动补全。 还有就是必须加sudo,因为Ubuntu默认不是root用户,需要加sudo
那么我解压后的jdk目录就是:/usr/local/jdk1.8.0_221
,这就是JAVA_HOME目录,下一步我们要配置环境变量。
编辑配置环境变量的文件,用之前的安装的vim,没安装的用vi
sudo vim /etc/profile
将一下内容添加到此文件末尾:
#Set Java Environment
JAVA_HOME=/usr/local/jdk1.8.0_221
JRE_HOME=$JAVA_HOME/jre
HADOOP_HOME=/usr/local/hadoop
ECLIPSE_HOME=/usr/local/eclipse
PATH=$PATH:$JAVA_HOME/bin:$JRE_HOME/bin:$HADOOP_HOME/bin:$HADOOP_HOME/sbin:$ECLIPSE_HOME
CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar:$JRE_HOME/lib
export JAVA_HOME JRE_HOME HADOOP_HOME ECLIPSE_HOME PATH CLASSPATH
其中
JAVA_HOME=/usr/local/jdk1.8.0_221
后面的/usr/local/jdk1.8.0_221
根据你安装的jdk版本来。 以上代码还顺带将hadoop和eclipse的环境变量也写进来了,还没到那一步,不过写进来也无所谓。hadoop我们也要安装进/usr/local
里面
其余代码就不管了,至于如果你不会vim,不会将以上文件填进去的话,那么可以先去学一下vi(m)如何编辑文件。或者在vmware里面用可视化工具编辑也行。
要是环境变量配置生效,需要重启系统,或者执行以下代码:
source /etc/profile
测试是否配置成功,输入**java
**和**javac
**看看效果:
好了,配置jdk的步骤完成了。这里不止配置了jdk,还有一些前置操作,以后步骤需要用到的。所以长了点。
我这里上传jdk包的时候,已经顺带把hadoop的压缩包上传到Ubuntu了,没上传的用rz命令参照上面上传即可。
进入到上传包的目录,执行解压命令:
sudo tar -zxvf hadoop-3.2.0.tar.gz -C /usr/local
需要注意的事项,参照解压jdk 【你看此篇文章时到hadoop版本目录问题】
解压中
默认是hadoop-3.2.0,我们需要重命名为hadoop
cd /usr/local # 进入安装目录
sudo mv hadoop-3.2.0/ hadoop # 重命名
sudo chown -R hadoop:hadoop ./hadoop
这一步要求你已经进入
/usr/local
了,不然以上命令路径没对。
这一步还要我们之前创建了hadoop的用户,因为这是更改为hadoop用户
在进行这一步之前,我们还需要在hadoop的配置文件里设置一下JAVA_HOME的值:
cd /usr/local/hadoop/etc/hadoop # 进入hadoop的配置文件目录
sudo vim hadoop-env.sh # 编辑配置文件
注:上面截图错了,应该在
JAVA_HOME
前加个export
(注意末尾有个空格)
检测版本信息
cd /usr/local/hadoop
./bin/hadoop veriosn
或
hadoop veriosn
# 还记得之前我们配置jdk环境变量的时候说的吗,我们顺带配置了hadoop的环境变量(如果你安装到/usr/local/hadoop),那么可以直接运行hadoop命令
WTF,怎么报错了?
kuan@ubuntu:~$ hadoop version
log4j:ERROR setFile(null,true) call failed.
java.io.FileNotFoundException: /usr/local/hadoop/logs/fairscheduler-statedump.log (Permission denied)
at java.io.FileOutputStream.open0(Native Method)
at java.io.FileOutputStream.open(FileOutputStream.java:270)
at java.io.FileOutputStream.<init>(FileOutputStream.java:213)
at java.io.FileOutputStream.<init>(FileOutputStream.java:133)
at org.apache.log4j.FileAppender.setFile(FileAppender.java:294)
at org.apache.log4j.RollingFileAppender.setFile(RollingFileAppender.java:207)
at org.apache.log4j.FileAppender.activateOptions(FileAppender.java:165)
.......
首先,你没报错的话,说明可能你没有完全按照我的步骤来。 报错了的话,原因很简单,用户不对 我们之前执行了命令
sudo chown -R hadoop:hadoop ./hadoop
,更换了hadoop文件夹的所属,但我们现在是谁?
切换用户即可:
su - hadoop
输入hadoop密码,切换用户即可。
再次执行:hadoop version
Yes,没有报错。hadoop到此安装完成了,环境变量也配置了。
对于伪分布式安装,我们需要修改core-site.xml和hdfs-site.xml这两个文件。
进入配置文件的目录:
cd /usr/local/hadoop/etc/hadoop
core-site.xml
vim core-site.xml
添加以下内容:
<configuration>
<property>
<name>fs.defaultFS</name>
<value>hdfs://localhost:9000/</value>
<description>默认的HDFS端口,用于NameNode与DataNode之间到的通讯,IP为NameNode的地址</description>
</property>
<property>
<name>hadoop.tmp.dir</name>
<value>file:/usr/local/hadoop/tmp</value>
<description>存放hadoop文件系统依赖的基本配置</description>
</property>
</configuration>
先把这两行删除,然后整体复制我上面的内容
hdfs-site.xml
同样道理
vim ./hdfs-site.xml
删除默认的<configuration></configuration>
<configuration>
<property>
<name>dfs.replication</name>
<value>1</value>
<description>设置副本数</description>
</property>
<property>
<name>dfs.namenode.name.dir</name>
<value>file:/usr/local/hadoop/tmp/dfs/name</value>
<description>设置存放NameNode的文件路径</description>
</property>
<property>
<name>dfs.datanode.data.dir</name>
<value>file:/usr/local/hadoop/tmp/dfs/data</value>
<description>设置存放DataNode的文件路径</description>
</property>
</configuration>
然后初始化文件系统
hadoop namenode -format
以上命令是配置了环境变量才可以直接使用,不然需要到/usr/local/hadoop/bin目录执行:./hadoop namenode -format
执行结果:
看到如上内容,理论上执行成功了。
执行所有服务
cd /usr/local/hadoop/ #进入安装目录
./sbin/start-all.sh # 执行启动命令
如上。
输入命令**jps
**查看在运行的进程:
有以上6个,说明你的hadoop安装运行都没有问题了。
这后面的内容就是安装eclipse,和本文章关系不大,而且安装的Ubuntu是可视化界面,安装一个软件也没什么。
可能讲到mapreduce还要在续写,或者新写一篇文章。
待续.......