一.部署
1. 安装jdk并配置环境变量
将jdk下载到根目录下:wget地址
解压:tar -zxvf jdk-8u172-linux-x64.tar.gz
配置环境变量:vim/etc/profile
#set java environment
export JAVA_HOME=/jdk1.8.0_172
export JAVA_BIN=/jdk1.8.0_172/bin
export PATH=$PATH:$JAVA_HOME/bin
exportCLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
export JAVA_HOME JAVA_BIN PATH CLASSPATH
生效:source/etc/profile
Java –version
(备注:oracle官方下载地址:http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html)
2. 建立hadoop用户和配置ssh
adduserhadoop
passwdhadoop
su -hadoop #一定切换到hadoop用户下
ssh-keygen -t rsa -P '' -f ~/.ssh/id_rsa
cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
chmod 0600 ~/.ssh/authorized_keys
sshlocalhost
Exit #退出的是ssh,不是hadoop用户,后面所有操作仍然在hadoop用户下
备注:第2步之后所有操作在hadoop用户下进行
3. 下载hadoop-3.1.0包到hadoop家目录下即 /home/hadoop
cd ~
wget 地址
tar xzf hadoop-3.1.0.tar.gz
mv hadoop-3.1.0 hadoop
(备注:电脑里有软件包可直接上传)
4. 配置hadoop环境变量
1)配置.bashrc
cd ~
vi .bashrc
添加如下内容:
export HADOOP_HOME=/home/hadoop/hadoop
export HADOOP_INSTALL=$HADOOP_HOME
export HADOOP_MAPRED_HOME=$HADOOP_HOME
export HADOOP_COMMON_HOME=$HADOOP_HOME
export HADOOP_HDFS_HOME=$HADOOP_HOME
export YARN_HOME=$HADOOP_HOME
exportHADOOP_COMMON_LIB_NATIVE_DIR=$HADOOP_HOME/lib/native
export PATH=$PATH:$HADOOP_HOME/sbin:$HADOOP_HOME/bin
生效:source~/.bashrc #启动
2)配置hadoop-env.sh添加JAVA路径
($HADOOP_HOME即:/home/hadoop/hadoop)
vi hadoop-env.sh
添加
export JAVA_HOME=/jdk1.8.0_172
5. 设置hadoop配置文件
cd $HADOOP_HOME/etc/hadoop/etc/Hadoop
1) 配置core-site.xml
vi core-site.xml
添加:
<configuration>
<property>
<name>fs.default.name</name>
<value>hdfs://localhost:9000</value>
</property>
</configuration>
2) 配置 hdfs-site.xml
<configuration>
<property>
<name>dfs.replication</name>
<value>1</value>
</property>
<property>
<name>dfs.name.dir</name>
<value>file:///home/hadoop/hadoopdata/hdfs/namenode</value>
</property>
<property>
<name>dfs.data.dir</name>
<value>file:///home/hadoop/hadoopdata/hdfs/datanode</value>
</property>
</configuration>
3) 配置 mapred-site.xml
<configuration>
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
</configuration>
4) 配置 yarn-site.xml
<configuration>
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
</configuration>
6. 格式化hadoop
cd ~
hdfs namenode -format
7. 启动hadoop
cd ~/Hadoop/sbin
./start-dfs.sh
./start-yarn.sh
8. UI登录hadoop
URL: Ip:9870 #记得一定打开服务器的9870端口
二.简单操作
1. 在HDFS中创建目录
$path/name #在path路径下创建目录name
如:hdfs dfs –mkdir/test #在根目录下创建了test目录
2. 放文件到HDFS
$ hdfs dfs –put file1 path1 #当前路径下的file1 放入HDFS路径path1中
如:$ hdfs dfs -put jdk-8u172-linux-x64.tar.gz/test1 #将当前路径下的jdk文件放入HDFS的/test1路径下
$ hdfs dfs-copyFromLocal path1/file path2 #path1路径下file放入HDFS的path2下
如:hdfs dfs-copyFromLocal /jdk1.8.0_172/ / #将根目录下的jdk文件放入HDFS的根路径下
3. List出HDFS中的内容
$ hdfs dfs –ls path #将HDFS中path路径中内容列出
$ hdfs dfs –ls –R path #将HDFS中path路径中内容递归列出
4. 从HDFS下载
$ hdfs dfs –get path/file #将HDFS中path路径下file下载到当前路径
hadoop命令大全:http://hadoop.apache.org/docs/r1.0.4/cn/hdfs_shell.html#FS+Shell
参考文献:
https://tecadmin.net/setup-hadoop-single-node-cluster-on-centos-redhat/
https://tecadmin.net/hadoop-commands-to-manage-files-on-hdfs/
三、填坑
创建目录时报错:
实际上这里面有两个错误:
1.util.NativeCodeLoader: Unable to load native-hadoopm... using builtin-java classes where applicable
解决方法:在log4j日志中去除告警信息
vi hadoop/etc/hadoop/log4j.properties
添加:log4j.logger.org.apache.hadoop.util.NativeCodeLoader=ERROR
2.Name node is in safe mode
分析:分布式文件系统启动时会有安全模式,当分布式文件系统处于安全模式的情况下,文件系统中的内容不允许修改也不允许删除,直到安全模式结束。在实践过程中,系统启动的时候去修改和删除文件也会有安全模式不允许修改的出错提示,只需要等待一会儿即可。可以通过命令离开安全模式。
解决方法:hdfs dfsadmin –safemode leave
安全模式说明:hdfs dfsadmin –safemode value
value:
enter - 进入安全模式
leave - 强制NameNode离开安全模式
get - 返回安全模式是否开启的信息
wait - 等待,一直到安全模式结束。