如果按照我的流程走,是没有问题的,有问题可以讨论,看到会回复。这里使用的使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(本次安装hadoop-2.7.3)
预先准备好hadoop安装包(最好是2.*版本) 百度网盘下载链接:https://pan.baidu.com/s/16_BbxRGz6gJRzHb53BZBOw 提取码:code
解压到主文件夹(/home/hadoop) tar -zxvf 包名 或者双击解压
四、配置各种文件
1.Ubantu配置环境变量
打开环境变量文件
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
2.配置hosts文件
查看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
3.配置hadoop文件
在hadoop目录下批量创建文件夹
mkdir {tmp,hdfs,hdfs/name,hdfs/data,mapred,mapred/system,mapred/local}
以下配置文件在/home/hadoop/hadoop/hadoop-2.7.3/etc/Hadoop
4.配置core-site.xml文件
在hadoop-2.7.3/etc/hadoop目录下的core-site.xml文件中输入以下内容:
<configuration>
<property>
<name>io.native.lib.available</name>
<value>true</value>
</property>
<property>
<name>fs.default.name</name>
<value>hdfs://datanode1:9000</value>
<final>true</final>
</property>
<property>
<name>hadoop.native.lib</name>
<value>true</value>
</property>
<property>
<name>hadoop.tmp.dir</name>
<value>/home/hadoop/hadoop-2.7.3/tmp</value>
</property>
</configuration>
配置hdfs-site.xml文件
在hadoop-2.7.3/etc/hadoop目录下的hdfs-site.xml文件中输入以下内容:
<configuration>
<property>
<name>dfs.namenode.name.dir</name>
<value>file:/home/hadoop/hadoop-2.7.3/hdfs/name</value>
<final>true</final>
</property>
<property>
<name>dfs.datanode.data.dir</name>
<value>file:/home/hadoop/hadoop-2.7.3/hdfs/data</value>
<final>true</final>
</property>
<property>
<name>dfs.replication</name>
<value>3</value>
</property>
<property>
<name>dfs.permissions.enabled</name>
<value>false</value>
</property>
<property>
<name>dfs.http.address</name>
<value>0.0.0.0:50070</value>
</property>
</configuration>
配置mapred-site.xml文件
<configuration>
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
<property>
<name>mapreduce.jobtracker.address</name>
<value>datanode1:9001</value>
<final>true</final>
</property>
<property>
<name>mapreduce.jobtracker.system.dir</name>
<value>file:///home/hadoop/hadoop-2.7.3/mapred/system</value>
<final>true</final>
</property>
<property>
<name>mapreduce.cluster.local.dir</name>
<value>file:///home/hadoop/hadoop-2.7.3/mapred/local</value>
<final>true</final>
</property>
</configuration>
配置yarn-site.xml
在hadoop-2.7.3/etc/hadoop目录下的yarn-site.xml文件中输入以下内容:
<configuration>
<property>
<name>yarn.resourcemanager.hostname</name>
<value>datanode1</value>
</property>
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
<property>
<name>yarn.nodemanager.aux-services.mapreduce_shuffle.class</name>
<value>org.apache.hadoop.mapred.ShuffleHandler</value>
</property>
</configuration>
配置hadoop-env.sh文件
在.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
配置slaves文件
datanode1
datanode2
datanode3
初始化hadoop
执行
hadoop namenode -format
格式化namenode,注意,若多次格式化namenode,则会造成namenode或datanode不能启动,原因是两者的uuid由于重新格式化后,出现了不一致。出现这种情况,删除tmp及hdfs目录后,重新格式化namenode,再次启动hadoop,问题一般可以得到解决。
虚拟机克隆
修改克隆机机名为(点击设置,最后一行设备信息,修改)
datanode2 datanode3
设置ssh无密码登录
使用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环境
启动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
http:// 你的主节点IP地址:50070
能正确进入页面则成功
8088页面下点击左侧node可看当前节点情况
Mapreduce测试 (先启动hadoop)
进入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
|