一、免秘钥
1、生成秘钥
ssh-keygen -t dsa -P '' -f /root/.ssh/id_dsa
-t:类型
-P:密码
-f:文件生成路径(公钥)
2、对自己免密钥
ls -a:显示隐藏文件
cat ~/.ssh/id_dsa.pub >> ~/.ssh/authorized_keys
ssh root@node01
二、JDK配置环境(rpm安装)
1、查看JDK状态
java -version
jps
2、修改/etc/profile文件,并添加内容:
export JAVA_HOME=/usr/java/jdk1.7.0_67
export PATH=$PATH:$JAVA_HOME/bin(windows拼接是分号,linux是冒号)
3、加载/etc/profile文件
三、配置Hadoop
1、解压Hadoop-2.6.5.tar
tar -xcf hadoop-2.6.5.tar.gz
2、配置环境变量(记得加载profile文件)
vi /etc/profile
export JAVA_HOME=/usr/java/jdk1.7.0_67
export HADOOP_HOME=/opt/hadoop-2.6.5
export PATH=$PATH:$JAVA_HOME/bin:$HADOOP_HOME/bin:$HADOOP_HOME/sbin
3、二次配置JDK,避免远程登录时不加载profile文件的问题
vi hadoop-env.sh
export JAVAHOME=/usr/java/jdk1.7.0_67
vi mapred-env.sh(d$:删除当前光标到行尾的内容)
export JAVAHOME=/usr/java/jdk1.7.0_67
vi yarn-env.sh
export JAVAHOME=/usr/java/jdk1.7.0_67
TIPS:不需要手动执行,因为是管理脚本,使用时会加载配置。
4、配置NameNode
http://hadoop.apache.org/docs/stable/hadoop-project-dist/hadoop-common/SingleCluster.html
etc/hadoop/core-site.xml(NameNode):
<property>
<name>fs.defaultFS</name>
<value>hdfs://node01:9000</value>
</property>
etc/hadoop/hdfs-site.xml(副本数):
<property>
<name>dfs.replication</name>
<value>1</value>
</property>
5、配置DateNode
vi salves
6、配置hadoop临时目录
http://hadoop.apache.org/docs/stable/hadoop-project-dist/hadoop-hdfs/hdfs-default.xml
http://hadoop.apache.org/docs/stable/hadoop-project-dist/hadoop-common/core-default.xml
发现NameNode元数据和DataNode数据的存放目录都指向${hadoop.tmp.dir}
而${hadoop.tmp.dir}指向的是linux的临时目录,当空间不够时,linux内核自动清理。
解决方案:
修改etc/hadoop/core-site.xml
<property>
<name>hadoop.tmp.dir</name>
<value>/var/hadoop/local</value> #空的,不需要手动创建
</property>
7、配置SecondaryNameNode
http://hadoop.apache.org/docs/stable/hadoop-project-dist/hadoop-hdfs/hdfs-default.xml
etc/hadoop/hdfs-site.xml:
<property>
<name>dfs.namenode.secondary.http-address</name>
<value>node01:50090</value>
</property>
8、格式化NameNode
hdfs namenode -format
9、查看NameNode的clusterID(用于心跳汇报时校验)
cd /var/hadoop/local/dfs/name/current/
cat VERSION
10、启动
start-dfs.sh
查看日志:依次启动NN、DN、SNN,并定义了相应的日志文件目录。
11、查看目录
cd /var/hadoop/local/dfs/
TIPS:
会出现name和data目录,如果是完全分布式,NN启动那台机器只有name,DN那台机器只有data,当然你那台机器配置SNN,那么也会出现namesecondary。
12、查看DataNode的clusterID(用于心跳汇报时校验)
cd /var/hadoop/local/dfs/data/current/
cat VERSION
TIPS:
开始NN初始化,创建VERSION文件,DN是没有VERSION,NN启动后,DN启动时,DN和NN交互回来同样的VERSION文件,如果NN再次初始化,重新生成了VERSION文件,clusterID改变了,DN还是原来的clusterID,那么DN会直接退出进程。
13、图形化界面
查看NameNode
查看DataNode
14、查看HDFS相关命令
TIPS:
dfs - run a filesystem command on the file systems supported in Hadoop.
在Hadoop支持的文件系统上运行文件系统命令。意思就是在HDFS中维护了一些命令,帮助你操作(增删查改)这些文件。
15、创建HDFS的家目录
hdfs dfs -mkdir -p /user/root
16、存文件到HDFS的家目录/user/root
hdfs dfs -put hadoop-2.6.5.tar.gz /user/root
17、Block信息
18、自定义Block大小为1M(默认Hadoop 1.0是64M,Hadoop 2.0是128M)
http://hadoop.apache.org/docs/stable/hadoop-project-dist/hadoop-hdfs/hdfs-default.xml
准备一个文件
for i in `seq 100000`; do echo "hello world $i" >> temp.txt; done
保存文件
hdfs dfs -D use value for given property >> 使用给定参数的值
hdfs dfs -D dfs.blocksize=1048576 -put temp.txt
查看文件
19、查看Block数据
在DataNode目录下查找Block Pool ID
TIPS:
一共8个目录文件,每个Block有一个元数据文件,取文件Block时用来校验。此时是存了两个文件,一共四个块。
1073741829和1073741830是temp.txt文件的块,另外两个是压缩包的块。
TIPS:
HDFS切割是按字节的
20、停止HDFS
stop-dfs.sh