安装并使用多种方法配置Hadoop。html
sudo useradd –m hadoop –s /bin/bash
sudo passwd hadoop
sudo adduser hadoop sudo
openssh
/home/hadoop
目录下有无.ssh
文件夹,若无,则建立mkdir ~/.ssh
,修改权限 chmod 700 ~/.ssh
ssh-keygen –t rsa
生成公钥和私钥 (一路回车)cat ./id_rsa.pub >> ./authorized_keys
将密钥加入受权ssh localhost
进行测试
首先确保Linux系统中已经装好Javajava
在oracle官网安装最新版本。node
默认下载到download
目录linux
当前目录下进行解压web
tar -xvf jdk-8u161-linux-x64.tar.gz
移动到目录/usr/local/Java
正则表达式
配置环境变量(vim ~/.bashrc
)shell
#JAVA export JAVA_HOME=/usr/local/Java/jdk1.8.0_181/ export JRE_HOME=$JAVA_HOME/jre export PATH=$JAVA_HOME/bin:$JRE_HOME/bin:$PATH export CLASSPATH=$JAVA_HOME/lib:$JRE_HOME/lib:.
退出后刷新source ~/.bashrc
apache
测试java -version
编程
下载清华的镜像vim
默认下载到download
解压到/usr/local
sudo tar -zxf ./hadoop-3.1.1.tar.gz -C /usr/local
切换到解压目录并修改文件权限
cd /usr/local sudo mv ./hadoop-3.1.1 ./hadoop #重命名 sudo chown -R hadoop ./hadoop # 修改文件权限
查看版本号及是否安装好
cd /usr/local/hadoop
./bin/hadoop version
设置环境变量,以便直接使用hadoop命令
进入vim /.bashrc
export HADOOP_HOME=/usr/local/hadoop export PATH=$PATH:/usr/local/hadoop/bin
直接输入hadoop
看是否成功
bin
:Hadoop最基本的管理脚本和使用脚本的目录,这些脚本是sbin目录下管理etc
:Hadoop配置文件所在的目录,包括core-site,xml、hdfs-site.xml、mapredsite.xml
等include
:对外提供的编程库头文件(具体动态库和静态库在lib目录中),这些头lib
:该目录包含了Hadoop对外提供的编程动态库和静态库,与include目录中的libexec
:各个服务对用的shell配置文件所在的目录,可用于配置日志输出、启动sbin
:Hadoop管理脚本所在的目录,主要包含HDFS和YARN中各种服务的启动/关share
:Hadoop各个模块编译后的jar包所在的目录默认为非分布式模式,无须进行其余配置便可运行。附带了不少例子,能够直接查看全部例子:
cd /usr/local/hadoop
hadoop jar ./share/hadoop/mapreduce/hadoop-mapreduce-examples-3.1.1.jar
会显示grep
,join
,wordcount
等例子
这里选择grep
例子,流程为先建一个input
文件夹,并复制一些文件到该文件;而后运行grep
程序,将input
文件夹的全部文件做为grep
的输入,让grep
程序从全部文件中筛选出符合正则表达式的单词,并输出结果到output
mkdir input cp ./etc/hadoop/*.xml ./input hadoop jar ./share/hadoop/mapreduce/hadoop-mapreduce-examples-3.1.1.jar grep ./input ./output 'dfs[a-z.]+'
这里须要注意的是,hadoop默认要求输出output
不存在,若存在则会报错
查看运行结果cat ./output/*
/usr/local/hadoop/etc/hadoop/
中,伪分布式须要修改2个配置文件 core-site.xml
和 hdfs-site.xml
xml
格式,每一个配置以声明 property
的 name
和 value
的方式来实现vim core-site.xml
<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>
hadoop.tmp.dir
表示存放临时数据的目录,即包括NameNode
的数据,也包括DataNode
的数据。该路径任意指定,只要实际存在该文件夹便可name
为fs.defaultFS
的值,表示hdfs
路径的逻辑名称vim 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>
dfs.replication
表示副本的数量,伪分布式要设置为1
dfs.namenode.name.dir
表示名称节点的元数据保存目录
dfs.datanode.data.dir
表示数据节点的数据保存目录
cd /usr/local/hadoop/
./bin/hdfs namenode -format
若成功,则显示
执行命令:
cd /usr/local/hadoop
./sbin/start-dfs.sh
若出现报错:
则表示JAVA_HOME
目录没有设置对,若是以前使用Java没有问题,则直接进入Hadoop环境中设置
cd /usr/local/hadoop/etc/hadoop
vim hadoop-env.sh
直接添加本身电脑里的Java_HOME
路径,如:
再次启动
判断是否启动成功
http://localhost:9870/
,可访问NameNode。cd /usr/local/hadoop
./sbin/stop-dfs.sh
下次启动时,无须再进行名称节点的格式化
hadoop fs
hadoop fs
适用于任何不一样的文件系统,好比本地文件系统和HDFS文件系统hadoop dfs
hadoop dfs
只能适用于HDFS文件系统hdfs dfs
hdfs dfs
跟hadoop dfs
的命令做用同样,也只能适用于HDFS文件系统还原单机模型的grep
例子
cd /usr/local/hadoop ./bin/hdfs dfs –mkdir –p /user/hadoop # 在HDFS中为hadoop用户建立目录(Linux文件系统中不可见) ./bin/hdfs dfs –mkdir input # 在HDFS中建立hadoop用户对应的input目录 ./bin/hdfs dfs –put ./etc/hadoop/*.xml input # 将本地文件复制到HDFS中 ./bin/hdfs dfs –ls input # 查看HDFS中的文件列表 ./bin/hadoop jar ./share/hadoop/mapreduce/hadoop-mapreduce-examples-2.7.3.jar grep input output ‘dfs[a-z.]+’ ./bin/hdfs dfs -cat output/* #查看运行结果
可能出现警告信息,可忽略
查看文件列表
最后结果