详细步骤:https://blog.csdn.net/lzbmc/article/details/90757592
Tips:
安装了VMware Tools:可以在宿主机和虚拟机之间直接拷贝文件。
会弹出VMWareTools所在的文件夹,然后右键VMWare Tools.tar.gz,copy to到Home目录下。
输入解压命令:sudo tar -xzvf VMwareTools-10.3.10-12406962.tar.gz 就出现左边解压文件
进入解压目录:cd vmware-tools-distrib
安装: sudo ./vmware-install.pl 不断回车——安装成功,重启
1、创建一个Hadoop用户,用户名和密码都是hadoop
sudo adduser hadoop
2、在创建hadoop用户的同时也创建了hadoop用户组,下面我们把hadoop用户加入到hadoop用户组
sudo usermod -a -G hadoop hadoop
前面一个hadoop是组名,后面一个hadoop是用户名。完成后输入一下命令查询结果。
cat /etc/group
3、为hadoop用户添加权限
输入:sudo gedit /etc/sudoers 回车,打开sudoers文件
给hadoop用户赋予和root用户同样的权限,保存
OpenJDK 8
更新: sudo apt-get update
安装:sudo apt-get install openjdk-8-jdk
配置openJDK环境变量:只有一个jdk没有配置
sudo vi /etc/profile
增加以下设置: 按a或者i进入写入模式
export JAVA_HOME=/usr/lib/jvm/java-1.8.0-openjdk-amd64
export JRE_HOME=${JAVA_HOME}/jre
export CLASSPATH=.:${JAVA_HOME}/lib:${JRE_HOME}/lib
export PATH=${JAVA_HOME}/bin:$PATH
ESC退出编辑
:wq保存退出
保存退出之后输入:
source /etc/profile 使更改生效
echo $PATH 或者 echo $JAVA_HOME 验证一下路径
验证
注销重新登陆一下, 输入java -version, 提示如下则成功
openjdk version "1.8.0_151"
OpenJDK Runtime Environment (build 1.8.0_151-8u151-b12-1~deb9u1-b12)
OpenJDK 64-Bit Server VM (build 25.151-b12, mixed mode)
sudo apt-get install openssh-server #安装SSH server
ssh localhost #登陆SSH,第一次登陆输入yes
### The authenticity of host 'localhost (127.0.0.1)' can't be established.
### 删除rm -rf /home/hadoop/.ssh/known_hosts 重新 ssh localhost
exit #退出登录的ssh localhost
cd ~/.ssh/ #如果没法进入该目录,执行一次ssh localhost ### ls 会看到有 known_hosts
ssh-keygen -t rsa ## 一直回车
cat ./id_rsa.pub >> ./authorized_keys #加入授权 # 要在ssh目录下
# hadoop@ubuntu:~/.ssh$ cat ./id_rsa.pub >> ./authorized_keys
ssh localhost #此时已不需密码即可登录localhost.如果失败则可以搜索SSH免密码登录来寻求答案
1、下载hadoop-3.1.2.tar.gz 到桌面:https://hadoop.apache.org/releases.html
sudo tar -zxvf ~/Desktop/hadoop-3.1.2.tar.gz -C /usr/local #解压到/usr/local目录下
cd /usr/local
sudo mv ./hadoop-3.1.2/ ./hadoop # 重命名为hadoop
sudo chown -R hadoop ./hadoop # 修改文件权限
2、给hadoop配置环境变量,将下面代码添加到.bashrc文件:
sudo vi ~/.bashrc
export HADOOP_HOME=/usr/local/hadoop
export CLASSPATH=$($HADOOP_HOME/bin/hadoop classpath):$CLASSPATH
export HADOOP_COMMON_LIB_NATIVE_DIR=$HADOOP_HOME/lib/native
export PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin
3、执行source ~/.bashrc使设置生效,并查看hadoop是否安装成功
cd /usr/local/hadoop/
hadoop version
【Hadoop 可以在单节点上以伪分布式的方式运行,Hadoop 进程以分离的 Java 进程来运行,节点既作为 NameNode 也作为 DataNode,同时,读取的是 HDFS 中的文件。
Hadoop 的配置文件位于 /usr/local/hadoop/etc/hadoop/ 中,伪分布式需要修改2个配置文件 core-site.xml 和 hdfs-site.xml。Hadoop的配置文件是 xml 格式,每个配置以声明 property 的 name 和 value 的方式来实现。】
1、修改hadoop-env.sh——Hadoop环境变量设置
sudo gedit /usr/local/hadoop/etc/hadoop/hadoop-env.sh
或者 sudo vi /usr/local/hadoop/etc/hadoop/hadoop-env.sh
(a:进入编辑模式;ESC:结束编辑模式; :wq :退出)
可以直接 cd /usr/local/hadoop/etc/hadoop/
2、修改core-site.xml 主要完成NameNode的IP和端口设置
/usr/local/hadoop/etc/hadoop$ sudo vi core-site.xml
hadoop.tmp.dir
file:/usr/local/hadoop/tmp
Abase for other temporary directories.
fs.defaultFS
hdfs://localhost:9000
这里使用的是hdfs://localhost:9000即hdfs文件系统,例如还有淘宝的tfs://,谷歌的gfs://以及本地的file://
3、修改hdfs-site.xml 主要完成HDFS的数据块副本等参数设置
/usr/local/hadoop/etc/hadoop$ sudo vi hdfs-site.xml
dfs.replication
1
dfs.namenode.name.dir
file:/usr/local/hadoop/tmp/dfs/name
dfs.datanode.data.dir
file:/usr/local/hadoop/tmp/dfs/data
其分别为设置blocks副本备份数量、设置NameNode数据存储目录、设置DataNode数据存储目录。dfs.replication就是指备份的份数,1。
(看情况而定用不用的到:sudo vi mapred-site.xml
)
4、NameNode 的格式化: (切到/usr/local/hadoop)
/usr/local/hadoop$ ./bin/hdfs namenode –format 执行一次
5、启动namenode和datanode守护进程
./sbin/start-dfs.sh
6、验证开启成功 jps
成功启动后,可以访问 HDFS的Web 界面 http://localhost:9870 查看 NameNode 和 Datanode 信息,还可以在线查看 HDFS 中的文件
7、运行Hadoop伪分布式实例 –Wordcount(命令运行自带jar,下面有通过eclipse运行,可忽略直接看下面的七)
前面已经配置了Hadoop的环境变量,Hadoop和HDFS的命令已经包含在了系统当中,HDFS有三种shell命令方式:
hadoop fs : 适用于任何不同的文件系统,比如本地文件系统和HDFS文件系统
hadoop dfs : 只能适用于HDFS文件系统
hdfs dfs : 跟hadoop dfs的命令作用一样,也只能适用于HDFS文件系统
单机模式读取的是本地数据,伪分布式读取的则是 HDFS 上的数据。伪分布式和单机的mapreduce基本上都是一样的,最主要的区别就是该模式下要使用HDFS的文件系统。
./bin/hdfs dfs -mkdir -p /user/hadoop
./bin/hdfs dfs -mkdir /user/hadoop/input
本地创建:touch ~/Desktop/text1.txt
从本地上上传到HDFS中:-put
/usr/local/hadoop$ hdfs dfs -put ~/Desktop/text1.txt /user/hadoop/input
./bin/hdfs dfs -ls /目录
hadoop jar ./share/hadoop/mapreduce/hadoop-mapreduce-examples-*.jar wordcount /user/hadoop/input/text1.txt output
hdfs dfs -get output ~/Desktop/output #拷贝到本机
hdfs dfs -rm -r output # 删除HDFS上的output 文件夹
hdfs dfs -put ~/Desktop/text2.txt input
hdfs dfs -ls input
hadoop jar ./share/hadoop/mapreduce/hadoop-mapreduce-examples-*.jar wordcount /user/hadoop/input/ output
对 input下所有文档进行词频统计
hdfs dfs -cat output/*
1、下载eclipse包并移动到/opt目录下 https://www.eclipse.org/downloads/
sudo mv ~/Desktop/eclipse-committers-2019-03-R-linux-gtk-x86_64.tar.gz /opt
2、将其解压到opt目录下
sudo tar -zxvf eclipse-committers-2018-09-linux-gtk-x86_64.tar.gz -C /opt/
3、为了便于之后打开eclipse,在桌面上创建一个快捷方式
sudo vim /usr/share/applications/eclipse.desktop
加入:
[Desktop Entry]
Encoding=UTF-8
Name=Eclipse
Comment=Eclipse
Exec=/opt/eclipse/eclipse
Icon=/opt/eclipse/icon.xpm
Terminal=false
StartupNotify=true
Type=Application
Categories=Application;Development;
4、 更改权限,将eclipse变为可执行文件
sudo chmod u+x /usr/share/applications/eclipse.desktop
5、将其复制到桌面
cp /usr/share/applications/eclipse.desktop ~/Desktop/
6、建立jre软连接(软链接可以理解成快捷方式)
sudo mkdir /opt/eclipse/jre
sudo ln -s /usr/lib/jvm/java-1.8.0-openjdk-amd64/bin /opt/eclipse/jre
7、hadoop-eclipse-plugin插件
在此之前先启动hadoop:start-dfs.sh
通过jps查看NameNode,DataNode,SecondaryNameNode是否都已在运行
我的hadoop version: 3.1.2 也要下载对应的3.1.2版本。没找到,看到网上有说下载2.6.0也可以
下载地址https://github.com/winghc/hadoop2x-eclipse-plugin 解压只要release里面的2.6.0.jar
①复制插件到eclipse安装目录/plugins/ 下:
sudo cp ~/Desktop/hadoop-eclipse-plugin-2.6.0.jar /opt/eclipse/plugins/
②重启Eclipse,左侧的Project Explorer中没有看到DFS Locations。以为jar包不对,建一个项目就可以了。
这是我的每个人的会不一样
③windows->preferens ->左侧Hadoop Map/Reduce选项,选择 Hadoop 的安装目录(如/usr/local/hadoop,Ubuntu不好选择目录,直接输入)
④Windows->Open Perspective->Other->单击蓝色小象Map/Reduce
此时Eclipse下方输出窗口部分,出现Map/Reduce Locations选项卡,单击右上角的蓝色小象进行编辑
⑤设置fs.defaultFS路径 为 hdfs://localhost:9000
⑥hadoop.tmp.dir修改路径,和core-site.xml文件配置保持一致(有的教程没写这一步)
点击finish保存
8、在Eclipse中创建MapReduce项目—WordCount(先打开hadoop)
①创建hadoop项目,点击左上角file—>new—>other或者Project
②选择map/preduce下面的map/preduce project
③填写项目名称
④右键点击刚创建的 WordCount 项目,选择 New -> Class。
在 Package 处填写 org.apache.hadoop.examples;在 Name 处填写 WordCount。
package org.apache.hadoop.examples;
import java.io.IOException;
import java.util.StringTokenizer;
import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.fs.Path;
import org.apache.hadoop.io.IntWritable;
import org.apache.hadoop.io.Text;
import org.apache.hadoop.mapreduce.Job;
import org.apache.hadoop.mapreduce.Mapper;
import org.apache.hadoop.mapreduce.Reducer;
import org.apache.hadoop.mapreduce.lib.input.FileInputFormat;
import org.apache.hadoop.mapreduce.lib.output.FileOutputFormat;
import org.apache.hadoop.util.GenericOptionsParser;
public class WordCount {
public static class TokenizerMapper
extends Mapper
⑤在运行 MapReduce 程序前,还需要执行一项重要操作(也就是上面提到的通过复制配置文件解决参数设置问题):将 /usr/local/hadoop/etc/hadoop 中将有修改过的配置文件(如伪分布式需要 core-site.xml 和 hdfs-site.xml),以及 log4j.properties 复制到 WordCount 项目下的 src 文件夹(运行项目也需要)
sudo cp /usr/local/hadoop/etc/hadoop/core-site.xml ~/eclipse-workspace/WordCount/src/
sudo cp /usr/local/hadoop/etc/hadoop/hdfs-site.xml ~/eclipse-workspace/WordCount/src/
sudo cp /usr/local/hadoop/etc/hadoop/log4j.properties ~/eclipse-workspace/WordCount/src/
⑥右键运行WordCount—Run As,选择Run configurations,我的代码路径是通过传参的
双击java Application,选择WordCount,点击Arguments,第一个是输入路径,第二个是输出路径,输入输出路径中间以一个空格隔开,点击Apply,最后点击run
注意,如果user/hadoop下有output文件一定要删除
可以把路径写在程序里,这样可以不用配置,直接run on Hadoop
HDFS常用命令:http://blog.sanyuehua.net/2017/11/01/Hadoop-HDFS/