hadoop的单机配置
准备工作
利用vim /etc/sysconfig/network命令修改主机名称。
Ssh security shell
远程登录
登录远程服务器
$ ssh [email protected]
如果本地用户名与远程用户名一致,登录时可以省略用户名。
$ ssh host
提示信息
The authenticity of host ‘host (12.18.429.21)‘ can‘t be established.
RSA key fingerprint is 98:2e:d7:e0:de:9f:ac:67:28:c2:42:2d:37:16:58:4d.
Are you sure you want to continue connecting (yes/no)?
说明
这段话的意思是,无法确认host主机的真实性,只知道它的公钥指纹,问你还想继续连接吗?
所谓"公钥指纹",是指公钥长度较长(这里采用RSA算法,长达1024位),很难比对,所以对其进行MD5计算,将它变成一个128位的指纹。上例中是98:2e:d7:e0:de:9f:ac:67:28:c2:42:2d:37:16:58:4d,再进行比较,就容易多了。
很自然的一个问题就是,用户怎么知道远程主机的公钥指纹应该是多少?回答是没有好办法,远程主机必须在自己的网站上贴出公钥指纹,以便用户自行核对。
假定经过风险衡量以后,用户决定接受这个远程主机的公钥。
同意接受远程主机公钥
Are you sure you want to continue connecting (yes/no)? yes
系统提示认可
Warning: Permanently added ‘host,12.18.429.21‘ (RSA) to the list of known hosts.
输入密码
Password: (enter password)
说明
当完成以上几步以后,就可以登录到远程服务器端了。当远程主机的公钥被接受以后,它就会被保存在文件$HOME/.ssh/known_hosts之中。下次再连接这台主机,系统就会认出它的公钥已经保存在本地了,从而跳过警告部分,直接提示输入密码。这样有一个缺点,就是每一次登录的时候都要输入密码,这样的操作是比较繁琐的。
公钥登录
步骤
1、 机器A发送自己的公钥到机器B,这个时候机器B有了机器A的公钥
2、 机器B发送一个随机的字符串向机器A
3、 机器A利用自己的私钥把字符串加密
4、 机器A把加密后的字符串再次发送给机器B
5、 机器B利用公钥解密字符串,如果和原来的一样,则OK。
实现
1、 生成自己的公钥和私钥
$ ssh-keygen
2、 把生成的公钥copy到远程机器上
$ ssh-copy-id [email protected]
3、 远程主机的authorized_keys文件
在远程主机上生成了一个authorized_keys文件,保存公钥的。
4、当再次访问的时候就不需要输入密码了。
jdk安装
上传jdk
在/home下创建一个文件夹app
jdk解压到app下
调用tar –zxvf 文件的目录 的命令把jdk解压缩在app目录下
命令解释:
tar –zxvf 文件的路径
f:指定文件的名称
z:以gz结尾的文件就是用gzip压缩的结果。与gzip相对的就是gunzip,这个参数的作用就是用来调用gzip。
X:为解开的意思
Z:详细报告处理文件的信息
转到jdk的bin目录下,输出java命令
[[email protected] bin]# ./java
Usage: java [-options] class [args...]
(to execute a class)
or java [-options] -jar jarfile [args...]
(to execute a jar file)
where options include:
-d32 use a 32-bit data model if available
-d64 use a 64-bit data model if available
-server to select the "server" VM
The default VM is server.
-cp <class search path of directories and zip/jar files>
-classpath <class search path of directories and zip/jar files>
A : separated list of directories, JAR archives,
and ZIP archives to search for class files.
当离开bin这个目录,输出java命令
[[email protected] bin]# cd ..
[[email protected] jdk1.7.0_45]# java
bash: java: command not found
[[email protected] jdk1.7.0_45]#
上述的内容很简单:不识别java这个命令
设置环境变量
export JAVA_HOME=/home/app/jdk1.7.0_45/
export PATH=$PATH:$JAVA_HOME/bin
把这两行配置放入到/etc/profile以后,要做source /etc/profile这样一个命令。
这样就设置了环境变量。
Echo命令
[[email protected] /]# echo $JAVA_HOME
/home/app/jdk1.7.0_45/
可以利用该命令看环境变量。
默认的配置文件
在hadoop-hdfs.jar包中,有一个配置文件
Hadoop-default.xml文件
在hadoop-common.jar包中,有一个配置文件
core-default.xml文件
修改hadoop-env.sh
主要是修改java_home的路径,在hadoop-env.sh的第27行。
把export JAVA_HOME=${JAVA_HOME}修改成具体的路径
[[email protected] hadoop]# vim hadoop-env.sh
export JAVA_HOME=${JAVA_HOME}àexport JAVA_HOME=/home/app/jdk1.7.0_45/
[[email protected] hadoop]# source hadoop-env.sh
如果比较难找,利用: set nu命令可以显示行数
修改core-site.xml
[[email protected] hadoop]# vim core-site.xml
原来的内容:
<configuration>
</configuration>
现在的内容:
<configuration>
<property>
<name>fs.defaultFS</name> namenode的名字
<value>hdfs://zd01:9000</value> namenode的地址
</property>
<property>
<name>hadoop.tmp.dir</name> 文件存储的名称
<value>/home/app/hadoop-2.6.0/tmp</value> 文件存储的地址
</property>
文件存储路径
data节点的路径
name节点的路径
修改hdfs-site.xml
原来的内容
<configuration>
</configuration>
现在的内容:
<configuration>
<property>
<name>dfs.replication</name> //指的是hdfs的副本的数量,包括自己。
<value>3</value>
</property>
</configuration>
修改mapred-site.xml
说明:在/etc/hadoop的目录下,只有一个mapred-site.xml.template文件,所以必须改名
[[email protected] hadoop]# mv mapred-site.xml.template mapred-site.xml
在mapred-site.xml文件中
原来的文件
<configuration>
</configuration>
现在的文件
<configuration>
<property> //指明mapreduce运行在yarn上
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
</configuration>
修改yarn-site.xml
原来的值:
<configuration>
<!-- Site specific YARN configuration properties -->
</configuration>
现在的值:
<configuration>
<property>
//指定resourcemanager的地址
<name>yarn.resourcemanager.hostname</name>
<value>zd01</value>
</property>
<property>
//reduce获取数据的方式
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
</configuration>
修改slaves
存放的是datanode节点的名称
配置hadoop的环境变量
export HADOOP_HOME=/home/app/hadoop-2.6.0/
export PATH=$PATH:$HADOOP_HOME/sbin:$HADOOP_HOME/bin:$ANT_HOME/bin
格式化namenode
操作
hdfs namenode –format(Hadoop namenode –format 以前的方式)
在格式化的时候,会有这样的输出:
Storage directory /tmp/hadoop-root/dfs/name has been successfully formatted
作用
1、 清空namenode目录下的所有的文件,上图中的tmp/dfs/name下的所有的内容就是要清空的内容
2、 创建一些文件,例如:fsimage,edits文件
启动hadoop
在/home/app/hadoop-2.6.0/sbin目录下
[[email protected] sbin]# start-all.sh