目录
1.搭建hadoop要求:
2.创建虚拟机
3. 免用户名登录
4. 免用户名登录
5. 配置hadoop
6. 参看文章:
7. 关于hadoop各个文件配置的详解:
note:
共创建3个虚拟机:master,slave1,slave2。这里用户均设置为hadoop
3个虚拟机的网络设置: 桥接
在linux下,要远程连接另外一台linux服务器,可以使用ssh:
ssh [email protected]
这样输入用户名和IP很麻烦。 在用户根目录下的.ssh文件内创建config文件(若没有config, 用touch config创建),如下:
在其中以类似如下的格式输入要登陆的服务器的相关信息:
Host servername
User username
Hostname serverIP
其中的servername是服务器的别名,username是用户名,serverIP就是这台服务器的IP。比如最前面的那个登陆命令,就可以写成下面的形式:
# [email protected]的别名
Host server18
User hadoop
Hostname 192.168.0.222
virtualbox创建的3台虚拟机的config文件均设置:
# namenode设置为master
Host master
# namenode节点的用户名
User hadoop
# namenode节点的IP
Hostname 58.198.176.202
# dataname设置为slave1
Host slave1
User hadoop
# dataname的IP
Hostname 58.198.176.34
Host slave2
User Hadoop
Hostname 58.198.177.6
这样可以直接:
hadoop@master:~$ ssh slave1
之后输入密码,方便登录。
通过私匙和公匙实现免密码登录。具体原理参考如下链接:
https://www.cnblogs.com/kex1n/p/6017963.html
实现在master下免密码登录slave1
ssh-keygen -t rsa
然后按三下回车之后,会在.ssh目录下按照rsa算法生成id_rsa私匙和id_rsa.pub公匙
cat id_rsa.pub >> authorized_keys
在.ssh目录下生成authorized_keys文件(authorized_keys文件的必须属于hadoop用户)
参考:https://www.cnblogs.com/xiaochangwei/p/7466893.html
设置hadoop环境变量
sudo gedit /etc/profile
export HADOOP_HOME=/home/hadoop/hadoop-2.7.4
export PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin
export HADOOP_CONF_DIR=$HADOOP_HOME/etc/hadoop
export YARN_CONF_DIR=$HADOOP_HOME/etc/hadoop
#别忘记source
source /etc/profile
sudo gedit /home/hadoop/hadoop-2.7.4/etc/hadoop/mapred-env.sh 设置: export JAVA_HOME=usr/local/java/jdk1.8.0_181
source /home/hadoop-2.7.4/etc/hadoop/hadoop-env.sh
fs.defaultFS
hdfs://master:9000
设定namenode的主机名及端口(建议不要更改端口号)
io.file.buffer.size
131072
设置缓存大小
hadoop.tmp.dir
file:/home/hadoop/hadoop-2.7.4/tmp
存放临时文件的目录
hadoop.security.authorization
false
dfs.namenode.name.dir
file:/home/hadoop/hadoop-2.7.4/hdfs/name
namenode 用来持续存放命名空间和交换日志的本地文件系统路径
dfs.datanode.data.dir
file:/home/hadoop/hadoop-2.7.4/hdfs/data
DataNode 在本地存放块文件的目录列表,用逗号分隔
dfs.replication
2
设定 HDFS 存储文件的副本个数,默认为3
dfs.webhdfs.enabled
true
dfs.permissions
false
mapreduce.framework.name
yarn
true
mapreduce.jobtracker.http.address
master:50030
mapreduce.jobhistory.address
master:10020
mapreduce.jobhistory.webapp.address
master:19888
mapred.job.tracker
http://master:9001
yarn.nodemanager.aux-services
mapreduce_shuffle
yarn.nodemanager.aux-services.mapreduce.shuffle.class
org.apache.hadoop.mapred.ShuffleHandler
yarn.resourcemanager.address
master:8032
yarn.resourcemanager.scheduler.address
master:8030
yarn.resourcemanager.resource-tracker.address
master:8031
yarn.resourcemanager.admin.address
master:8033
yarn.resourcemanager.webapp.address
master:8088
在每个节点上创建数据存储目录/home/hadoop/hadoop-2.7.4/hdfs 用来存放集群数据。
在主节点node上创建目录/home/hadoop/hadoop-2.7.4/hdfs/name 用来存放文件系统元数据。
在每个从节点上创建目录/home/hadoop/hadoop-2.7.4/hdfs/data 用来存放真正的数据。
所有节点上的日志目录为/home/hadoop/hadoop-2.7.4/logs
所有节点上的临时目录为/home/hadoop/hadoop-2.7.4/tmp
scp -r /home/hadoop/hadoop-2.7.4 slave1:/home/hadoop/hadoop-2.7.4 scp -r /home/hadoop/hadoop-2.7.4 slave2:/home/hadoop/hadoop-2.7.4
sudo gedit /home/hadoop-2.7.4/etc/hadoop/slaves
增加
salve1
slave2
/home/hadoop/hadoop-2.7.4/bin/hadoop namenode -format /home/hadoop/hadoop-2.7.4/bin/hadoop datanode -format /home/hadoop/hadoop-2.7.4/sbin/start-all.sh
[hadoop@master ~]# jps
9187 Jps
3221 ResourceManager
3062 SecondaryNameNode
2856 NameNode
[hadoop@master ~]# ssh slave1
Last login: Sat Sep 2 00:25:55 2017 from master
[hadoop@slave1 ~]# jps
6044 Jps
2685 NodeManager
2590 DataNode
[hadoop@slave1 ~]# ssh slave2
Last login: Wed Aug 30 21:34:38 2017 from master
[hadoop@slave2 ~]# jps
2679 NodeManager
5994 Jps
2590 DataNode
说明hadoop启动成功
https://www.cnblogs.com/xiaochangwei/p/7466893.html
https://www.cnblogs.com/kex1n/p/6017963.html
以后有时间好好看下