本文为作者的日记,因此默认读者会使用linux系统的基本命令如编辑及保存文件、打开文件夹、退出文件夹、新建及删除文件夹、显示文件内容等。
VMware 12 pro(虚拟机软件)
CentOS 7
Hadoop-3.0.0
jdk1.8.0
SecureCRT(用于登陆linux主机)
在VMware中点击文件-新建虚拟机,然后按提示进行即可,虚拟机设置大概如下图,网络适配器选择NAT。
注意CentOS默认是最小化安装,请在安装过程中“软件选择”处选择桌面模式(下文会关闭图形界面以节省内存),ROOT密码、用户名、用户密码均设为hadoop,其余选项默认即可。
开机后进入桌面,新安装的系统用不了sudo命令,需要更改一下系统文件,进入root用户后输入
vi /etc/sudoers
按箭头下建找到
root ALL=(ALL) ALL
更改如下并保存退出文件
root ALL=(ALL) ALL
hadoop ALL=(ALL) ALL
输入exit退出root用户,因为CentOS 7取消了inittab,因此执行如下命令设置开机默认模式为文本模式:(关闭图形界面是为了节省内存,比如单机完全分布式可以把Slave结点都关掉,若需要在linux上编程不关也可以)
sudo systemctl set-default multi-user.target
然后输入如下命令立刻进入文本模式
sudo init 3
进入文本模式后登陆hadoop用户,输入如下命令查看网关名称
ifconfig
第一行第一个就是,比如作者的网关名字是ens33
输入下列命令设置ip等信息(最后一个是你自己的网关名称)
sudo vi /etc/sysconfig/network-scripts/ifcfg-ens33
进入编辑模式并加入以下内容,注意根据你实际情况填写
IPADDR=192.168.29.3
GATEWAY=192.168.29.2
NETMASK=255.255.255.0
其中GATEWAY是网关,请在VMware的编辑-虚拟网络编辑器中查看你的网关,IPADDR是ip地址,设为网关地址加1就行。
保存退出后输入命令重启网络服务
sudo service network restart
最后ping一下百度有反应就表示可以了。
ping www.baidu.com
为了方便,建议下面操作在 SecureCRT S e c u r e C R T 或类似的软件上进行
将下载好的jdk-8u161-linux-x64.tar.gz放到windows的C盘上,右键选择Connect SFTP Connected,用于将win的文件发到linux上,在SFTP页面输入如下命令(文件名称输入前半部分按下Tab键就能自动补全)。
put c:/jdk-8u161-linux-x64.tar.gz ~/
这时候回到linux上输入ll就能看到文件已经在了,输入下面命令解压
tar -zxvf jdk-8u161-linux-x64.tar.gz
进入jdk1.8.0_161/输入pwd记下jdk的路径
[hadoop@localhost ~]$ cd jdk1.8.0_161/
[hadoop@localhost jdk1.8.0_161]$ pwd
/home/hadoop/jdk1.8.0_161
现在去设置环境变量
sudo vi /etc/profile
按shirt+G跳到最后一行进入编辑模式添加下面内容后保存退出
export JAVA_HOME=/home/hadoop/jdk1.8.0_161
export PATH=$PATH:$JAVA_HOME/bin
为了使更改后的profile立刻生效,输入下面命令
source /etc/profile
此时输入如下命令就可以看到环境变量是否成功设置
echo $JAVA_HOME
CentOS 7默认已经安装了 SSH client、SSH server,如果这一步命令报错请自行下载安装SSH client、SSH server。
分别输入下面命令生成密钥、将密钥加到授权、更改文件权限
cd .ssh # 没有这个文件夹就新建一个
ssh-keygen -t rsa # 一直按回车就行
cat id_rsa.pub >> authorized_keys
chmod 600 ./authorized_keys
验证是否配置成功,输入下面命令登陆本机,如果不用输入密码表示成功
ssh localhost
同样将下载好的hadoop-3.0.0.tar.gz放到windows的C盘,在SecureCRT通过SFTP执行下面命令发送到linux中
put c:/hadoop-3.0.0.tar.gz ~/
解压到/home/hadoop
tar -zxvf hadoop-3.0.0.tar.gz
sudo vi /etc/profile
在最后一行添加
export HADOOP_HOME=/home/hadoop/hadoop-3.0.0
export PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin
这里说明一下环境变量的PATH,把路径添加上了就可以在任意地方打开PATH里面的东西,而不用专门跑到该文件夹里面,比如上面的hadoop-3.0.0/sbin,里面保存hadoop的开关。
最后运行一下
source /etc/profile
接下来先进入下面的文件夹
cd hadoop-3.0.0/etc/hadoop/
vi hadoop-env.sh
找到# export JAVA_HOME=
改成export JAVA_HOME=/home/hadoop/jdk1.8.0_161
记得去掉前面的’#’号。
将
<configuration>
configuration>
改成
<configuration>
<property>
<name>hadoop.tmp.dirname>
<value>file:/home/hadoop/hadoop-3.0.0/datavalue>
<description>Abase for other temporary directories.description>
property>
<property>
<name>fs.defaultFSname>
<value>hdfs://localhost:9000value>
property>
configuration>
vi hdfs-site.xml
将
<configuration>
configuration>
改成
<configuration>
<property>
<name>dfs.replicationname>
<value>1value>
property>
<property>
<name>dfs.namenode.name.dirname>
<value>file:/home/hadoop/hadoop-3.0.0/data/dfs/namevalue>
property>
<property>
<name>dfs.datanode.data.dirname>
<value>file:/home/hadoop/hadoop-3.0.0/data/dfs/datavalue>
property>
<property>
<name>dfs.http.addressname>
<value>0.0.0.0:50070value>
property>
configuration>
最后一步,格式化namenode
hdfs namenode -format
接着开启所有(关闭的话用stop替换start即可):
start-all.sh
正常情况下输入命令jps可以看到当前的进程
[hadoop@localhost hadoop]$ jps
2916 NodeManager
2357 DataNode
2809 ResourceManager
2522 SecondaryNameNode
3275 Jps
2255 NameNode
/home/hadoop/hadoop-3.0.0/logs
对应的.log文件查看错误原因。