如果按照我的流程走,是没有问题的,有问题可以讨论,看到会回复。这里使用的使ubuntu18.04,创建三个虚拟机。
用户名hadoop 虚拟机名 datanode1 datanode2 datanode3
用户名 hadoop 密码 123
获取root权限
sudo passwd root 设置root密码
sudo -s进入root状态
sudo su 给与root权限
安装vmware-tools ,安装后课自动调节虚拟机尺寸,并且可以虚拟机与主机互相传输文件,直接拖动即可。(点击虚拟机然后安装,安装后桌面有个压缩包,解压进入目录)
sudo ./ vmware-install.pl 输入yes后一直确定即可,安装好后需要重启虚拟机,不然无法桌面与虚拟机相互传输文件!
软件和更新 更换服务器站点
安装JDK、SSH、vim和net-tools
其中只有JDK最大,安装过程中会受网络状况影响,命令如下
apt update
apt install openjdk-8-jdk-headless
apt install ssh
apt install vim
apt install net-tools
预先准备好hadoop安装包(最好是2.*版本)
百度网盘下载链接:https://pan.baidu.com/s/16_BbxRGz6gJRzHb53BZBOw
提取码:code
解压到主文件夹(/home/hadoop)
tar -zxvf 包名 或者双击解压
打开环境变量文件
sudo vim ~/.bashrc
在文件末尾插入以下语句,JDK路径按实际路径修改(注意hadoop的版本)
export HADOOP_HOME=/home/hadoop/hadoop-2.7.3.3
export HADOOP_MAPRED_HOME=$HADOOP_HOME
export HADOOP_COMMON_HOME=$HADOOP_HOME
export HADOOP_HDFS_HOME=$HADOOP_HOME
export YARN_HOME=$HADOOP_HOME
export HADOOP_CONF_DIR=$HADOOP_HOME/etc/hadoop
export JAVA_HOME=/usr/lib/jvm/java-8-openjdk-amd64
export JRE_HOME=/usr/lib/jvm/java-8-openjdk-amd64/jre
export CLASSPATH=.:$JAVA_HOME/lib:$JRE_HOME/lib:$HADOOP_HOME/lib/native
export PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin
export LD_LIBRARY_PATH=$HADOOP_HOME/lib/native
#export HADOOP_ROOT_LOGGER=DEBUG,console
#修改完后,保存变量 source ~/.bashrc
#查看环境是否写入 env
查看datanode1的ip地址 设置->网络(我的是192.168.241.140)
修改/etc/hosts文件 sudo vim /etc/hosts
127.0.0.1 localhost
192.168.241.140 datanode1
192.168.241.141 datanode2
192.168.241.142 datanode3
mkdir {tmp,hdfs,hdfs/name,hdfs/data,mapred,mapred/system,mapred/local}
以下配置文件在/home/hadoop/hadoop/hadoop-2.7.3/etc/Hadoop
在hadoop-2.7.3/etc/hadoop目录下的core-site.xml文件中输入以下内容:
io.native.lib.available
true
fs.default.name
hdfs://datanode1:9000
true
hadoop.native.lib
true
hadoop.tmp.dir
/home/hadoop/hadoop-2.7.3/tmp
在hadoop-2.7.3/etc/hadoop目录下的hdfs-site.xml文件中输入以下内容:
dfs.namenode.name.dir
file:/home/hadoop/hadoop-2.7.3/hdfs/name
true
dfs.datanode.data.dir
file:/home/hadoop/hadoop-2.7.3/hdfs/data
true
dfs.replication
3
dfs.permissions.enabled
false
dfs.http.address
0.0.0.0:50070
mapreduce.framework.name
yarn
mapreduce.jobtracker.address
datanode1:9001
true
mapreduce.jobtracker.system.dir
file:///home/hadoop/hadoop-2.7.3/mapred/system
true
mapreduce.cluster.local.dir
file:///home/hadoop/hadoop-2.7.3/mapred/local
true
在hadoop-2.7.3/etc/hadoop目录下的yarn-site.xml文件中输入以下内容:
yarn.resourcemanager.hostname
datanode1
yarn.nodemanager.aux-services
mapreduce_shuffle
yarn.nodemanager.aux-services.mapreduce_shuffle.class
org.apache.hadoop.mapred.ShuffleHandler
在.etc/hadoop/hadoop-env.sh文件末尾加入(注意hadoop版本)
export HADOOP_IDENT_STRING=$USER
export JAVA_HOME=/usr/lib/jvm/java-8-openjdk-amd64
export HADOOP_HOME=/home/hadoop/hadoop-2.7.3
export HADOOP_PID_DIR=/home/hadoop/pids
export HADOOP_CONF_DIR=$HADOOP_HOME/etc/hadoop
export HADOOP_SECURE_DN_PID_DIR=${HADOOP_PID_DIR}
export PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin
datanode1
datanode2
datanode3
执行
hadoop namenode -format
格式化namenode,注意,若多次格式化namenode,则会造成namenode或datanode不能启动,原因是两者的uuid由于重新格式化后,出现了不一致。出现这种情况,删除tmp及hdfs目录后,重新格式化namenode,再次启动hadoop,问题一般可以得到解决。
修改克隆机机名为(点击设置,最后一行设备信息,修改)
datanode2 datanode3
使用ssh datanode1 连接本机节点,然后输入exit退出。
在/home/Hadoop/.ssh目录下输入 (ctrl+h打开隐藏文件夹)
ssh-keygen -t rsa 一直确定
cp id_rsa.pub authorized_keys 生成登录用的公钥文件
将公钥、私钥复制到节点中
ssh-copy-id -i ~/.ssh/id_rsa.pub hadoop@datanode2
ssh-copy-id -i ~/.ssh/id_rsa.pub hadoop@datanode3
文件拷贝命令(后续安装hbase,spark可能会用到)
scp -r /home/hadoop/hbase-1.7.0 hadoop@datanode2:/home/hadoop/hbase-1.7.0
scp -r /home/hadoop/hbase-1.7.0 hadoop@datanode3/home/hadoop/hbase-1.7.0
scp -r /home/hadoop/.bashrc hadoop@datanode2/home/hadoop/.bashrc
scp -r /home/hadoop/.bashrc hadoop@datanode3:/home/hadoop/.bashrc
scp -r /home/hadoop/hbase-1.7.0/conf/hbase-site.xml hadoop@datanode2:/home/hadoop/hbase-1.7.0/conf/hbase-site.xml
scp -r /home/hadoop/hbase-1.7.0/conf/hbase-site.xml hadoop@datanode3:/home/hadoop/hbase-1.7.0/conf/hbase-site.xml
scp -r /home/hadoop/hbase-1.7.0/conf/hbase-site.xml hadoop@datanode2:/home/hadoop/hbase-1.7.0/conf/hbase-site.xml
scp -r /home/hadoop/hbase-1.7.0/conf/hbase-site.xml hadoop@datanode3:/home/hadoop/hbase-1.7.0/conf/hbase-site.xml
启动hadoop
方法一 start-all.sh
方法二 start-dfs.sh
start-yarn.sh
停止为(stop-dfs.sh、stop-yarn.sh )或者(stop-all.sh)
在datanode1上输入jps显示:
Jps
DataNode
SecondaryNameNode
ResourceManager
NodeManager
NameNode
在其他节点上输入jps显示:
Jps
DataNode
NodeManager
输入netstat -anpup 检查端口是否都打开
hdfs dfsadmin –report
在同一个网络的PC机上的浏览器中输入
http:// 你的主节点IP地址:8088
能正确进入页面则成功
8088页面下点击左侧node可看当前节点情况
进入hadoop目录终端输入
1、 hdfs dfs -mkdir -p /data/input在虚拟分布式文件系统上创建一个测试目录/data/input (hdfs目录下)
2、 hdfs dfs -put README.txt /data/input 将当前目录下的README.txt 文件复制到虚拟分布式文件系统中(hdfs目录下)
3、 hdfs dfs-ls /data/input 查看文件系统中是否存在我们所复制的文件
运行如下命令向hadoop提交单词统计任务
4.进入hadoop文件目录,执行下面的指令。
5.查看结果
hdfs dfs -cat /data/output/result /part-r-00000