伪分布式安装时指在一台机器上模拟一个小的集群,但是集群中只有一个节点。
当Hadoop应用于集群时,都需要通过配置文件对各组件的协同工作进行设置
文件名称 | 格式 | 描述 |
---|---|---|
hadoop-env.sh | Bash脚本 | 记录配置Hadoop运行所需的环境变量,以运行Hadoop |
core-site.xml | Hadoop配置XML | Hadoop core的配置项,如HDFS和MapReduce常用的I/O设置等 |
hdfs-site.xml | Hadoop配置XML | Hadoop 守护进程的配置项,包括NameNode、Secondary NameNode 和 DataNode等 |
mapred-site.xml | Hadoop 配置XML | MapReduce守护进程的配置项,包括JobTracker 和 TaskTracker |
masters | 纯文本 | 运行SecondaryNameNode的机器列表(每行一个) |
slaves | 纯文本 | 运行DataNode和TaskTracker的机器列表(每行一个) |
hadoop-metrics.properties | Java属性 | 控制metrics在Hadoop上如何发布的属性 |
修改文件
Hadoop 的配置文件位于 /usr/local/hadoop/etc/hadoop/ 中,伪分布式需要修改2个配置文件 core-site.xml 和 hdfs-site.xml 。Hadoop的配置文件是 xml 格式,每个配置以声明 property 的 name 和 value 的方式来实现。
文件所在/usr/local/hadoop/etc/hadoop/
修改core-site.xml
gedit ./etc/hadoop/core-site.xml
<configuration>
<property>
<name>hadoop.tmp.dir</name>
<value>file:/usr/local/hadoop/tmp</value>
<description>Abase for other temporary directories.</description>
</property>
<property>
<name>fs.defaultFS</name>
<value>hdfs://localhost:9000</value>
</property>
</configuration>
修改hdfs-site.xml
gedit ./etc/hadoop/hdfs-site.xml
<configuration>
<property>
<name>dfs.replication</name>
<value>1</value>
</property>
<property>
<name>dfs.namenode.name.dir</name>
<value>file:/usr/local/hadoop/tmp/dfs/name</value>
</property>
<property>
<name>dfs.datanode.data.dir</name>
<value>file:/usr/local/hadoop/tmp/dfs/data</value>
</property>
</configuration>
执行初始化
./binhadoop namenode -format
启动进程
如下命令启动所有进程,可以通过提示信息得知所有的启动信息都写入对应的日志文件。
./bin/start-all.sh
这个找不到的话 试试 这个 ./sbin/start-all.sh
如果出现这个错误:JAVA_HOME is not set and coudld not be found.
看下这个链接
我直接在 使用命令 gedit ~/.bashrc
#添加
export JAVA_HOME=/usr/lib/jvm/java-8-openjdk-amd64
如果出现这种情况:
> Hadoop名称节点(NameNode)需要启动集群中所有机器的Hadoop守护进程,这个过程可以通过SSH登录实现。
> Hadoop 并没有提供SSH输入密码登录的形式,因此,为了能够顺利登录每台机器,需要将所有机器配置为名称节点可以无密码登录他们
#Ubuntu 默认已安装了 SSH client,此外还需要安装 SSH server:
sudo apt-get install openssh-server
# 若没有该目录,请先执行一次ssh localhost
cd ~/.ssh/
# 会有提示,都按回车就可以
ssh-keygen -t rsa
# 加入授权
cat ./id_rsa.pub >> ./authorized_keys
检验下
在HDFS中创建用户目录:
./bin/hadoop dfs -mkdir -p /user/hadoop
将本地input文件夹中的数据上传到HDFS的input文件夹:
./bin/hadoop dfs -put ./input
执行自述统计测试样例:
./bin/hadoop jar /usr/local/hadoop/share/hadoop/mapreduce/hadoop-mapreduce-examples-*.jar grep input output 'dfs[a-z.]+'
查看结果
./bin/hadoop fs -cat output/*