一、安装Hadoop
下载地址:
https://www.apache.org/dyn/closer.cgi/hadoop/common/hadoop-3.3.1/hadoop-3.3.1.tar.gz
二、解压文件
1.解压文件
sudo tar -zxf ~/Downloads/hadoop-3.3.1.tar.gz -C /usr/local
2.修改文件名以及权限
cd /usr/local
sudo mv ./hadoop-3.3.1 ./hadoop
sudo chown -R y ./hadoop
y是我的用户名
三、查看版本信息
hadoop/bin/hadoop version
由于我这里还没安装java,没配置环境查看不了。四、创建hadoop用户
sudo useradd -m hadoop -s /bin/bash 创建新用户
sudo passwd hadoop 为用户设置密码
sudo adduser hadoop sudo 为用户设置管理权限
2、更新apt
sudo apt-get update
3、安装ssh server 和配置ssh
集群,单节点模式都需要用到ssh登录,默认ubuntu上面已经有ssh client,还需要安装ssh server
sudo apt-get install openssh-server
设置无密码登录
将生成的SSH的公钥加入目标机器的SSH目录下,这里采用cat命令与>>,cat file1>>file2的含义为将file1内容append到file2中。
hadoop@ubuntu:~/.ssh$ cat ./id_rsa.pub >> ./authorized_keys安装完成之后,查看ssh是否启动
sudo /etc/init.d/ssh status
如果没有启动,使用一下命令启动:
sudo /etc/init.d/ssh start
4、java环境变量的配置
下载安装linux 64位的jdk
下载地址:
https://www.oracle.com/java/technologies/downloads/#java8
创建java目录存放jdk文件
修改文件名
配置环境变量:
vim ~/.bashrc
在末尾添加这一段
export JAVA_HOME=/usr/local/lib/java/jdk1.8
export JRE_HOME={JAVA_HOME}/lib:{JAVA_HOME}/bin:$PATH
然后
source ~/.bashrc
java -version
hadoop的java环境变量配置
添加这一句:export JAVA_HOME=/usr/local/lib/java/jdk1.8
然后执行命令和查看版本信息:
运行WordCount例子:
hadoop@ubuntu:/usr/local/hadoop$ sudo mkdir input
hadoop@ubuntu:/usr/local/hadoop$ sudo cp ./etc/hadoop/.xml ./input
hadoop@ubuntu:/usr/local/hadoop$ sudo ./bin/hadoop jar /usr/local/hadoop/share/hadoop/mapreduce/hadoop-mapreduce-examples-.jar grep ./input ./output ‘dfs[a-z.]+’执行
hadoop@ubuntu:/usr/local/hadoop$ cat ./output/*
可以得出一下结果:
五、Hadoop伪分布式安装:
在配置文件./etc/hadoop下,修改两个配置文件:
①core-site.xml文件:
hadoop.tmp.dir
file:/usr/local/hadoop/tmp
Abase for other temporary directories.
fs.defaultFS
hdfs://localhost:9000
②修改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
如果需要从伪分布式模式切换回非分布式模式,需要删除core-site.xml 中的配置项
输入命令: ./bin/hdfs namenode -format
结果如下:
以下是遇到的问题:
第一个:
1、启动不了进程,这里是因为在ssh没有设置免密登录。
2、将start-dfs.sh,stop-dfs.sh(在hadoop安装目录的sbin里)两个文件顶部添加以下参数
3、将start-yarn.sh,stop-yarn.sh(在hadoop安装目录的sbin里)两个文件顶部添加以下参数
第二个:
是因为logs文件没有权限。
修改logs文件权限
sudo chmod 777 logs
y@ubuntu:/usr/local/hadoop$ sudo chmod 777 logs第三个:进程占用
第四个还是启动不了所有进程:
然后就在etc/hadoop/hadoop-env.sh最后一行加上HADOOP_SHELL_EXECNAME=root
隔了一周没启动,现在启动不会有上面的错误,但是进程没够六个
修改core-site.xml配置文件中的配置中的目录下的文件的权限,然就启动就多了两个进程
第六个问题:
namenodes进程还是没有,
开启防火墙
关闭防火墙
还是namenodes进程没找到。进行以下几个修改:
然后我修改用户对Hadoop目录的操作权限:sudo chown -R hadoop /usr/local/hadoop
删掉原来的tmp目录,重新启动要用 ./bin/hdfs namenode -format启动 不能用sudo ./bin/hdfs namenode -format
然后就有了namenode进程了。浏览器访问localhost:9870
运行实例:
输入一下命令:
./bin/hadoop jar ./share/hadoop/mapreduce/hadoop-mapreduce-examples-3.3.1.jar grep input output ‘dfs[a-z.]+’
第七第八个问题
运行实例执行jar 命令时,这里出现了两个错误,一个配置伪分布式时修改了mapred-site.xml 和yarn-site.xml 文件,是不用修改的,删掉原来的修改,
然后运行再次jar命令时,报错:
Java HotSpot™ 64-Bit Server VM warning: INFO: os::commit_memory(0x00000000e9100000, 105381888, 0) failed; error=‘Cannot allocate memory’ (errno=12)
就是内存不够,然后我把一些进程给关了,然后就可以了
ok!
就简简单单的Hadoop环境配置,但是遇到了很多问题,一开始我在网上随便找一个教程就配置环境了,这不是很可以,他的版本与我的版本不一样等等原因,就出现了很多问题。建议找一个比较详细的而且版本相同的教程进行配置。