1、软件环境:
master: Ubuntu-server-15.1
slaves: Ubuntu-server-15.1
slaves: Ubuntu-server-15.1
jdk:jdk1.7.0_79
hadoop:hadoop-2.6.4
2、创建master软件安装的目录: /home/hadoop
3、安装软件:
3.1、安装jdk:
rz jdk.tar.gz
tar -zxvf jdk.tar.gz
3.2、安装hadoop:
同jdk安装
4、修改主机名
修改主机名,所有节点均一样配置
4.1、连接到主节点192.168.216.131,修改 network,执行 vi /etc/hostname:hadoop1
4.2、修改 hosts文件,执行 cd /etc命令后执行 vi hosts,在行末尾添加 :
192.168.171.130 master
192.168.171.128 slaves1
192.168.171.129 slaves2
4.3、执行 hostname master
4.4、执行 exit后重新连接可看到主机名以修改 OK
其他节点也修改主机名后添加 Host,或者 host文件可以在后面执行 scp覆盖操作
5、创建账户
5.1、使用root登陆所有机器后,所有的机器都创建hadoop用户:
useradd hadoop
passwd hadoop
5.2、进入当前用户名的主文件夹,修改.profile文件
5.3、此时在 /home/下就会生成一个 hadoop目录,目录路径为 /home/hadoop
创建相关的目录
定义需要数据及目录的存放路径
定义代码及工具存放的路径
mkdir -p /home/hadoop/source
mkdir -p /home/hadoop/tools
定义数据节点存放的路径到跟目录下的hadoop文件夹,这里是数据节点存放目录需要有足够的空间存放
mkdir -p /hadoop/hdfs
mkdir -p /hadoop/tmp
mkdir -p /hadoop/log
设置可写权限
chmod -R 777 /hadoop
6、配置ssh免密登录:
在Hadoop启动以后,Namenode是通过SSH(Secure Shell)来启动和停止各个datanode上的各种守护进程的,这就须要在节点之间执行指令的时候是不须要输入密码的形式,故我们须要配置SSH运用无密码公钥认证的形式。以本文中的四台机器为例,现在Master是主节点,他须要连接Slave1、Slave2和Slave3。须要确定每台机器上都安装了ssh,并且datanode机器上sshd服务已经启动。切换到hhadoop用户( 保证用户hadoop可以无需密码登录,因为我们后面安装的hadoop属主是hadoop用户)
6.1、 在每台主机生成密钥对
#su hadoop
#ssh-keygen -t rsa
#cat ~/.ssh/id_rsa.pub
这个命令生成一个密钥对:id_rsa(私钥文件)和id_rsa.pub(公钥文件)。默认被保存在~/.ssh/目录下。
6.2、 将Master公钥添加到远程主机Slave1的 authorized_keys 文件中
在/home/hadoop/.ssh/下创建authorized_keys
#vim authorized_keys
将刚才复制的公钥复制进去
权限设置为600.(这点很重要,网没有设置600权限会导致登陆失败)
测试登陆:
$ ssh slaves1
The authenticity of host 'slave2 (192.168.137.101)' can't be established.
RSA key fingerprint is d5:18:cb:5f:92:66:74:c7:30:30:bb:36:bf:4c:ed:e9.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added 'slave2,192.168.137.101' (RSA) to the list of known hosts.
Last login: Fri Aug 30 21:31:36 2013 from slave1
[hadoop@Slave1 ~]$
同样的方法,将Master 的公钥复制到其他节点。
7、安装Hadoop
7.1、切换为hadoop用户,下载安装包后,直接解压安装即可:
#su - hadoop
#wget http://apache.stu.edu.tw/hadoop/common/hadoop-2.6.4/hadoop-2.6.4.tar.gz
#tar -zxvf hadoop-2.6.4.tar.gz
我的安装目录为:
/home/hadoop/hadoop-2.6.4
为了方便,使用hadoop命令或者start-all.sh等命令,修改Master上/etc/profile 新增以下内容:
export HADOOP_HOME=/home/hadoop/hadoop-2.6.4 #hadoop 安装目录
export PATH=$PATH:$HADOOP_HOME/bin
export PATH=$PATH:$HADOOP_HOME/sbin
export HADOOP_MAPARED_HOME=${HADOOP_HOME}
export HADOOP_COMMON_HOME=${HADOOP_HOME}
export HADOOP_HDFS_HOME=${HADOOP_HOME}
export YARN_HOME=${HADOOP_HOME}
export HADOOP_CONF_DIR=${HADOOP_HOME}/etc/hadoop
export HDFS_CONF_DIR=${HADOOP_HOME}/etc/hadoop
export YARN_CONF_DIR=${HADOOP_HOME}/etc/hadoop
修改完毕后,执行source /etc/profile 来使其生效。
7.2、 配置etc/hadoop/hadoop-env.sh文件
配置etc/hadoop/hadoop-env.sh文件,添加:
export JAVA_HOME=/home/data/jdk1.7.0_79
这里修改为你的jdk的安装位置。
测试hadoop安装:
/home/hadoop/hadoop-2.6.4/bin/hadoop jar hadoop-0.20.2-examples.jarwordcount conf/ /tmp/out
8、配置集群
8.1、core-site.xml配置:在configuration节点里面添加属性
<property>
<name>hadoop.tmp.dir</name>
<value>/hadoop/tmp</value>
<description>A base for other temporary directories.</description>
</property>
<property>
<name>fs.default.name</name>
<value>hdfs://192.168.171.130:9000</value>
</property>
8.2、slave配置
vim /home/spark/hadoop-2.6.4/etc/hadoop/slaves
添加 slave的 IP
192.168.171.130
192.168.171.128
192.168.171.129
8.3、配置hdfs-site.xml:
vim /home/spark/hadoop-2.6.4/etc/hadoop/hdfs-site.xml
添加节点
<property>
<name>dfs.replication</name>
<value>2</value>
</property>
master: Ubuntu-server-15.1
slaves: Ubuntu-server-15.1
slaves: Ubuntu-server-15.1
jdk:jdk1.7.0_79
hadoop:hadoop-2.6.4
2、创建master软件安装的目录: /home/hadoop
3、安装软件:
3.1、安装jdk:
rz jdk.tar.gz
tar -zxvf jdk.tar.gz
3.2、安装hadoop:
同jdk安装
4、修改主机名
修改主机名,所有节点均一样配置
4.1、连接到主节点192.168.216.131,修改 network,执行 vi /etc/hostname:hadoop1
4.2、修改 hosts文件,执行 cd /etc命令后执行 vi hosts,在行末尾添加 :
192.168.171.130 master
192.168.171.128 slaves1
192.168.171.129 slaves2
4.3、执行 hostname master
4.4、执行 exit后重新连接可看到主机名以修改 OK
其他节点也修改主机名后添加 Host,或者 host文件可以在后面执行 scp覆盖操作
5、创建账户
5.1、使用root登陆所有机器后,所有的机器都创建hadoop用户:
useradd hadoop
passwd hadoop
5.2、进入当前用户名的主文件夹,修改.profile文件
5.3、此时在 /home/下就会生成一个 hadoop目录,目录路径为 /home/hadoop
创建相关的目录
定义需要数据及目录的存放路径
定义代码及工具存放的路径
mkdir -p /home/hadoop/source
mkdir -p /home/hadoop/tools
定义数据节点存放的路径到跟目录下的hadoop文件夹,这里是数据节点存放目录需要有足够的空间存放
mkdir -p /hadoop/hdfs
mkdir -p /hadoop/tmp
mkdir -p /hadoop/log
设置可写权限
chmod -R 777 /hadoop
6、配置ssh免密登录:
在Hadoop启动以后,Namenode是通过SSH(Secure Shell)来启动和停止各个datanode上的各种守护进程的,这就须要在节点之间执行指令的时候是不须要输入密码的形式,故我们须要配置SSH运用无密码公钥认证的形式。以本文中的四台机器为例,现在Master是主节点,他须要连接Slave1、Slave2和Slave3。须要确定每台机器上都安装了ssh,并且datanode机器上sshd服务已经启动。切换到hhadoop用户( 保证用户hadoop可以无需密码登录,因为我们后面安装的hadoop属主是hadoop用户)
6.1、 在每台主机生成密钥对
#su hadoop
#ssh-keygen -t rsa
#cat ~/.ssh/id_rsa.pub
这个命令生成一个密钥对:id_rsa(私钥文件)和id_rsa.pub(公钥文件)。默认被保存在~/.ssh/目录下。
6.2、 将Master公钥添加到远程主机Slave1的 authorized_keys 文件中
在/home/hadoop/.ssh/下创建authorized_keys
#vim authorized_keys
将刚才复制的公钥复制进去
权限设置为600.(这点很重要,网没有设置600权限会导致登陆失败)
测试登陆:
$ ssh slaves1
The authenticity of host 'slave2 (192.168.137.101)' can't be established.
RSA key fingerprint is d5:18:cb:5f:92:66:74:c7:30:30:bb:36:bf:4c:ed:e9.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added 'slave2,192.168.137.101' (RSA) to the list of known hosts.
Last login: Fri Aug 30 21:31:36 2013 from slave1
[hadoop@Slave1 ~]$
同样的方法,将Master 的公钥复制到其他节点。
7、安装Hadoop
7.1、切换为hadoop用户,下载安装包后,直接解压安装即可:
#su - hadoop
#wget http://apache.stu.edu.tw/hadoop/common/hadoop-2.6.4/hadoop-2.6.4.tar.gz
#tar -zxvf hadoop-2.6.4.tar.gz
我的安装目录为:
/home/hadoop/hadoop-2.6.4
为了方便,使用hadoop命令或者start-all.sh等命令,修改Master上/etc/profile 新增以下内容:
export HADOOP_HOME=/home/hadoop/hadoop-2.6.4 #hadoop 安装目录
export PATH=$PATH:$HADOOP_HOME/bin
export PATH=$PATH:$HADOOP_HOME/sbin
export HADOOP_MAPARED_HOME=${HADOOP_HOME}
export HADOOP_COMMON_HOME=${HADOOP_HOME}
export HADOOP_HDFS_HOME=${HADOOP_HOME}
export YARN_HOME=${HADOOP_HOME}
export HADOOP_CONF_DIR=${HADOOP_HOME}/etc/hadoop
export HDFS_CONF_DIR=${HADOOP_HOME}/etc/hadoop
export YARN_CONF_DIR=${HADOOP_HOME}/etc/hadoop
修改完毕后,执行source /etc/profile 来使其生效。
7.2、 配置etc/hadoop/hadoop-env.sh文件
配置etc/hadoop/hadoop-env.sh文件,添加:
export JAVA_HOME=/home/data/jdk1.7.0_79
这里修改为你的jdk的安装位置。
测试hadoop安装:
/home/hadoop/hadoop-2.6.4/bin/hadoop jar hadoop-0.20.2-examples.jarwordcount conf/ /tmp/out
8、配置集群
8.1、core-site.xml配置:在configuration节点里面添加属性
<property>
<name>hadoop.tmp.dir</name>
<value>/hadoop/tmp</value>
<description>A base for other temporary directories.</description>
</property>
<property>
<name>fs.default.name</name>
<value>hdfs://192.168.171.130:9000</value>
</property>
8.2、slave配置
vim /home/spark/hadoop-2.6.4/etc/hadoop/slaves
添加 slave的 IP
192.168.171.130
192.168.171.128
192.168.171.129
8.3、配置hdfs-site.xml:
vim /home/spark/hadoop-2.6.4/etc/hadoop/hdfs-site.xml
添加节点
<property>
<name>dfs.replication</name>
<value>2</value>
</property>
<property>
<name>dfs.namenode.name.dir</name>
<value>file:/hadoop/hdfs/name</value>
<final>true</final>
</property>
<property>
<name>dfs.federation.nameservice.id</name>
<value>ns1</value>
</property>
<property>
<name>dfs.namenode.backup.address.ns1</name>
<value>192.168.171.130:50100</value>
</property>
<property>
<name>dfs.namenode.backup.http-address.ns1</name>
<value>192.168.171.130:50105</value>
</property>
<property>
<name>dfs.federation.nameservices</name>
<value>ns1</value>
</property>
<property>
<name>dfs.namenode.rpc-address.ns1</name>
<value>192.168.171.130:9000</value>
</property>
<property>
<name>dfs.namenode.rpc-address.ns2</name>
<value>192.168.171.130:9000</value>
</property>
<property>
<name>dfs.namenode.http-address.ns1</name>
<value>192.168.171.130:23001</value>
</property>
<property>
<name>dfs.namenode.http-address.ns2</name>
<value>192.168.171.130:13001</value>
</property>
<property>
<name>dfs.dataname.data.dir</name>
<value>file:/hadoop/hdfs/data</value>
<final>true</final>
</property>
<property>
<name>dfs.namenode.secondary.http-address.ns1</name>
<value>192.168.171.130:23002</value>
</property>
<property>
<name>dfs.namenode.secondary.http-address.ns2</name>
<value>192.168.171.130:23002</value>
</property>
<property>
<name>dfs.namenode.secondary.http-address.ns1</name>
<value>192.168.171.130:23003</value>
</property>
<property>
<name>dfs.namenode.secondary.http-address.ns2</name>
<value>192.168.171.130:23003</value>
</property>
8.4、配置yarn-site.xml
添加节点
<property>
<name>yarn.resourcemanager.address</name>
<value>192.168.171.130:18040</value>
</property>
<property>
<name>yarn.resourcemanager.scheduler.address</name>
<value>192.168.171.130:18030</value>
</property>
<property>
<name>yarn.resourcemanager.webapp.address</name>
<value>192.168.171.130:18088</value>
</property>
<property>
<name>yarn.resourcemanager.resource-tracker.address</name>
<value>192.168.171.130:18025</value>
</property>
<property>
<name>yarn.resourcemanager.admin.address</name>
<value>192.168.171.130:18141</value>
</property>
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
<property>
<name>yarn.nodemanager.aux-services.mapreduce.shuffle.class</name>
<value>org.apache.hadoop.mapred.ShuffleHandler</value>
</property>
<property>
<name>yarn.log-aggregation-enable</name>
<value>true</value>
</property>
<property>
<name>yarn.log.server.url</name>
<value>http://192.168.171.130:19888/jobhistory/logs</value>
</property>
<property>
<name>yarn.application.classpath</name>
<value>
/home/hadoop/hadoop-2.6.4/etc/*,
/home/hadoop/hadoop-2.6.4/etc/hadoop/*,
/home/hadoop/hadoop-2.6.4/lib/*,
/home/hadoop/hadoop-2.6.4/share/hadoop/common/*,
/home/hadoop/hadoop-2.6.4/share/hadoop/common/lib/*,
/home/hadoop/hadoop-2.6.4/share/hadoop/mapreduce/*,
/home/hadoop/hadoop-2.6.4/share/hadoop/mapreduce/lib/*,
/home/hadoop/hadoop-2.6.4/share/hadoop/hdfs/*,
/home/hadoop/hadoop-2.6.4/share/hadoop/hdfs/lib/*,
/home/hadoop/hadoop-2.6.4/share/hadoop/yarn/*,
/home/hadoop/hadoop-2.6.4/share/hadoop/yarn/lib/*
</value>
</property>
8.5、配置mapred-site.xml
添加节点
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
<property>
<name>mapreduce.jobhistory.address</name>
<value>192.168.171.130:10020</value>
<description>MapReduce JobHistory Server IPC host:port</description>
</property>
<property>
<name>mapreduce.jobhistory.webapp.address</name>
<value>192.168.171.130:19888</value>
<description>MapReduce JobHistory Server Web UI host:port</description>
</property>
<property>
<name>mapred.child.java.opts</name>
<value>-Xmx3000m -Xmx3000m -XX:-UseGCOverheadLimit</value>
</property>
<property>
<name>mapreduce.reduce.memory.mb</name>
<value>4096</value>
</property>
<property>
<name>mapreduce.map.memory.mb</name>
<value>4096</value>
</property>
<property>
<name>mapreduce.task.timeout</name>
<value>600000</value>
</property>
8.6、配置httpfs-site.xml
添加 httpfs的选项
<property>
<name>hadoop.proxyuser.root.hosts</name>
<value>192.168.171.130</value>
</property>
<property>
<name>hadoop.proxyuser.root.groups</name>
<value>*</value>
</property>
9、同步代码到其他机器
9.1、同步配置代码
master# scp -r /home/hadoop/hadoop-2.6.4 root@slaves1:/home/hadoop/
master# scp -r /home/hadoop/hadoop-2.6.4 root@slaves2:/home/hadoop/
9.2、同步 /etc/profile
9.3、同步 /etc/hosts
#scp -r /etc/profile root@slaves1:/etc/profile
#scp -r /etc/profile root@slaves2:/etc/profile
#scp -r /etc/hosts root@slaves1:/etc/hosts
#scp -r /etc/hosts root@slaves2:/etc/hosts
其他机器以此操作
10、Hadoop启动
格式化集群
hadoop namenode -format -clusterid clustername
hdfs namenode -format
/home/hadoop/hadoop-2.6.4/sbin
启动hdfs执行,开启 hadoop dfs服务:
start-dfs.sh
启动Yarn
开启 yarn资源管理服务:
start-yarn.sh
hadoop-daemons.sh start secondarynamenode
启动日志服务
mr-jobhistory-daemon.sh start historyserver
启动httpfs,使得对外可以提高 http的restful接口服务:
开启 httpfs服务
httpfs.sh start
11、测试
安装结果验证
验证hdfs
在各台机器执行 jps看进程是否都已经启动了
[root@master hadoop]# jps
7396 NameNode
24834 Bootstrap
7594 SecondaryNameNode
7681 ResourceManager
32261 Jps
[root@slaves1 ~]# jps
8966 Jps
31822 DataNode
31935 NodeManager
进程启动正常
查看集群状态
查看hdfs:http://192.168.171.130:50070/
查看RM:http://192.168.171.130:8088/
验证是否可以登陆
hadoop fs -ls hdfs://192.168.171.130:9000/
hadoop fs -mkdir hdfs://192.168.171.130:9000/testfolder
hadoop fs -copyFromLocal ./testData hdfs://192.168.171.130:9000/testfolder
hadoop fs -ls hdfs://192.168.171.130:9000/testfolder
hadoop fs -copyFromLocal article.log hdfs://192.168.171.130:9000/testfolder/testData/
hadoop jar ../share/hadoop/mapreduce/hadoop-mapreduce-examples-2.6.4.jar wordcount hdfs://192.168.171.130:9000/testfolder/testData/article.log hdfs://192.168.171.130:9000/testfolder/oup_put
看以上执行是否正常