参考:林子雨老师网站博客
Hadoop安装搭建伪分布式教程(全面)吐血整理
环境
Vmare12
Ubuntu16.04
创建Hadoop用户
若安装Ubuntu不是用的“hadoop”用户,则需要增加一个名为"hadoop"的用户
- 直接快捷键ctrl+alt+t或者点击小箭头,以打开终端窗口,输入该命令创建新用户
$ sudo useradd -m hadoop -s /bin/bash
该条命令创建了可以登录的hadoop用户,且使用/bin/bash作为shell
- sudo命令:Ubuntu中一种权限管理机制。管理员可以授权给一些普通用户去执行一些需要root权限执行的操作。
当使用sudo命令时,需要输入当前用户密码 - 密码:在linux的终端中输入密码,终端不显示任何你当前输入的密码,也不会提示已输入了多少字符密码(在windows系统中,输入密码往往会是*)
- 输入法中英文切换:ubuntu中终端输入的命令一般是用英文输入。
- Ubuntu终端复制快捷键:ctrl+v+shift
- 设置密码
以密码hadoop为例
$ sudo passwd hadoop
可以给hadoop用户增加管理员权限,方便部署
$ sudo adduser hadoop sudo
- 注销当前用户
点击屏幕右上角的齿轮,选择注销,返回登陆界面。在登陆界面选择刚创建的hadoop用户进行登录。
更新apt
- (1)为后续一些apt软件安装,更新apt
$ sudo apt-get update
(2)系统设置(左边的小齿轮)→软件和更新(系统)→from中选择other→列表中选[mirrors.aliyun.com]→choose server(右下角)→关闭→重新载入
(3)再次执行sudo apt-get update
2. 为后续方便更改配置文件,安装vim
sudo apt-get install vim
安装时照例有确认,输入y即可
vim常用模式:命令模式,插入模式,可视模式,正常模式
(1)正常模式
主要用来浏览文本内容。
一开始打开vim是正常模式,且在任何模式下按esc键可以返回正常模式
(2)插入编辑模式
用来向文本添加内容。
在正常模式下,输入i键进入插入编辑模式
(3)推出vim
利用vim修改任何文本时,都别忘了保存。
esc键退回到正常模式中,输入:wq可保存并退出vim
安装SSH、配置SSH无密码登录
SSH登录(类似于远程登录,可以登录某台Linux主机,且在上面运行命令)在集群、单节点模式都需用到。
Ubuntu默认已安装了SSH client,此外还需要安装SSH server
sudo apt-get install openssh-server
安装后,登录本机
ssh localhost
SSH首次登录提示,输入yes再按提示输入密码,以登录本机(但该种登录方式需要密码)
- 配置SSH无密码登录
推出刚才的ssh,回到原先的终端窗口,利用ssh-keygen生成密钥,并把密钥加入到授权中
exit # 退出刚才的ssh localhost
cd ~/.ssh/ # 若没有该目录,先执行一次ssh localhost
ssh-keygen -t rsa # 会有提示,按回车即可(当前面又是$再输入下条命令)
cat ./id_rsa.pub >> ./authorized_keys #加入授权
~ :在Linux系统中,~代表的是用户的主文件夹,即"/home/用户名"。如你的用户名是hadoop,则 ~ 代表"/home/hadoop/"
#: 其后的内容为注释
此时再用ssh localhost
命令,无需输入密码就可以直接登录
安装Java环境
版本匹配:Hadoop3.1.3需要JDK版本在1.8及以上。
- 本机文件传输到虚拟机
借助FileZilla
- 在Linux命令行界面中,执行如下Shell命令(当前登录用户名是hadoop)
cd /usr/lib
sudo mkdir jvm #创建/usr/lib/jvm目录来存放JDK文件
cd ~ # 进入hadoop用户的主目录
cd Downloads # 注意区分大小写字母&刚才通过FTP软件把JDK安装包jdk.8u162-linux-x64.tar.gz上传到该目录下
sudo tar -zxvf ./jdk-8u162-linux-x64.tar.gz -C /usr/lib/jvm # 把JDK文件解压到/usr/lib/jvm目录下
(复制加shift)
- 确认是否添加成功
cd /usr/lib/jvm
ls
看到/usr/lib/jvm目录下有jd1.8.0目录
- 设置环境变量
cd ~
vim ~/.bashrc
使用vim编辑器,输入i进入编辑状态,
在文件开头添加
export JAVA_HOME=/usr/lib/jvm/jdk1.8.0_162
export JRE_HOME=${JAVA_HOME}/jre
export CLASSPATH=.:${JAVA_HOME}/lib:${JRE_HOME}/lib
export PATH=${JAVA_HOME}/bin:$PATH
按esc键退出编辑状态,输入:wq保存并退出
- 让.bashrc文件的配置立即生效
source ~/.bashrc
- 查看是否安装成功
java -version
返回版本号啥的说明🆗
安装hadoop3.1.3
hadoop3.1.3
链接:https://pan.baidu.com/s/1BnF9IaBMH8QazFe7BurxOw
提取码:j756
同上用FileZilla传到Ubuntu中,以保存在Downloads为例
sudo tar -zxf ~/Downloads/hadoop-3.1.3.tar.gz -C /usr/local # 解压到/usr/local中
cd /usr/local
sudo mv ./hadoop-3.1.3/ ./hadoop #将文件夹改为hadoop
sudo chown -R hadoop ./hadoop # 修改文件权限
hadoop解压后即可使用。
输入命令检查Hadoop是否可用,显示Hadoop版本信息即为欧克
cd /usr/local/hadoop
./bin/hadoop version
./ 相对路径,以/usr/local/hadoop为当前目录
配置方式(单机&伪单机)
Hadoop单机配置(非分布式)
Hadoop默认模式就是非分布式模式(本地模式),无需进行其他配置即可运行。
非分布式即单Java进程,方便进行调试。
运行./bin/hadoop jar ./share/hadoop/marreduce/hadoop-mapreduce-examples-3.1.3.jar
可以看到所有例子。Hadoop附带了丰富的例子,例如wordcount,terasort,join,grep
- 例如运行grep例子,把input文件夹中的所有文件作为输入,筛选当中符合正则表达式dfs[a-z.]+的单词并统计出现的次数,最后输出结果到output文件夹中
cd /usr/localhadoop
mkdir ./input
cp ./etc/hadoop/*.xml ./input #把配置文件作为输入文件
./bin/hadoop jar ./share/hadoop/mapreduce/hadoop-mapreduce-examples-3.1.3.jar grep ./input ./output 'dfs[a-z.]+'
cat ./output/* #查看运行结果(符合正则规矩的单词出现了一次)
Hadoop默认不会覆盖结果文件,则再次运行上面实例的话会提示出错,需要先把./output
删除
rm -r ./output
Hadoop伪分布式配置
- 配置
Hadoop的配置文件位于/usr/local/hadoop/etc/hadoop/中
cd /usr/local/hadoop
cd etc
cd hadoop
伪分布式需要修改两个配置文件:core-site.xml和hdfs-site.xml.
vim core-site.xml
把其中的
<configuration>
</configuration>
改为(退出的时候记得保存)
<configuration>
<property>
<name>hadoop.tmp.dir</name>
<value>file:/usr/local/hadoop/tmp</value>
<description>Abase for other temporary directories.</description>
</property>
<property>
<name>fs.defaultFS</name>
<value>hdfs://localhost:9000</value>
</property>
</configuration>
同理,把hdfs-site.xml中修改为
<configuration>
<property>
<name>dfs.replication</name>
<value>1</value>
</property>
<property>
<name>dfs.namenode.name.dir</name>
<value>file:/usr/local/hadoop/tmp/dfs/name</value>
</property>
<property>
<name>dfs.datanode.data.dir</name>
<value>file:/usr/local/hadoop/tmp/dfs/data</value>
</property>
</configuration>
Hadoop的运行方式是由配置文件决定的(运行Hadoop时会读取配置文件)。
若需要从伪分布式模式切换为非分布式模式,需要删除core-site.xml中的配置项。
- 格式化
cd /usr/local/hadoop
./bin/hdfs namenode -format
返回的一大堆信息中,后半部分有“successfully formatted”即为成功
- 启动Namenode和DataNode守护进程
cd /usr/local/hadoop # 已进入该目录则无需重复
./sbin/start-dfs.sh # start-dfs.sh是个完整的可执行文件,中间没有空格
- 检查是否启动成功
jps
若出现了以下三个进程(除jps的三个)(缺一不可),说明🆗
简单运行Hadoop伪分布式实例
创建多级目录并检查